From 45c03819e29c0974f9be6e5b49802e0ad6e7fcee Mon Sep 17 00:00:00 2001 From: Juan Picado Date: Sun, 12 Feb 2023 20:26:18 +0100 Subject: [PATCH] refactor: html render middleware improvements (#3603) * refactor: render middleware * refactor: render middleware --- .changeset/weak-mangos-taste.md | 15 + packages/api/src/user.ts | 3 + packages/api/src/v1/profile.ts | 3 + packages/api/src/v1/token.ts | 4 + packages/config/src/agent.ts | 18 +- packages/config/src/config.ts | 21 +- packages/config/src/index.ts | 1 + packages/core/types/src/configuration.ts | 3 +- packages/hooks/test/notify-request.spec.ts | 2 +- packages/middleware/package.json | 7 +- packages/middleware/src/index.ts | 3 + .../middleware/src/middlewares/rate-limit.ts | 8 + .../middleware/src/middlewares/user-agent.ts | 10 + .../middleware/src/middlewares/validation.ts | 18 +- .../middleware/src/middlewares/web/index.ts | 1 + .../src/middlewares/web}/render-web.ts | 66 ++- .../src/middlewares/web}/security.ts | 7 +- .../src/middlewares/web}/utils/manifest.ts | 0 .../src/middlewares/web/utils}/renderHTML.ts | 30 +- .../src/middlewares/web/utils}/template.ts | 2 +- .../src/middlewares/web/utils/web-utils.ts | 18 + .../middleware/src/middlewares/web/web-api.ts | 27 + .../src/middlewares/web/web-middleware.ts | 15 + .../test/__snapshots__/template.test.ts.snap | 0 packages/middleware/test/_helper.ts | 8 + .../middleware/test/config/default-test.yaml | 28 + .../test/config/login-disabled.yaml | 29 + packages/middleware/test/config/web.yaml | 23 + .../{web => middleware}/test/manifest.test.ts | 2 +- .../middleware/test/partials/htmlParser.ts | 1 + .../test/partials/manifest/manifest.json | 64 ++ .../test/render.spec.ts} | 40 +- packages/middleware/test/static/main.js | 3 + packages/middleware/test/static/vendor.js | 3 + .../{web => middleware}/test/template.test.ts | 2 +- .../{web => middleware}/test/utils.spec.ts | 2 +- packages/middleware/tsconfig.json | 6 + packages/plugins/audit/package.json | 6 +- packages/plugins/audit/src/audit.ts | 7 +- packages/plugins/audit/src/types.ts | 3 +- packages/plugins/audit/tests/audit.spec.ts | 2 +- packages/proxy/src/proxy.ts | 10 +- packages/proxy/test/proxy.metadata.spec.ts | 34 +- packages/proxy/test/proxy.tarball.spec.ts | 6 +- packages/server/express/package.json | 1 - packages/server/express/src/server.ts | 13 +- packages/server/express/src/utils.ts | 11 - packages/server/express/test/server.spec.ts | 6 +- packages/store/src/storage.ts | 6 +- packages/web/jest.config.js | 2 +- packages/web/package.json | 4 +- packages/web/src/api/index.ts | 12 +- packages/web/src/api/package.ts | 2 +- packages/web/src/api/readme.ts | 2 +- packages/web/src/api/sidebar.ts | 2 +- packages/web/src/api/user.ts | 50 +- packages/web/src/index.ts | 2 +- packages/web/src/middleware.ts | 46 ++ packages/web/src/middleware/web-api.ts | 25 - packages/web/src/web-middleware.ts | 14 - packages/web/src/{utils => }/web-utils.ts | 43 +- packages/web/test/helper.ts | 2 +- packages/web/test/web-utils.spec.ts | 2 +- pnpm-lock.yaml | 553 +----------------- 64 files changed, 576 insertions(+), 783 deletions(-) create mode 100644 .changeset/weak-mangos-taste.md create mode 100644 packages/middleware/src/middlewares/rate-limit.ts create mode 100644 packages/middleware/src/middlewares/user-agent.ts create mode 100644 packages/middleware/src/middlewares/web/index.ts rename packages/{web/src/middleware => middleware/src/middlewares/web}/render-web.ts (51%) rename packages/{web/src/middleware => middleware/src/middlewares/web}/security.ts (70%) rename packages/{web/src => middleware/src/middlewares/web}/utils/manifest.ts (100%) rename packages/{web/src => middleware/src/middlewares/web/utils}/renderHTML.ts (77%) rename packages/{web/src => middleware/src/middlewares/web/utils}/template.ts (96%) create mode 100644 packages/middleware/src/middlewares/web/utils/web-utils.ts create mode 100644 packages/middleware/src/middlewares/web/web-api.ts create mode 100644 packages/middleware/src/middlewares/web/web-middleware.ts rename packages/{web => middleware}/test/__snapshots__/template.test.ts.snap (100%) create mode 100644 packages/middleware/test/_helper.ts create mode 100644 packages/middleware/test/config/default-test.yaml create mode 100644 packages/middleware/test/config/login-disabled.yaml create mode 100644 packages/middleware/test/config/web.yaml rename packages/{web => middleware}/test/manifest.test.ts (77%) create mode 100644 packages/middleware/test/partials/htmlParser.ts create mode 100644 packages/middleware/test/partials/manifest/manifest.json rename packages/{web/test/render.test.ts => middleware/test/render.spec.ts} (82%) create mode 100644 packages/middleware/test/static/main.js create mode 100644 packages/middleware/test/static/vendor.js rename packages/{web => middleware}/test/template.test.ts (96%) rename packages/{web => middleware}/test/utils.spec.ts (81%) delete mode 100644 packages/server/express/src/utils.ts create mode 100644 packages/web/src/middleware.ts delete mode 100644 packages/web/src/middleware/web-api.ts delete mode 100644 packages/web/src/web-middleware.ts rename packages/web/src/{utils => }/web-utils.ts (68%) diff --git a/.changeset/weak-mangos-taste.md b/.changeset/weak-mangos-taste.md new file mode 100644 index 000000000..b614f85ce --- /dev/null +++ b/.changeset/weak-mangos-taste.md @@ -0,0 +1,15 @@ +--- +'@verdaccio/api': minor +'@verdaccio/config': minor +'@verdaccio/types': minor +'@verdaccio/hooks': minor +'@verdaccio/middleware': minor +'verdaccio-audit': minor +'@verdaccio/proxy': minor +'@verdaccio/server': minor +'@verdaccio/store': minor +'@verdaccio/web': minor +'@verdaccio/ui-theme': minor +--- + +refactor: render html middleware diff --git a/packages/api/src/user.ts b/packages/api/src/user.ts index 31f27d304..896694dc0 100644 --- a/packages/api/src/user.ts +++ b/packages/api/src/user.ts @@ -13,6 +13,7 @@ import { validatioUtils, } from '@verdaccio/core'; import { logger } from '@verdaccio/logger'; +import { rateLimit } from '@verdaccio/middleware'; import { Config, RemoteUser } from '@verdaccio/types'; import { getAuthenticatedMessage, mask } from '@verdaccio/utils'; @@ -23,6 +24,7 @@ const debug = buildDebug('verdaccio:api:user'); export default function (route: Router, auth: Auth, config: Config): void { route.get( '/-/user/:org_couchdb_user', + rateLimit(config?.userRateLimit), function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { debug('verifying user'); const message = getAuthenticatedMessage(req.remote_user.name); @@ -53,6 +55,7 @@ export default function (route: Router, auth: Auth, config: Config): void { */ route.put( '/-/user/:org_couchdb_user/:_rev?/:revision?', + rateLimit(config?.userRateLimit), function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { const { name, password } = req.body; debug('login or adduser'); diff --git a/packages/api/src/v1/profile.ts b/packages/api/src/v1/profile.ts index 1c76c13db..3d62e497a 100644 --- a/packages/api/src/v1/profile.ts +++ b/packages/api/src/v1/profile.ts @@ -10,6 +10,7 @@ import { errorUtils, validatioUtils, } from '@verdaccio/core'; +import { rateLimit } from '@verdaccio/middleware'; import { Config } from '@verdaccio/types'; import { $NextFunctionVer, $RequestExtend } from '../../types/custom'; @@ -41,6 +42,7 @@ export default function (route: Router, auth: Auth, config: Config): void { route.get( '/-/npm/v1/user', + rateLimit(config?.userRateLimit), function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { if (_.isNil(req.remote_user.name) === false) { return next(buildProfile(req.remote_user.name)); @@ -55,6 +57,7 @@ export default function (route: Router, auth: Auth, config: Config): void { route.post( '/-/npm/v1/user', + rateLimit(config?.userRateLimit), function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { if (_.isNil(req.remote_user.name)) { res.status(HTTP_STATUS.UNAUTHORIZED); diff --git a/packages/api/src/v1/token.ts b/packages/api/src/v1/token.ts index fc14948f8..7b72e1963 100644 --- a/packages/api/src/v1/token.ts +++ b/packages/api/src/v1/token.ts @@ -5,6 +5,7 @@ import { getApiToken } from '@verdaccio/auth'; import { Auth } from '@verdaccio/auth'; import { HEADERS, HTTP_STATUS, SUPPORT_ERRORS, errorUtils } from '@verdaccio/core'; import { logger } from '@verdaccio/logger'; +import { rateLimit } from '@verdaccio/middleware'; import { Storage } from '@verdaccio/store'; import { Config, RemoteUser, Token } from '@verdaccio/types'; import { mask, stringToMD5 } from '@verdaccio/utils'; @@ -26,6 +27,7 @@ function normalizeToken(token: Token): NormalizeToken { export default function (route: Router, auth: Auth, storage: Storage, config: Config): void { route.get( '/-/npm/v1/tokens', + rateLimit(config?.userRateLimit), async function (req: $RequestExtend, res: Response, next: $NextFunctionVer) { const { name } = req.remote_user; @@ -53,6 +55,7 @@ export default function (route: Router, auth: Auth, storage: Storage, config: Co route.post( '/-/npm/v1/tokens', + rateLimit(config?.userRateLimit), function (req: $RequestExtend, res: Response, next: $NextFunctionVer) { const { password, readonly, cidr_whitelist } = req.body; const { name } = req.remote_user; @@ -123,6 +126,7 @@ export default function (route: Router, auth: Auth, storage: Storage, config: Co route.delete( '/-/npm/v1/tokens/token/:tokenKey', + rateLimit(config?.userRateLimit), async (req: $RequestExtend, res: Response, next: $NextFunctionVer) => { const { params: { tokenKey }, diff --git a/packages/config/src/agent.ts b/packages/config/src/agent.ts index d5a4854ab..3d34646d7 100644 --- a/packages/config/src/agent.ts +++ b/packages/config/src/agent.ts @@ -1,5 +1,17 @@ -const pkgVersion = require('../package.json').version; +import _ from 'lodash'; -export function getUserAgent(): string { - return `verdaccio/${pkgVersion}`; +export function getUserAgent( + customUserAgent?: boolean | string, + version?: string, + name?: string +): string { + if (customUserAgent === true) { + return `${name}/${version}`; + } else if (_.isString(customUserAgent) && _.isEmpty(customUserAgent) === false) { + return customUserAgent; + } else if (customUserAgent === false) { + return 'hidden'; + } + + return `${name}/${version}`; } diff --git a/packages/config/src/config.ts b/packages/config/src/config.ts index 62dedbf18..a10cf1e3b 100644 --- a/packages/config/src/config.ts +++ b/packages/config/src/config.ts @@ -10,6 +10,7 @@ import { FlagsConfig, PackageAccess, PackageList, + RateLimit, Security, ServerSettingsConf, } from '@verdaccio/types'; @@ -28,11 +29,17 @@ const debug = buildDebug('verdaccio:config'); export const WEB_TITLE = 'Verdaccio'; +// we limit max 1000 request per 15 minutes on user endpoints +export const defaultUserRateLimiting = { + windowMs: 15 * 60 * 1000, // 15 minutes + max: 1000, +}; + /** * Coordinates the application configuration */ class Config implements AppConfig { - public user_agent: string; + public user_agent: string | undefined; public uplinks: any; public packages: PackageList; public users: any; @@ -49,7 +56,7 @@ class Config implements AppConfig { // @ts-ignore public secret: string; public flags: FlagsConfig; - + public userRateLimit: RateLimit; public constructor(config: ConfigYaml & { config_path: string }) { const self = this; this.storage = process.env.VERDACCIO_STORAGE_PATH || config.storage; @@ -65,6 +72,7 @@ class Config implements AppConfig { this.flags = { searchRemote: config.flags?.searchRemote ?? true, }; + this.user_agent = config.user_agent; for (const configProp in config) { if (self[configProp] == null) { @@ -72,11 +80,14 @@ class Config implements AppConfig { } } - // @ts-ignore - if (_.isNil(this.user_agent)) { - this.user_agent = getUserAgent(); + if (typeof this.user_agent === 'undefined') { + // by default user agent is hidden + debug('set default user agent'); + this.user_agent = getUserAgent(false); } + this.userRateLimit = { ...defaultUserRateLimiting, ...config?.userRateLimit }; + // some weird shell scripts are valid yaml files parsed as string assert(_.isObject(config), APP_ERROR.CONFIG_NOT_VALID); diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 21f68d20e..386f85715 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -5,6 +5,7 @@ export * from './package-access'; export { fromJStoYAML, parseConfigFile } from './parse'; export * from './uplinks'; export * from './security'; +export * from './agent'; export * from './user'; export { default as ConfigBuilder } from './builder'; export { getDefaultConfig } from './conf'; diff --git a/packages/core/types/src/configuration.ts b/packages/core/types/src/configuration.ts index 398faca1c..09dce2314 100644 --- a/packages/core/types/src/configuration.ts +++ b/packages/core/types/src/configuration.ts @@ -252,6 +252,7 @@ export interface ConfigYaml { store?: any; listen?: ListenAddress; https?: HttpsConf; + user_agent?: string; http_proxy?: string; plugins?: string | void | null; https_proxy?: string; @@ -264,6 +265,7 @@ export interface ConfigYaml { url_prefix?: string; server?: ServerSettingsConf; flags?: FlagsConfig; + userRateLimit?: RateLimit; // internal objects, added by internal yaml to JS config parser // @deprecated use configPath instead config_path?: string; @@ -277,7 +279,6 @@ export interface ConfigYaml { * @extends {ConfigYaml} */ export interface Config extends Omit { - user_agent: string; server_id: string; secret: string; // save the configuration file path, it's fails without thi configPath diff --git a/packages/hooks/test/notify-request.spec.ts b/packages/hooks/test/notify-request.spec.ts index 300f35a5f..111940472 100644 --- a/packages/hooks/test/notify-request.spec.ts +++ b/packages/hooks/test/notify-request.spec.ts @@ -15,7 +15,7 @@ const singleHeaderNotificationConfig = parseConfigFile( ); const multiNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('multiple.notify')); -setup([]); +setup({}); const domain = 'http://slack-service'; diff --git a/packages/middleware/package.json b/packages/middleware/package.json index 7ee109041..338a6a0c0 100644 --- a/packages/middleware/package.json +++ b/packages/middleware/package.json @@ -40,9 +40,14 @@ "dependencies": { "@verdaccio/core": "workspace:6.0.0-6-next.59", "@verdaccio/utils": "workspace:6.0.0-6-next.27", + "@verdaccio/config": "workspace:6.0.0-6-next.59", + "@verdaccio/url": "workspace:11.0.0-6-next.25", "debug": "4.3.4", + "lru-cache": "7.14.1", + "express": "4.18.2", "lodash": "4.17.21", - "mime": "2.6.0" + "mime": "2.6.0", + "express-rate-limit": "5.5.1" }, "funding": { "type": "opencollective", diff --git a/packages/middleware/src/index.ts b/packages/middleware/src/index.ts index 27d775957..83bad2484 100644 --- a/packages/middleware/src/index.ts +++ b/packages/middleware/src/index.ts @@ -7,6 +7,9 @@ export { expectJson } from './middlewares/json'; export { antiLoop } from './middlewares/antiLoop'; export { final } from './middlewares/final'; export { allow } from './middlewares/allow'; +export { rateLimit } from './middlewares/rate-limit'; +export { userAgent } from './middlewares/user-agent'; +export { webMiddleware } from './middlewares/web'; export { errorReportingMiddleware, handleError } from './middlewares/error'; export { log, diff --git a/packages/middleware/src/middlewares/rate-limit.ts b/packages/middleware/src/middlewares/rate-limit.ts new file mode 100644 index 000000000..d7c15199b --- /dev/null +++ b/packages/middleware/src/middlewares/rate-limit.ts @@ -0,0 +1,8 @@ +import RateLimit from 'express-rate-limit'; + +import { RateLimit as RateLimitType } from '@verdaccio/types'; + +export function rateLimit(rateLimitOptions?: RateLimitType) { + const limiter = new RateLimit(rateLimitOptions); + return limiter; +} diff --git a/packages/middleware/src/middlewares/user-agent.ts b/packages/middleware/src/middlewares/user-agent.ts new file mode 100644 index 000000000..d05b3a507 --- /dev/null +++ b/packages/middleware/src/middlewares/user-agent.ts @@ -0,0 +1,10 @@ +import { getUserAgent } from '@verdaccio/config'; + +import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types'; + +export function userAgent(config) { + return function (_req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + res.setHeader('x-powered-by', getUserAgent(config?.user_agent)); + next(); + }; +} diff --git a/packages/middleware/src/middlewares/validation.ts b/packages/middleware/src/middlewares/validation.ts index f44d352a0..218042385 100644 --- a/packages/middleware/src/middlewares/validation.ts +++ b/packages/middleware/src/middlewares/validation.ts @@ -4,15 +4,7 @@ import { validatePackage as utilValidatePackage, } from '@verdaccio/utils'; -import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types'; - -export function validateName( - req: $RequestExtend, - res: $ResponseExtend, - next: $NextFunctionVer, - value: string, - name: string -): void { +export function validateName(_req, _res, next, value: string, name: string) { if (value === '-') { // special case in couchdb usually next('route'); @@ -23,13 +15,7 @@ export function validateName( } } -export function validatePackage( - req: $RequestExtend, - res: $ResponseExtend, - next: $NextFunctionVer, - value: string, - name: string -): void { +export function validatePackage(_req, _res, next, value: string, name: string) { if (value === '-') { // special case in couchdb usually next('route'); diff --git a/packages/middleware/src/middlewares/web/index.ts b/packages/middleware/src/middlewares/web/index.ts new file mode 100644 index 000000000..13bf500b5 --- /dev/null +++ b/packages/middleware/src/middlewares/web/index.ts @@ -0,0 +1 @@ +export { default as webMiddleware } from './web-middleware'; diff --git a/packages/web/src/middleware/render-web.ts b/packages/middleware/src/middlewares/web/render-web.ts similarity index 51% rename from packages/web/src/middleware/render-web.ts rename to packages/middleware/src/middlewares/web/render-web.ts index 854e86a8a..bc849eca6 100644 --- a/packages/web/src/middleware/render-web.ts +++ b/packages/middleware/src/middlewares/web/render-web.ts @@ -1,39 +1,16 @@ import buildDebug from 'debug'; import express from 'express'; -import _ from 'lodash'; +import fs from 'fs'; import path from 'path'; import { HTTP_STATUS } from '@verdaccio/core'; -import { asyncLoadPlugin } from '@verdaccio/loaders'; -import { logger } from '@verdaccio/logger'; import { isURLhasValidProtocol } from '@verdaccio/url'; -import renderHTML from '../renderHTML'; import { setSecurityWebHeaders } from './security'; +import renderHTML, { isHTTPProtocol } from './utils/renderHTML'; const debug = buildDebug('verdaccio:web:render'); -export async function loadTheme(config: any) { - if (_.isNil(config.theme) === false) { - const plugin = await asyncLoadPlugin( - config.theme, - { config, logger }, - // TODO: add types { staticPath: string; manifest: unknown; manifestFiles: unknown } - function (plugin: any) { - return plugin.staticPath && plugin.manifest && plugin.manifestFiles; - }, - config?.serverSettings?.pluginPrefix ?? 'verdaccio-theme' - ); - if (plugin.length > 1) { - logger.warn( - 'multiple ui themes has been detected and is not supported, only the first one will be used' - ); - } - - return _.head(plugin); - } -} - const sendFileCallback = (next) => (err) => { if (!err) { return; @@ -45,14 +22,15 @@ const sendFileCallback = (next) => (err) => { } }; -export async function renderWebMiddleware(config, auth): Promise { - const { staticPath, manifest, manifestFiles } = - (await loadTheme(config)) || require('@verdaccio/ui-theme')(); +export function renderWebMiddleware(config, tokenMiddleware, pluginOptions) { + const { staticPath, manifest, manifestFiles } = pluginOptions; debug('static path %o', staticPath); /* eslint new-cap:off */ const router = express.Router(); - router.use(auth.webUIJWTmiddleware()); + if (typeof tokenMiddleware === 'function') { + router.use(tokenMiddleware); + } router.use(setSecurityWebHeaders); // Logo @@ -77,6 +55,36 @@ export async function renderWebMiddleware(config, auth): Promise { res.sendFile(file, sendFileCallback(next)); }); + // logo + if (config?.web?.logo && !isHTTPProtocol(config?.web?.logo)) { + // URI related to a local file + const absoluteLocalFile = path.posix.resolve(config.web.logo); + debug('serve local logo %s', absoluteLocalFile); + try { + // TODO: remove existsSync by async alternative + if ( + fs.existsSync(absoluteLocalFile) && + typeof fs.accessSync(absoluteLocalFile, fs.constants.R_OK) === 'undefined' + ) { + // Note: `path.join` will break on Windows, because it transforms `/` to `\` + // Use POSIX version `path.posix.join` instead. + config.web.logo = path.posix.join('/-/static/', path.basename(config.web.logo)); + router.get(config.web.logo, function (_req, res, next) { + // @ts-ignore + debug('serve custom logo web:%s - local:%s', config.web.logo, absoluteLocalFile); + res.sendFile(absoluteLocalFile, sendFileCallback(next)); + }); + debug('enabled custom logo %s', config.web.logo); + } else { + config.web.logo = undefined; + debug(`web logo is wrong, path ${absoluteLocalFile} does not exist or is not readable`); + } + } catch { + config.web.logo = undefined; + debug(`web logo is wrong, path ${absoluteLocalFile} does not exist or is not readable`); + } + } + router.get('/-/web/:section/*', function (req, res) { renderHTML(config, manifest, manifestFiles, req, res); debug('render html section'); diff --git a/packages/web/src/middleware/security.ts b/packages/middleware/src/middlewares/web/security.ts similarity index 70% rename from packages/web/src/middleware/security.ts rename to packages/middleware/src/middlewares/web/security.ts index 339ab0571..1d1ec6274 100644 --- a/packages/web/src/middleware/security.ts +++ b/packages/middleware/src/middlewares/web/security.ts @@ -1,11 +1,6 @@ import { HEADERS } from '@verdaccio/core'; -import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '@verdaccio/middleware'; -export function setSecurityWebHeaders( - req: $RequestExtend, - res: $ResponseExtend, - next: $NextFunctionVer -): void { +export function setSecurityWebHeaders(_req, res, next): void { // disable loading in frames (clickjacking, etc.) res.header(HEADERS.FRAMES_OPTIONS, 'deny'); // avoid stablish connections outside of domain diff --git a/packages/web/src/utils/manifest.ts b/packages/middleware/src/middlewares/web/utils/manifest.ts similarity index 100% rename from packages/web/src/utils/manifest.ts rename to packages/middleware/src/middlewares/web/utils/manifest.ts diff --git a/packages/web/src/renderHTML.ts b/packages/middleware/src/middlewares/web/utils/renderHTML.ts similarity index 77% rename from packages/web/src/renderHTML.ts rename to packages/middleware/src/middlewares/web/utils/renderHTML.ts index 28c570007..2326a26e6 100644 --- a/packages/web/src/renderHTML.ts +++ b/packages/middleware/src/middlewares/web/utils/renderHTML.ts @@ -1,5 +1,6 @@ import buildDebug from 'debug'; import LRU from 'lru-cache'; +import path from 'path'; import { URL } from 'url'; import { WEB_TITLE } from '@verdaccio/config'; @@ -8,9 +9,8 @@ import { TemplateUIOptions } from '@verdaccio/types'; import { getPublicUrl } from '@verdaccio/url'; import renderTemplate from './template'; -import { hasLogin, validatePrimaryColor } from './utils/web-utils'; +import { hasLogin, validatePrimaryColor } from './web-utils'; -const pkgJSON = require('../package.json'); const DEFAULT_LANGUAGE = 'es-US'; const cache = new LRU({ max: 500, ttl: 1000 * 60 * 60 }); @@ -21,6 +21,26 @@ const defaultManifestFiles = { ico: 'favicon.ico', }; +/** + * Check if URI is starting with "http://", "https://" or "//" + * @param {string} uri + */ +export function isHTTPProtocol(uri: string): boolean { + return /^(https?:)?\/\//.test(uri); +} + +export function resolveLogo(config, req) { + const isLocalFile = config?.web?.logo && !isHTTPProtocol(config?.web?.logo); + + if (isLocalFile) { + return `${getPublicUrl(config?.url_prefix, req)}-/static/${path.basename(config?.web?.logo)}`; + } else if (isHTTPProtocol(config?.web?.logo)) { + return config?.web?.logo; + } else { + return ''; + } +} + export default function renderHTML(config, manifest, manifestFiles, req, res) { const { url_prefix } = config; const base = getPublicUrl(config?.url_prefix, req); @@ -33,11 +53,13 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) { const title = config?.web?.title ?? WEB_TITLE; const login = hasLogin(config); const scope = config?.web?.scope ?? ''; - const logoURI = config?.web?.logo ?? ''; + const logoURI = resolveLogo(config, req); const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm']; - const version = pkgJSON.version; + const version = config?.web?.version; const flags = { ...config.flags, + // legacy from 5.x + ...config.experiments, }; const primaryColor = validatePrimaryColor(config?.web?.primary_color) ?? '#4b5e40'; const { diff --git a/packages/web/src/template.ts b/packages/middleware/src/middlewares/web/utils/template.ts similarity index 96% rename from packages/web/src/template.ts rename to packages/middleware/src/middlewares/web/utils/template.ts index bc540796e..45779c404 100644 --- a/packages/web/src/template.ts +++ b/packages/middleware/src/middlewares/web/utils/template.ts @@ -2,7 +2,7 @@ import buildDebug from 'debug'; import { TemplateUIOptions } from '@verdaccio/types'; -import { Manifest, getManifestValue } from './utils/manifest'; +import { Manifest, getManifestValue } from './manifest'; const debug = buildDebug('verdaccio:web:render:template'); diff --git a/packages/middleware/src/middlewares/web/utils/web-utils.ts b/packages/middleware/src/middlewares/web/utils/web-utils.ts new file mode 100644 index 000000000..c397ea97e --- /dev/null +++ b/packages/middleware/src/middlewares/web/utils/web-utils.ts @@ -0,0 +1,18 @@ +import buildDebug from 'debug'; +import _ from 'lodash'; + +const debug = buildDebug('verdaccio:web:middlwares'); + +export function validatePrimaryColor(primaryColor) { + const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor); + if (!isHex) { + debug('invalid primary color %o', primaryColor); + return; + } + + return primaryColor; +} + +export function hasLogin(config: any) { + return _.isNil(config?.web?.login) || config?.web?.login === true; +} diff --git a/packages/middleware/src/middlewares/web/web-api.ts b/packages/middleware/src/middlewares/web/web-api.ts new file mode 100644 index 000000000..950991df9 --- /dev/null +++ b/packages/middleware/src/middlewares/web/web-api.ts @@ -0,0 +1,27 @@ +import express from 'express'; +import { Router } from 'express'; + +import { validateName, validatePackage } from '../validation'; +import { setSecurityWebHeaders } from './security'; + +export function webMiddleware(tokenMiddleware, webEndpointsApi) { + // eslint-disable-next-line new-cap + const route = Router(); + // validate all of these params as a package name + // this might be too harsh, so ask if it causes trouble= + route.param('package', validatePackage); + route.param('filename', validateName); + route.param('version', validateName); + route.use(express.urlencoded({ extended: false })); + + if (typeof tokenMiddleware === 'function') { + route.use(tokenMiddleware); + } + + route.use(setSecurityWebHeaders); + + if (webEndpointsApi) { + route.use(webEndpointsApi); + } + return route; +} diff --git a/packages/middleware/src/middlewares/web/web-middleware.ts b/packages/middleware/src/middlewares/web/web-middleware.ts new file mode 100644 index 000000000..92494ebd6 --- /dev/null +++ b/packages/middleware/src/middlewares/web/web-middleware.ts @@ -0,0 +1,15 @@ +import express from 'express'; + +import { renderWebMiddleware } from './render-web'; +import { webMiddleware } from './web-api'; + +export default (config, middlewares, pluginOptions): any => { + // eslint-disable-next-line new-cap + const router = express.Router(); + const { tokenMiddleware, webEndpointsApi } = middlewares; + // render web + router.use('/', renderWebMiddleware(config, tokenMiddleware, pluginOptions)); + // web endpoints, search, packages, etc + router.use('/-/verdaccio/', webMiddleware(tokenMiddleware, webEndpointsApi)); + return router; +}; diff --git a/packages/web/test/__snapshots__/template.test.ts.snap b/packages/middleware/test/__snapshots__/template.test.ts.snap similarity index 100% rename from packages/web/test/__snapshots__/template.test.ts.snap rename to packages/middleware/test/__snapshots__/template.test.ts.snap diff --git a/packages/middleware/test/_helper.ts b/packages/middleware/test/_helper.ts new file mode 100644 index 000000000..9748f4103 --- /dev/null +++ b/packages/middleware/test/_helper.ts @@ -0,0 +1,8 @@ +import path from 'path'; + +import { parseConfigFile } from '@verdaccio/config'; + +export const getConf = (configName: string) => { + const configPath = path.join(__dirname, 'config', configName); + return parseConfigFile(configPath); +}; diff --git a/packages/middleware/test/config/default-test.yaml b/packages/middleware/test/config/default-test.yaml new file mode 100644 index 000000000..a5b1e2a75 --- /dev/null +++ b/packages/middleware/test/config/default-test.yaml @@ -0,0 +1,28 @@ +auth: + auth-memory: + users: + test: + name: test + password: test + +web: + title: verdaccio + +publish: + allow_offline: false + +uplinks: + +log: { type: stdout, format: pretty, level: trace } + +packages: + '@*/*': + access: $anonymous + publish: $anonymous + '**': + access: $anonymous + publish: $anonymous +_debug: true + +flags: + changePassword: true diff --git a/packages/middleware/test/config/login-disabled.yaml b/packages/middleware/test/config/login-disabled.yaml new file mode 100644 index 000000000..938df11e1 --- /dev/null +++ b/packages/middleware/test/config/login-disabled.yaml @@ -0,0 +1,29 @@ +auth: + auth-memory: + users: + test: + name: test + password: test + +web: + title: verdaccio + login: false + +publish: + allow_offline: false + +uplinks: + +log: { type: stdout, format: pretty, level: trace } + +packages: + '@*/*': + access: $anonymous + publish: $anonymous + '**': + access: $anonymous + publish: $anonymous +_debug: true + +flags: + changePassword: true diff --git a/packages/middleware/test/config/web.yaml b/packages/middleware/test/config/web.yaml new file mode 100644 index 000000000..19f1d0032 --- /dev/null +++ b/packages/middleware/test/config/web.yaml @@ -0,0 +1,23 @@ +web: + title: verdaccio web + login: true + scope: '@scope' + pkgManagers: + - pnpm + - yarn + showInfo: true + showSettings: true + showSearch: true + showFooter: true + showThemeSwitch: true + showDownloadTarball: true + showRaw: true + primary_color: '#ffffff' + logoURI: 'http://logo.org/logo.png' + +url_prefix: /prefix + +log: { type: stdout, format: pretty, level: trace } + +flags: + changePassword: true diff --git a/packages/web/test/manifest.test.ts b/packages/middleware/test/manifest.test.ts similarity index 77% rename from packages/web/test/manifest.test.ts rename to packages/middleware/test/manifest.test.ts index e5057139c..97416a1b6 100644 --- a/packages/web/test/manifest.test.ts +++ b/packages/middleware/test/manifest.test.ts @@ -1,4 +1,4 @@ -import { getManifestValue } from '../src/utils/manifest'; +import { getManifestValue } from '../src/middlewares/web/utils/manifest'; const manifest = require('./partials/manifest/manifest.json'); diff --git a/packages/middleware/test/partials/htmlParser.ts b/packages/middleware/test/partials/htmlParser.ts new file mode 100644 index 000000000..dbc473c4a --- /dev/null +++ b/packages/middleware/test/partials/htmlParser.ts @@ -0,0 +1 @@ +export const parseHtml = (html) => require('node-html-parser').parse(html); diff --git a/packages/middleware/test/partials/manifest/manifest.json b/packages/middleware/test/partials/manifest/manifest.json new file mode 100644 index 000000000..304e28c54 --- /dev/null +++ b/packages/middleware/test/partials/manifest/manifest.json @@ -0,0 +1,64 @@ +{ + "main.js": "/-/static/main.6126058572f989c948b1.js", + "main.css": "/-/static/main.6f2f2cccce0c813b509f.css", + "main.woff2": "/-/static/fonts/roboto-latin-900italic.woff2", + "main.woff": "/-/static/fonts/roboto-latin-900italic.woff", + "main.svg": "/-/static/93df1ce974e744e7d98f5d842da74ba0.svg", + "runtime.js": "/-/static/runtime.6126058572f989c948b1.js", + "NotFound.js": "/-/static/NotFound.6126058572f989c948b1.js", + "NotFound.svg": "/-/static/4743f1431b042843890a8644e89bb852.svg", + "Provider.js": "/-/static/Provider.6126058572f989c948b1.js", + "Version.css": "/-/static/454.97490e2b7f0dca05ddf3.css", + "Home.js": "/-/static/Home.6126058572f989c948b1.js", + "Home.css": "/-/static/268.97490e2b7f0dca05ddf3.css", + "Versions.js": "/-/static/Versions.6126058572f989c948b1.js", + "UpLinks.js": "/-/static/UpLinks.6126058572f989c948b1.js", + "Dependencies.js": "/-/static/Dependencies.6126058572f989c948b1.js", + "Engines.js": "/-/static/Engines.6126058572f989c948b1.js", + "Engines.svg": "/-/static/737531cc93ceb77b82b1c2e074a2557a.svg", + "Engines.png": "/-/static/2939f26c293bff8f35ba87194742aea8.png", + "Dist.js": "/-/static/Dist.6126058572f989c948b1.js", + "Install.js": "/-/static/Install.6126058572f989c948b1.js", + "Install.svg": "/-/static/1f07aa4bad48cd09088966736d1ed121.svg", + "Repository.js": "/-/static/Repository.6126058572f989c948b1.js", + "Repository.png": "/-/static/728ff5a8e44d74cd0f2359ef0a9ec88a.png", + "vendors.js": "/-/static/vendors.6126058572f989c948b1.js", + "38.6126058572f989c948b1.js": "/-/static/38.6126058572f989c948b1.js", + "26.6126058572f989c948b1.js": "/-/static/26.6126058572f989c948b1.js", + "761.6126058572f989c948b1.js": "/-/static/761.6126058572f989c948b1.js", + "4743f1431b042843890a8644e89bb852.svg": "/-/static/4743f1431b042843890a8644e89bb852.svg", + "node.png": "/-/static/2939f26c293bff8f35ba87194742aea8.png", + "fonts/roboto-latin-900italic.woff": "/-/static/fonts/roboto-latin-900italic.woff", + "fonts/roboto-latin-300italic.woff": "/-/static/fonts/roboto-latin-300italic.woff", + "fonts/roboto-latin-500italic.woff": "/-/static/fonts/roboto-latin-500italic.woff", + "fonts/roboto-latin-400italic.woff": "/-/static/fonts/roboto-latin-400italic.woff", + "fonts/roboto-latin-100italic.woff": "/-/static/fonts/roboto-latin-100italic.woff", + "fonts/roboto-latin-700italic.woff": "/-/static/fonts/roboto-latin-700italic.woff", + "fonts/roboto-latin-500.woff": "/-/static/fonts/roboto-latin-500.woff", + "fonts/roboto-latin-900.woff": "/-/static/fonts/roboto-latin-900.woff", + "fonts/roboto-latin-100.woff": "/-/static/fonts/roboto-latin-100.woff", + "fonts/roboto-latin-700.woff": "/-/static/fonts/roboto-latin-700.woff", + "fonts/roboto-latin-300.woff": "/-/static/fonts/roboto-latin-300.woff", + "fonts/roboto-latin-400.woff": "/-/static/fonts/roboto-latin-400.woff", + "fonts/roboto-latin-900italic.woff2": "/-/static/fonts/roboto-latin-900italic.woff2", + "fonts/roboto-latin-300italic.woff2": "/-/static/fonts/roboto-latin-300italic.woff2", + "fonts/roboto-latin-400italic.woff2": "/-/static/fonts/roboto-latin-400italic.woff2", + "fonts/roboto-latin-500italic.woff2": "/-/static/fonts/roboto-latin-500italic.woff2", + "fonts/roboto-latin-700italic.woff2": "/-/static/fonts/roboto-latin-700italic.woff2", + "fonts/roboto-latin-100italic.woff2": "/-/static/fonts/roboto-latin-100italic.woff2", + "fonts/roboto-latin-500.woff2": "/-/static/fonts/roboto-latin-500.woff2", + "fonts/roboto-latin-700.woff2": "/-/static/fonts/roboto-latin-700.woff2", + "fonts/roboto-latin-100.woff2": "/-/static/fonts/roboto-latin-100.woff2", + "fonts/roboto-latin-300.woff2": "/-/static/fonts/roboto-latin-300.woff2", + "fonts/roboto-latin-400.woff2": "/-/static/fonts/roboto-latin-400.woff2", + "fonts/roboto-latin-900.woff2": "/-/static/fonts/roboto-latin-900.woff2", + "favicon.ico": "/-/static/favicon.ico", + "git.png": "/-/static/728ff5a8e44d74cd0f2359ef0a9ec88a.png", + "logo.svg": "/-/static/93df1ce974e744e7d98f5d842da74ba0.svg", + "pnpm.svg": "/-/static/81ca2d852b9bc86713fe993bf5c7104c.svg", + "yarn.svg": "/-/static/1f07aa4bad48cd09088966736d1ed121.svg", + "logo-black-and-white.svg": "/-/static/983328eca26f265748c004651ca0e6c8.svg", + "npm.svg": "/-/static/737531cc93ceb77b82b1c2e074a2557a.svg", + "index.html": "/-/static/index.html", + "package.svg": "/-/static/4743f1431b042843890a8644e89bb852.svg" +} diff --git a/packages/web/test/render.test.ts b/packages/middleware/test/render.spec.ts similarity index 82% rename from packages/web/test/render.test.ts rename to packages/middleware/test/render.spec.ts index 77e1129a5..49144bae5 100644 --- a/packages/web/test/render.test.ts +++ b/packages/middleware/test/render.spec.ts @@ -1,3 +1,4 @@ +import express from 'express'; import { JSDOM } from 'jsdom'; import path from 'path'; import supertest from 'supertest'; @@ -5,33 +6,30 @@ import supertest from 'supertest'; import { HEADERS, HEADER_TYPE, HTTP_STATUS } from '@verdaccio/core'; import { setup } from '@verdaccio/logger'; -import { initializeServer } from './helper'; +import { webMiddleware } from '../src'; +import { getConf } from './_helper'; -setup([]); +const pluginOptions = { + manifestFiles: { + js: ['runtime.js', 'vendors.js', 'main.js'], + }, + staticPath: path.join(__dirname, 'static'), + manifest: require('./partials/manifest/manifest.json'), +}; -const mockManifest = jest.fn(); -jest.mock('@verdaccio/ui-theme', () => mockManifest()); +const initializeServer = (configName: string, middlewares = {}) => { + const app = express(); + app.use(webMiddleware(getConf(configName), middlewares, pluginOptions)); + return app; +}; + +setup({}); describe('test web server', () => { - beforeAll(() => { - mockManifest.mockReturnValue(() => ({ - manifestFiles: { - js: ['runtime.js', 'vendors.js', 'main.js'], - }, - staticPath: path.join(__dirname, 'static'), - manifest: require('./partials/manifest/manifest.json'), - })); - }); - - afterEach(() => { - jest.clearAllMocks(); - mockManifest.mockClear(); - }); - describe('render', () => { describe('output', () => { const render = async (config = 'default-test.yaml') => { - const response = await supertest(await initializeServer(config)) + const response = await supertest(initializeServer(config)) .get('/') .set('Accept', HEADERS.TEXT_HTML) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_HTML_UTF8) @@ -59,7 +57,7 @@ describe('test web server', () => { // base: 'http://127.0.0.1:60864/prefix/', // version: '6.0.0-6-next.28', logoURI: '', - flags: { searchRemote: true }, + flags: { changePassword: true }, login: true, pkgManagers: ['pnpm', 'yarn'], title: 'verdaccio web', diff --git a/packages/middleware/test/static/main.js b/packages/middleware/test/static/main.js new file mode 100644 index 000000000..4df58828a --- /dev/null +++ b/packages/middleware/test/static/main.js @@ -0,0 +1,3 @@ +{ + main: ''; +} diff --git a/packages/middleware/test/static/vendor.js b/packages/middleware/test/static/vendor.js new file mode 100644 index 000000000..7ef4a742f --- /dev/null +++ b/packages/middleware/test/static/vendor.js @@ -0,0 +1,3 @@ +{ + 'vendors': ''; +} diff --git a/packages/web/test/template.test.ts b/packages/middleware/test/template.test.ts similarity index 96% rename from packages/web/test/template.test.ts rename to packages/middleware/test/template.test.ts index 51b42102c..489853571 100644 --- a/packages/web/test/template.test.ts +++ b/packages/middleware/test/template.test.ts @@ -1,4 +1,4 @@ -import template from '../src/template'; +import template from '../src/middlewares/web/utils/template'; const manifest = require('./partials/manifest/manifest.json'); diff --git a/packages/web/test/utils.spec.ts b/packages/middleware/test/utils.spec.ts similarity index 81% rename from packages/web/test/utils.spec.ts rename to packages/middleware/test/utils.spec.ts index 58194276d..bae53a56e 100644 --- a/packages/web/test/utils.spec.ts +++ b/packages/middleware/test/utils.spec.ts @@ -1,4 +1,4 @@ -import { validatePrimaryColor } from '../src/utils/web-utils'; +import { validatePrimaryColor } from '../src/middlewares/web/utils/web-utils'; describe('Utilities', () => { describe('validatePrimaryColor', () => { diff --git a/packages/middleware/tsconfig.json b/packages/middleware/tsconfig.json index e2fbec4d2..fdba95e91 100644 --- a/packages/middleware/tsconfig.json +++ b/packages/middleware/tsconfig.json @@ -10,6 +10,12 @@ { "path": "../auth" }, + { + "path": "../core/url" + }, + { + "path": "../core/core" + }, { "path": "../logger/logger" }, diff --git a/packages/plugins/audit/package.json b/packages/plugins/audit/package.json index 7ae3ac3b0..55fc20572 100644 --- a/packages/plugins/audit/package.json +++ b/packages/plugins/audit/package.json @@ -27,21 +27,19 @@ "main": "build/index.js", "types": "build/index.d.ts", "engines": { - "node": ">=14", - "npm": ">=6" + "node": ">=12" }, "dependencies": { "@verdaccio/core": "workspace:6.0.0-6-next.59", "@verdaccio/config": "workspace:6.0.0-6-next.59", - "@verdaccio/logger": "workspace:6.0.0-6-next.27", "express": "4.18.2", - "body-parser": "1.20.1", "https-proxy-agent": "5.0.1", "node-fetch": "cjs" }, "devDependencies": { "@verdaccio/types": "workspace:11.0.0-6-next.19", "@verdaccio/auth": "workspace:6.0.0-6-next.38", + "@verdaccio/logger": "workspace:6.0.0-6-next.27", "nock": "13.2.9", "supertest": "6.3.3" }, diff --git a/packages/plugins/audit/src/audit.ts b/packages/plugins/audit/src/audit.ts index 51a9d14f5..4b9e2bfbc 100644 --- a/packages/plugins/audit/src/audit.ts +++ b/packages/plugins/audit/src/audit.ts @@ -1,4 +1,3 @@ -import { json as jsonParser } from 'body-parser'; import express, { Express, Request, Response } from 'express'; import https from 'https'; import createHttpsProxyAgent from 'https-proxy-agent'; @@ -84,10 +83,10 @@ export default class ProxyAudit const router = express.Router(); /* eslint new-cap:off */ - router.post('/audits', jsonParser({ limit: '10mb' }), handleAudit); - router.post('/audits/quick', jsonParser({ limit: '10mb' }), handleAudit); + router.post('/audits', express.json({ limit: '10mb' }), handleAudit); + router.post('/audits/quick', express.json({ limit: '10mb' }), handleAudit); - router.post('/advisories/bulk', jsonParser({ limit: '10mb' }), handleAudit); + router.post('/advisories/bulk', express.json({ limit: '10mb' }), handleAudit); app.use('/-/npm/v1/security', router); } diff --git a/packages/plugins/audit/src/types.ts b/packages/plugins/audit/src/types.ts index fc4043349..b7d0fe4a5 100644 --- a/packages/plugins/audit/src/types.ts +++ b/packages/plugins/audit/src/types.ts @@ -1,4 +1,5 @@ export interface ConfigAudit { enabled: boolean; - strict_ssl?: boolean | void; + max_body?: string; + strict_ssl?: boolean; } diff --git a/packages/plugins/audit/tests/audit.spec.ts b/packages/plugins/audit/tests/audit.spec.ts index 851e29d4d..6dccbb808 100644 --- a/packages/plugins/audit/tests/audit.spec.ts +++ b/packages/plugins/audit/tests/audit.spec.ts @@ -9,7 +9,7 @@ import { logger, setup } from '@verdaccio/logger'; import { HTTP_STATUS } from '../../local-storage/node_modules/@verdaccio/core/build'; import ProxyAudit, { ConfigAudit } from '../src/index'; -setup(); +setup({}); const auditConfig: ConfigAudit = { enabled: true, diff --git a/packages/proxy/src/proxy.ts b/packages/proxy/src/proxy.ts index 23d355093..912141959 100644 --- a/packages/proxy/src/proxy.ts +++ b/packages/proxy/src/proxy.ts @@ -70,8 +70,8 @@ export interface IProxy { fail_timeout: number; upname: string; search(options: ProxySearchParams): Promise; - getRemoteMetadataNext(name: string, options: ISyncUplinksOptions): Promise<[Manifest, string]>; - fetchTarballNext( + getRemoteMetadata(name: string, options: ISyncUplinksOptions): Promise<[Manifest, string]>; + fetchTarball( url: string, options: Pick ): PassThrough; @@ -116,7 +116,7 @@ class ProxyStorage implements IProxy { public constructor(config: UpLinkConfLocal, mainConfig: Config, agent?: Agents) { this.config = config; this.failed_requests = 0; - this.userAgent = mainConfig.user_agent; + this.userAgent = mainConfig.user_agent ?? 'hidden'; this.ca = config.ca; this.logger = LoggerApi.logger.child({ sub: 'out' }); this.server_id = mainConfig.server_id; @@ -294,7 +294,7 @@ class ProxyStorage implements IProxy { return headers; } - public async getRemoteMetadataNext( + public async getRemoteMetadata( name: string, options: ISyncUplinksOptions ): Promise<[Manifest, string]> { @@ -443,7 +443,7 @@ class ProxyStorage implements IProxy { } // FIXME: handle stream and retry - public fetchTarballNext( + public fetchTarball( url: string, overrideOptions: Pick ): any { diff --git a/packages/proxy/test/proxy.metadata.spec.ts b/packages/proxy/test/proxy.metadata.spec.ts index f3d02a5da..477dbca50 100644 --- a/packages/proxy/test/proxy.metadata.spec.ts +++ b/packages/proxy/test/proxy.metadata.spec.ts @@ -59,7 +59,7 @@ describe('proxy', () => { const proxyPath = getConf('proxy1.yaml'); const conf = new Config(parseConfigFile(proxyPath)); - describe('getRemoteMetadataNext', () => { + describe('getRemoteMetadata', () => { beforeEach(() => { nock.cleanAll(); nock.abortPendingRequests(); @@ -78,7 +78,7 @@ describe('proxy', () => { .get('/jquery') .reply(200, { body: 'test' }); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - const [manifest] = await prox1.getRemoteMetadataNext('jquery', { + const [manifest] = await prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', }); expect(manifest).toEqual({ body: 'test' }); @@ -104,7 +104,7 @@ describe('proxy', () => { } ); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - const [manifest, etag] = await prox1.getRemoteMetadataNext('jquery', { + const [manifest, etag] = await prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', }); expect(etag).toEqual('_ref_4444'); @@ -131,7 +131,7 @@ describe('proxy', () => { } ); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - const [manifest, etag] = await prox1.getRemoteMetadataNext('jquery', { + const [manifest, etag] = await prox1.getRemoteMetadata('jquery', { etag: 'foo', remoteAddress: '127.0.0.1', }); @@ -146,7 +146,7 @@ describe('proxy', () => { .get('/jquery') .reply(200, { body: { name: 'foo', version: '1.0.0' } }, {}); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - await prox1.getRemoteMetadataNext('jquery', { + await prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', }); expect(mockHttp).toHaveBeenCalledTimes(2); @@ -175,7 +175,7 @@ describe('proxy', () => { test('proxy call with 304', async () => { nock(domain).get('/jquery').reply(304); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - await expect(prox1.getRemoteMetadataNext('jquery', { etag: 'rev_3333' })).rejects.toThrow( + await expect(prox1.getRemoteMetadata('jquery', { etag: 'rev_3333' })).rejects.toThrow( 'no data' ); }); @@ -184,7 +184,7 @@ describe('proxy', () => { nock(domain).get('/jquery').replyWithError('something awful happened'); const prox1 = new ProxyStorage(defaultRequestOptions, conf); await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', }) ).rejects.toThrowError(new Error('something awful happened')); @@ -193,7 +193,7 @@ describe('proxy', () => { test('reply with 409 error', async () => { nock(domain).get('/jquery').reply(409); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - await expect(prox1.getRemoteMetadataNext('jquery', { retry: 0 })).rejects.toThrow( + await expect(prox1.getRemoteMetadata('jquery', { retry: 0 })).rejects.toThrow( new Error('bad status code: 409') ); }); @@ -202,7 +202,7 @@ describe('proxy', () => { nock(domain).get('/jquery').reply(200, 'some-text'); const prox1 = new ProxyStorage(defaultRequestOptions, conf); await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', }) ).rejects.toThrowError( @@ -216,7 +216,7 @@ describe('proxy', () => { nock(domain).get('/jquery').reply(409); const prox1 = new ProxyStorage(defaultRequestOptions, conf); await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', }) ).rejects.toThrowError( @@ -228,7 +228,7 @@ describe('proxy', () => { nock(domain).get('/jquery').reply(404); const prox1 = new ProxyStorage(defaultRequestOptions, conf); await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', }) ).rejects.toThrowError(errorUtils.getNotFound(API_ERROR.NOT_PACKAGE_UPLINK)); @@ -254,7 +254,7 @@ describe('proxy', () => { .reply(200, { body: { name: 'foo', version: '1.0.0' } }); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - const [manifest] = await prox1.getRemoteMetadataNext('jquery', { + const [manifest] = await prox1.getRemoteMetadata('jquery', { retry: { limit: 2 }, }); expect(manifest).toEqual({ body: { name: 'foo', version: '1.0.0' } }); @@ -274,13 +274,13 @@ describe('proxy', () => { const prox1 = new ProxyStorage(defaultRequestOptions, conf); await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', retry: { limit: 2 }, }) ).rejects.toThrowError(); await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', retry: { limit: 2 }, }) @@ -311,14 +311,14 @@ describe('proxy', () => { ); // force retry await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', retry: { limit: 2 }, }) ).rejects.toThrowError(); // display offline error on exausted retry await expect( - prox1.getRemoteMetadataNext('jquery', { + prox1.getRemoteMetadata('jquery', { remoteAddress: '127.0.0.1', retry: { limit: 2 }, }) @@ -338,7 +338,7 @@ describe('proxy', () => { ); // this is based on max_fails, if change that also change here acordingly await setTimeout(3000); - const [manifest] = await prox1.getRemoteMetadataNext('jquery', { + const [manifest] = await prox1.getRemoteMetadata('jquery', { retry: { limit: 2 }, }); expect(manifest).toEqual({ body: { name: 'foo', version: '1.0.0' } }); diff --git a/packages/proxy/test/proxy.tarball.spec.ts b/packages/proxy/test/proxy.tarball.spec.ts index 11c3564df..61bac8f43 100644 --- a/packages/proxy/test/proxy.tarball.spec.ts +++ b/packages/proxy/test/proxy.tarball.spec.ts @@ -39,13 +39,13 @@ describe('tarball proxy', () => { const proxyPath = getConf('proxy1.yaml'); const conf = new Config(parseConfigFile(proxyPath)); - describe('fetchTarballNext', () => { + describe('fetchTarball', () => { test('get file tarball fetch', (done) => { nock('https://registry.verdaccio.org') .get('/jquery/-/jquery-0.0.1.tgz') .replyWithFile(201, path.join(__dirname, 'partials/jquery-0.0.1.tgz')); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - const stream = prox1.fetchTarballNext( + const stream = prox1.fetchTarball( 'https://registry.verdaccio.org/jquery/-/jquery-0.0.1.tgz', {} ); @@ -66,7 +66,7 @@ describe('tarball proxy', () => { .once() .replyWithFile(201, path.join(__dirname, 'partials/jquery-0.0.1.tgz')); const prox1 = new ProxyStorage(defaultRequestOptions, conf); - const stream = prox1.fetchTarballNext( + const stream = prox1.fetchTarball( 'https://registry.verdaccio.org/jquery/-/jquery-0.0.1.tgz', { retry: { limit: 2 } } ); diff --git a/packages/server/express/package.json b/packages/server/express/package.json index 9ebf8c1b2..8dd4478b0 100644 --- a/packages/server/express/package.json +++ b/packages/server/express/package.json @@ -45,7 +45,6 @@ "cors": "2.8.5", "debug": "4.3.4", "express": "4.18.2", - "express-rate-limit": "5.5.1", "lodash": "4.17.21" }, "devDependencies": { diff --git a/packages/server/express/src/server.ts b/packages/server/express/src/server.ts index 91a10b830..3f61619e5 100644 --- a/packages/server/express/src/server.ts +++ b/packages/server/express/src/server.ts @@ -2,7 +2,6 @@ import compression from 'compression'; import cors from 'cors'; import buildDebug from 'debug'; import express from 'express'; -import RateLimit from 'express-rate-limit'; import { HttpError } from 'http-errors'; import _ from 'lodash'; import AuditMiddleware from 'verdaccio-audit'; @@ -13,7 +12,7 @@ import { Config as AppConfig } from '@verdaccio/config'; import { API_ERROR, HTTP_STATUS, errorUtils, pluginUtils } from '@verdaccio/core'; import { asyncLoadPlugin } from '@verdaccio/loaders'; import { logger } from '@verdaccio/logger'; -import { errorReportingMiddleware, final, log } from '@verdaccio/middleware'; +import { errorReportingMiddleware, final, log, rateLimit, userAgent } from '@verdaccio/middleware'; import { Storage } from '@verdaccio/store'; import { ConfigYaml } from '@verdaccio/types'; import { Config as IConfig } from '@verdaccio/types'; @@ -21,7 +20,6 @@ import webMiddleware from '@verdaccio/web'; import { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../types/custom'; import hookDebug from './debug'; -import { getUserAgent } from './utils'; const debug = buildDebug('verdaccio:server'); @@ -29,23 +27,18 @@ const defineAPI = async function (config: IConfig, storage: Storage): Promise { expect(typeof etag === 'string').toBeTruthy(); }); -test('should contains powered by header', async () => { +test('should be hidden by default', async () => { const app = await initializeServer('conf.yaml'); const response = await supertest(app) .get('/') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_HTML_UTF8) .expect(HTTP_STATUS.OK); const powered = response.get('x-powered-by'); - expect(powered).toMatch('verdaccio/6'); -}); + expect(powered).toMatch('hidden'); +}, 40000); test('should not contains powered header', async () => { const app = await initializeServer('powered-disabled.yaml'); diff --git a/packages/store/src/storage.ts b/packages/store/src/storage.ts index 4bd46a14c..66628ddea 100644 --- a/packages/store/src/storage.ts +++ b/packages/store/src/storage.ts @@ -298,7 +298,7 @@ class Storage { let expected_length; const passThroughRemoteStream = new PassThrough(); const proxy = this.getUpLinkForDistFile(name, distFile); - const remoteStream = proxy.fetchTarballNext(distFile.url, {}); + const remoteStream = proxy.fetchTarball(distFile.url, {}); remoteStream.on('request', async () => { try { @@ -392,7 +392,7 @@ class Storage { } const proxy = this.getUpLinkForDistFile(name, distFile); - const remoteStream = proxy.fetchTarballNext(distFile.url, {}); + const remoteStream = proxy.fetchTarball(distFile.url, {}); remoteStream.on('response', async () => { try { const storage = this.getPrivatePackageStorage(name); @@ -1732,7 +1732,7 @@ class Storage { }); // get the latest metadata from the uplink - const [remoteManifest, etag] = await uplink.getRemoteMetadataNext( + const [remoteManifest, etag] = await uplink.getRemoteMetadata( _cacheManifest.name, remoteOptions ); diff --git a/packages/web/jest.config.js b/packages/web/jest.config.js index d35dd75c4..02801d93f 100644 --- a/packages/web/jest.config.js +++ b/packages/web/jest.config.js @@ -4,7 +4,7 @@ module.exports = Object.assign({}, config, { coverageThreshold: { global: { // FIXME: increase to 90 - lines: 79, + lines: 72, }, }, }); diff --git a/packages/web/package.json b/packages/web/package.json index 35ef474c3..475390fc7 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -35,11 +35,9 @@ "@verdaccio/tarball": "workspace:11.0.0-6-next.28", "@verdaccio/url": "workspace:11.0.0-6-next.25", "@verdaccio/utils": "workspace:6.0.0-6-next.27", - "body-parser": "1.20.1", "debug": "4.3.4", "express": "4.18.2", - "lodash": "4.17.21", - "lru-cache": "7.14.1" + "lodash": "4.17.21" }, "devDependencies": { "@types/node": "16.18.10", diff --git a/packages/web/src/api/index.ts b/packages/web/src/api/index.ts index c3927896e..64b988ee5 100644 --- a/packages/web/src/api/index.ts +++ b/packages/web/src/api/index.ts @@ -1,6 +1,8 @@ import { Router } from 'express'; -import { hasLogin } from '../utils/web-utils'; +import { rateLimit } from '@verdaccio/middleware'; + +import { hasLogin } from '../web-utils'; import packageApi from './package'; import readme from './readme'; import search from './search'; @@ -9,6 +11,14 @@ import user from './user'; export default (auth, storage, config) => { const route = Router(); /* eslint new-cap: 0 */ + route.use( + '/data/', + rateLimit({ + windowMs: 2 * 60 * 1000, // 2 minutes + max: 5000, // limit each IP to 1000 requests per windowMs + ...config?.web?.rateLimit, + }) + ); route.use('/data/', packageApi(storage, auth, config)); route.use('/data/', search(storage, auth)); route.use('/data/', sidebar(config, storage, auth)); diff --git a/packages/web/src/api/package.ts b/packages/web/src/api/package.ts index ca4b6e956..e514664d4 100644 --- a/packages/web/src/api/package.ts +++ b/packages/web/src/api/package.ts @@ -10,7 +10,7 @@ import { getLocalRegistryTarballUri } from '@verdaccio/tarball'; import { Config, RemoteUser, Version } from '@verdaccio/types'; import { formatAuthor, generateGravatarUrl } from '@verdaccio/utils'; -import { sortByName } from '../utils/web-utils'; +import { sortByName } from '../web-utils'; export { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages diff --git a/packages/web/src/api/readme.ts b/packages/web/src/api/readme.ts index bd0124907..24ed7e2ff 100644 --- a/packages/web/src/api/readme.ts +++ b/packages/web/src/api/readme.ts @@ -8,7 +8,7 @@ import { $NextFunctionVer, $RequestExtend, $ResponseExtend, allow } from '@verda import { Storage } from '@verdaccio/store'; import { Manifest } from '@verdaccio/types'; -import { AuthorAvatar, addScope } from '../utils/web-utils'; +import { AuthorAvatar, addScope } from '../web-utils'; export { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages diff --git a/packages/web/src/api/sidebar.ts b/packages/web/src/api/sidebar.ts index 7ca98fa6f..f142bd905 100644 --- a/packages/web/src/api/sidebar.ts +++ b/packages/web/src/api/sidebar.ts @@ -10,7 +10,7 @@ import { convertDistRemoteToLocalTarballUrls } from '@verdaccio/tarball'; import { Config, Manifest, Version } from '@verdaccio/types'; import { addGravatarSupport, formatAuthor, isVersionValid } from '@verdaccio/utils'; -import { AuthorAvatar, addScope, deleteProperties } from '../utils/web-utils'; +import { AuthorAvatar, addScope, deleteProperties } from '../web-utils'; export { $RequestExtend, $ResponseExtend, $NextFunctionVer }; // Was required by other packages diff --git a/packages/web/src/api/user.ts b/packages/web/src/api/user.ts index f689e1055..3d140e007 100644 --- a/packages/web/src/api/user.ts +++ b/packages/web/src/api/user.ts @@ -12,6 +12,7 @@ import { errorUtils, validatioUtils, } from '@verdaccio/core'; +import { rateLimit } from '@verdaccio/middleware'; import { Config, JWTSignOptions, RemoteUser } from '@verdaccio/types'; import { $NextFunctionVer } from './package'; @@ -20,33 +21,38 @@ const debug = buildDebug('verdaccio:web:api:user'); function addUserAuthApi(auth: Auth, config: Config): Router { const route = Router(); /* eslint new-cap: 0 */ - route.post('/login', function (req: Request, res: Response, next: $NextFunctionVer): void { - const { username, password } = req.body; - debug('authenticate %o', username); - auth.authenticate( - username, - password, - async (err: VerdaccioError | null, user?: RemoteUser): Promise => { - if (err) { - const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR; - debug('error authenticate %o', errorCode); - next(errorUtils.getCode(errorCode, err.message)); - } else { - req.remote_user = user as RemoteUser; - const jWTSignOptions: JWTSignOptions = config.security.web.sign; - res.set(HEADERS.CACHE_CONTROL, 'no-cache, no-store'); - next({ - token: await auth.jwtEncrypt(user as RemoteUser, jWTSignOptions), - username: req.remote_user.name, - }); + route.post( + '/login', + rateLimit(config?.userRateLimit), + function (req: Request, res: Response, next: $NextFunctionVer): void { + const { username, password } = req.body; + debug('authenticate %o', username); + auth.authenticate( + username, + password, + async (err: VerdaccioError | null, user?: RemoteUser): Promise => { + if (err) { + const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR; + debug('error authenticate %o', errorCode); + next(errorUtils.getCode(errorCode, err.message)); + } else { + req.remote_user = user as RemoteUser; + const jWTSignOptions: JWTSignOptions = config.security.web.sign; + res.set(HEADERS.CACHE_CONTROL, 'no-cache, no-store'); + next({ + token: await auth.jwtEncrypt(user as RemoteUser, jWTSignOptions), + username: req.remote_user.name, + }); + } } - } - ); - }); + ); + } + ); if (config?.flags?.changePassword === true) { route.put( '/reset_password', + rateLimit(config?.userRateLimit), function (req: Request, res: Response, next: $NextFunctionVer): void { if (_.isNil(req.remote_user.name)) { res.status(HTTP_STATUS.UNAUTHORIZED); diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 054cb34a0..1c2a675d9 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -1 +1 @@ -export { default } from './web-middleware'; +export { default } from './middleware'; diff --git a/packages/web/src/middleware.ts b/packages/web/src/middleware.ts new file mode 100644 index 000000000..554e3c333 --- /dev/null +++ b/packages/web/src/middleware.ts @@ -0,0 +1,46 @@ +import express from 'express'; +import _ from 'lodash'; + +import { asyncLoadPlugin } from '@verdaccio/loaders'; +import { logger } from '@verdaccio/logger'; +import { webMiddleware } from '@verdaccio/middleware'; + +import webEndpointsApi from './api'; + +export async function loadTheme(config: any) { + if (_.isNil(config.theme) === false) { + const plugin = await asyncLoadPlugin( + config.theme, + { config, logger }, + // TODO: add types { staticPath: string; manifest: unknown; manifestFiles: unknown } + function (plugin: any) { + return plugin.staticPath && plugin.manifest && plugin.manifestFiles; + }, + config?.serverSettings?.pluginPrefix ?? 'verdaccio-theme' + ); + if (plugin.length > 1) { + logger.warn('multiple ui themes are not supported , only the first plugin is used used'); + } + + return _.head(plugin); + } +} + +export default async (config, auth, storage) => { + const pluginOptions = (await loadTheme(config)) || require('@verdaccio/ui-theme')(); + + // eslint-disable-next-line new-cap + const router = express.Router(); + // load application + router.use( + webMiddleware( + config, + { + tokenMiddleware: auth.webUIJWTmiddleware(), + webEndpointsApi: webEndpointsApi(auth, storage, config), + }, + pluginOptions + ) + ); + return router; +}; diff --git a/packages/web/src/middleware/web-api.ts b/packages/web/src/middleware/web-api.ts deleted file mode 100644 index f31f9558b..000000000 --- a/packages/web/src/middleware/web-api.ts +++ /dev/null @@ -1,25 +0,0 @@ -import bodyParser from 'body-parser'; -import { Router } from 'express'; - -import { Auth } from '@verdaccio/auth'; -import { validateName, validatePackage } from '@verdaccio/middleware'; -import { Storage } from '@verdaccio/store'; -import { Config } from '@verdaccio/types'; - -import webEndpointsApi from '../api'; -import { setSecurityWebHeaders } from './security'; - -export function webAPI(config: Config, auth: Auth, storage: Storage): Router { - // eslint-disable-next-line new-cap - const route = Router(); - // validate all of these params as a package name - // this might be too harsh, so ask if it causes trouble= - route.param('package', validatePackage); - route.param('filename', validateName); - route.param('version', validateName); - route.use(bodyParser.urlencoded({ extended: false })); - route.use(auth.webUIJWTmiddleware()); - route.use(setSecurityWebHeaders); - route.use(webEndpointsApi(auth, storage, config)); - return route; -} diff --git a/packages/web/src/web-middleware.ts b/packages/web/src/web-middleware.ts deleted file mode 100644 index d6570cb5c..000000000 --- a/packages/web/src/web-middleware.ts +++ /dev/null @@ -1,14 +0,0 @@ -import express from 'express'; - -import { renderWebMiddleware } from './middleware/render-web'; -import { webAPI } from './middleware/web-api'; - -export default async (config, auth, storage) => { - // eslint-disable-next-line new-cap - const app = express.Router(); - // load application - app.use('/', await renderWebMiddleware(config, auth)); - // web endpoints, search, packages, etc - app.use('/-/verdaccio/', webAPI(config, auth, storage)); - return app; -}; diff --git a/packages/web/src/utils/web-utils.ts b/packages/web/src/web-utils.ts similarity index 68% rename from packages/web/src/utils/web-utils.ts rename to packages/web/src/web-utils.ts index bdae1e1d3..c6d375f0a 100644 --- a/packages/web/src/utils/web-utils.ts +++ b/packages/web/src/web-utils.ts @@ -1,34 +1,9 @@ -import buildDebug from 'debug'; import _ from 'lodash'; -// import { normalizeContributors } from '@verdaccio/store'; import { Author, ConfigYaml } from '@verdaccio/types'; -export type AuthorAvatar = Author & { avatar?: string }; - -const debug = buildDebug('verdaccio:web:utils'); - -export function validatePrimaryColor(primaryColor) { - const isHex = /^#([0-9A-F]{3}){1,2}$/i.test(primaryColor); - if (!isHex) { - debug('invalid primary color %o', primaryColor); - return; - } - - return primaryColor; -} - -export function deleteProperties(propertiesToDelete: string[], objectItem: any): any { - debug('deleted unused version properties'); - _.forEach(propertiesToDelete, (property): any => { - delete objectItem[property]; - }); - - return objectItem; -} - -export function addScope(scope: string, packageName: string): string { - return `@${scope}/${packageName}`; +export function hasLogin(config: ConfigYaml) { + return _.isNil(config?.web?.login) || config?.web?.login === true; } export function sortByName(packages: any[], orderAscending: boolean | void = true): string[] { @@ -38,6 +13,16 @@ export function sortByName(packages: any[], orderAscending: boolean | void = tru }); } -export function hasLogin(config: ConfigYaml) { - return _.isNil(config?.web?.login) || config?.web?.login === true; +export type AuthorAvatar = Author & { avatar?: string }; + +export function addScope(scope: string, packageName: string): string { + return `@${scope}/${packageName}`; +} + +export function deleteProperties(propertiesToDelete: string[], objectItem: any): any { + _.forEach(propertiesToDelete, (property): any => { + delete objectItem[property]; + }); + + return objectItem; } diff --git a/packages/web/test/helper.ts b/packages/web/test/helper.ts index 7b0c20760..870e8a641 100644 --- a/packages/web/test/helper.ts +++ b/packages/web/test/helper.ts @@ -9,7 +9,7 @@ import { initializeServer as initializeServerHelper } from '@verdaccio/test-help import routes from '../src'; -setup([]); +setup({}); export const getConf = (configName: string) => { const configPath = path.join(__dirname, 'config', configName); diff --git a/packages/web/test/web-utils.spec.ts b/packages/web/test/web-utils.spec.ts index fe6aa067f..05b1e55b5 100644 --- a/packages/web/test/web-utils.spec.ts +++ b/packages/web/test/web-utils.spec.ts @@ -1,4 +1,4 @@ -import { sortByName } from '../src/utils/web-utils'; +import { sortByName } from '../src/web-utils'; describe('Utilities', () => { describe('Sort packages', () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 419ede67d..dd2fd5bf9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -280,7 +280,7 @@ importers: pnpm: next-7 dependencies: '@verdaccio/test-cli-commons': link:../cli-commons - pnpm: 7.27.0-0 + pnpm: 7.27.0 e2e/cli/e2e-yarn1: specifiers: @@ -634,19 +634,29 @@ importers: packages/middleware: specifiers: + '@verdaccio/config': workspace:6.0.0-6-next.59 '@verdaccio/core': workspace:6.0.0-6-next.59 '@verdaccio/logger': workspace:6.0.0-6-next.27 + '@verdaccio/url': workspace:11.0.0-6-next.25 '@verdaccio/utils': workspace:6.0.0-6-next.27 body-parser: 1.20.1 debug: 4.3.4 + express: 4.18.2 + express-rate-limit: 5.5.1 lodash: 4.17.21 + lru-cache: 7.14.1 mime: 2.6.0 supertest: 6.3.3 dependencies: + '@verdaccio/config': link:../config '@verdaccio/core': link:../core/core + '@verdaccio/url': link:../core/url '@verdaccio/utils': link:../utils debug: 4.3.4 + express: 4.18.2 + express-rate-limit: 5.5.1 lodash: 4.17.21 + lru-cache: 7.14.1 mime: 2.6.0 devDependencies: '@verdaccio/logger': link:../logger/logger @@ -691,7 +701,6 @@ importers: '@verdaccio/core': workspace:6.0.0-6-next.59 '@verdaccio/logger': workspace:6.0.0-6-next.27 '@verdaccio/types': workspace:11.0.0-6-next.19 - body-parser: 1.20.1 express: 4.18.2 https-proxy-agent: 5.0.1 nock: 13.2.9 @@ -700,13 +709,12 @@ importers: dependencies: '@verdaccio/config': link:../../config '@verdaccio/core': link:../../core/core - '@verdaccio/logger': link:../../logger/logger - body-parser: 1.20.1 express: 4.18.2 https-proxy-agent: 5.0.1 node-fetch: 2.6.7 devDependencies: '@verdaccio/auth': link:../../auth + '@verdaccio/logger': link:../../logger/logger '@verdaccio/types': link:../../core/types nock: 13.2.9 supertest: 6.3.3 @@ -1031,7 +1039,6 @@ importers: cors: 2.8.5 debug: 4.3.4 express: 4.18.2 - express-rate-limit: 5.5.1 http-errors: 1.8.1 lodash: 4.17.21 verdaccio-audit: workspace:11.0.0-6-next.22 @@ -1050,7 +1057,6 @@ importers: cors: 2.8.5 debug: 4.3.4 express: 4.18.2 - express-rate-limit: 5.5.1 lodash: 4.17.21 verdaccio-audit: link:../../plugins/audit devDependencies: @@ -1444,12 +1450,10 @@ importers: '@verdaccio/types': workspace:11.0.0-6-next.19 '@verdaccio/url': workspace:11.0.0-6-next.25 '@verdaccio/utils': workspace:6.0.0-6-next.27 - body-parser: 1.20.1 debug: 4.3.4 express: 4.18.2 jsdom: 20.0.3 lodash: 4.17.21 - lru-cache: 7.14.1 nock: 13.2.9 node-html-parser: 4.1.5 supertest: 6.3.3 @@ -1467,11 +1471,9 @@ importers: '@verdaccio/tarball': link:../core/tarball '@verdaccio/url': link:../core/url '@verdaccio/utils': link:../utils - body-parser: 1.20.1 debug: 4.3.4 express: 4.18.2 lodash: 4.17.21 - lru-cache: 7.14.1 devDependencies: '@types/node': 16.18.10 '@verdaccio/api': link:../api @@ -1756,7 +1758,6 @@ packages: /@babel/compat-data/7.19.4: resolution: {integrity: sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==} engines: {node: '>=6.9.0'} - dev: false /@babel/compat-data/7.20.1: resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} @@ -1879,7 +1880,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/core/7.20.7: resolution: {integrity: sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==} @@ -1902,7 +1902,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/generator/7.12.5: resolution: {integrity: sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==} @@ -2014,7 +2013,6 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 - dev: false /@babel/helper-compilation-targets/7.19.3_@babel+core@7.17.8: resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} @@ -2040,7 +2038,6 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 - dev: false /@babel/helper-compilation-targets/7.20.0_@babel+core@7.19.3: resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} @@ -2053,7 +2050,6 @@ packages: '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 - dev: false /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.7: resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} @@ -2108,7 +2104,6 @@ packages: browserslist: 4.21.4 lru-cache: 5.1.1 semver: 6.3.0 - dev: false /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -2122,7 +2117,6 @@ packages: browserslist: 4.21.4 lru-cache: 5.1.1 semver: 6.3.0 - dev: true /@babel/helper-create-class-features-plugin/7.18.9_@babel+core@7.18.10: resolution: {integrity: sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==} @@ -2176,7 +2170,6 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-create-class-features-plugin/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==} @@ -2248,7 +2241,6 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-create-class-features-plugin/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==} @@ -2321,7 +2313,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.1.0 - dev: false /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.20.7: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} @@ -2398,7 +2389,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.7: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} @@ -2603,7 +2593,6 @@ packages: '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -2631,7 +2620,6 @@ packages: '@babel/types': 7.19.4 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-replace-supers/7.19.1: resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} @@ -2663,7 +2651,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.4 - dev: false /@babel/helper-simple-access/7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} @@ -2676,7 +2663,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 - dev: false /@babel/helper-skip-transparent-expression-wrappers/7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} @@ -2758,7 +2744,6 @@ packages: '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color - dev: true /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} @@ -2866,7 +2851,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -2912,7 +2896,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.19.3 - dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} @@ -2969,7 +2952,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-async-generator-functions/7.20.1_@babel+core@7.20.7: resolution: {integrity: sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==} @@ -3023,7 +3005,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -3078,7 +3059,6 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} @@ -3141,7 +3121,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} @@ -3196,7 +3175,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.18.9 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} @@ -3254,7 +3232,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.18.9 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} @@ -3298,7 +3275,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} @@ -3342,7 +3318,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.18.9 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -3386,7 +3361,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.18.9 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} @@ -3449,7 +3423,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.3 '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -3496,7 +3469,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -3543,7 +3515,6 @@ packages: '@babel/helper-plugin-utils': 7.18.9 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.18.10: resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} @@ -3579,7 +3550,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.3 - dev: false /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} @@ -3630,7 +3600,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} @@ -3688,7 +3657,6 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} @@ -3747,7 +3715,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -3785,7 +3752,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.7: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -3794,7 +3760,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} @@ -3803,7 +3768,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.10: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -3830,7 +3794,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.7: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -3839,7 +3802,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.18.10: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -3869,7 +3831,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.7: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -3916,7 +3877,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.16.5 - dev: false /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -3962,7 +3922,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -4021,7 +3980,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.7: resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} @@ -4040,7 +3998,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.10.4 - dev: true /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.10: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -4067,7 +4024,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -4076,7 +4032,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.19.0 - dev: true /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} @@ -4114,7 +4069,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} @@ -4150,7 +4104,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.7: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -4159,7 +4112,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.10: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -4186,7 +4138,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -4195,7 +4146,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.16.7 - dev: true /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.10: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -4222,7 +4172,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.16.7 - dev: false /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.7: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -4231,7 +4180,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.16.7 - dev: true /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -4266,7 +4214,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -4275,7 +4222,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.10: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -4302,7 +4248,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -4311,7 +4256,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.10: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -4338,7 +4282,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.7: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -4347,7 +4290,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.18.10: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -4377,7 +4319,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.7: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -4427,7 +4368,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.7: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -4437,7 +4377,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.20.2 - dev: true /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} @@ -4457,7 +4396,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} @@ -4467,7 +4405,6 @@ packages: dependencies: '@babel/core': 7.20.7 '@babel/helper-plugin-utils': 7.19.0 - dev: true /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -4497,7 +4434,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} @@ -4549,7 +4485,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} @@ -4593,7 +4528,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -4633,7 +4567,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-block-scoping/7.20.2_@babel+core@7.20.7: resolution: {integrity: sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==} @@ -4701,7 +4634,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.7: resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} @@ -4751,7 +4683,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} @@ -4791,7 +4722,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-destructuring/7.20.2_@babel+core@7.20.7: resolution: {integrity: sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==} @@ -4834,7 +4764,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -4875,7 +4804,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} @@ -4918,7 +4846,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -4970,7 +4897,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.7: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} @@ -5016,7 +4942,6 @@ packages: '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.19.3 '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -5058,7 +4983,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -5098,7 +5022,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -5150,7 +5073,6 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.20.7: resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==} @@ -5208,7 +5130,6 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.20.7: resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} @@ -5270,7 +5191,6 @@ packages: babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.20.7: resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} @@ -5324,7 +5244,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} @@ -5370,7 +5289,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.20.7: resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} @@ -5411,7 +5329,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} @@ -5460,7 +5377,6 @@ packages: '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -5512,7 +5428,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-parameters/7.20.3_@babel+core@7.20.7: resolution: {integrity: sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==} @@ -5562,7 +5477,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -5592,7 +5506,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.18.9 - dev: false /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} @@ -5622,7 +5535,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} @@ -5662,7 +5574,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.19.3 - dev: false /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} @@ -5714,7 +5625,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.3 '@babel/types': 7.19.0 - dev: false /@babel/plugin-transform-react-jsx/7.18.10_@babel+core@7.20.7: resolution: {integrity: sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==} @@ -5761,7 +5671,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} @@ -5805,7 +5714,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.0 - dev: false /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} @@ -5846,7 +5754,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} @@ -5890,7 +5797,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-runtime/7.19.6_@babel+core@7.20.7: resolution: {integrity: sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==} @@ -5937,7 +5843,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -5980,7 +5885,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - dev: false /@babel/plugin-transform-spread/7.19.0_@babel+core@7.20.7: resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} @@ -6021,7 +5925,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -6061,7 +5964,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -6101,7 +6003,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.7: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} @@ -6139,7 +6040,6 @@ packages: '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-typescript/7.18.12_@babel+core@7.20.7: resolution: {integrity: sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w==} @@ -6183,7 +6083,6 @@ packages: dependencies: '@babel/core': 7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.7: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} @@ -6226,7 +6125,6 @@ packages: '@babel/core': 7.19.3 '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.3 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -6495,7 +6393,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/preset-env/7.20.2_@babel+core@7.20.7: resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} @@ -6632,7 +6529,6 @@ packages: '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.3 '@babel/types': 7.20.7 esutils: 2.0.3 - dev: false /@babel/preset-modules/0.1.5_@babel+core@7.20.7: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -6690,7 +6586,6 @@ packages: '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.19.3 '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.3 '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.19.3 - dev: false /@babel/preset-react/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} @@ -6733,7 +6628,6 @@ packages: '@babel/plugin-transform-typescript': 7.18.12_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - dev: false /@babel/preset-typescript/7.18.6_@babel+core@7.20.7: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} @@ -6769,7 +6663,6 @@ packages: dependencies: core-js-pure: 3.21.1 regenerator-runtime: 0.13.11 - dev: false /@babel/runtime/7.15.4: resolution: {integrity: sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==} @@ -7017,7 +6910,6 @@ packages: '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: false /@babel/types/7.19.4: resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==} @@ -7050,7 +6942,6 @@ packages: /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true /@braintree/sanitize-url/6.0.2: resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==} @@ -7301,7 +7192,6 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true /@csstools/selector-specificity/2.0.2_d5e47c13600a2304adeb61035602f868: resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} @@ -7753,7 +7643,6 @@ packages: - utf-8-validate - vue-template-compiler - webpack-cli - dev: false /@docusaurus/cssnano-preset/2.0.0-beta.3: resolution: {integrity: sha512-k7EkNPluB+TV++oZB8Je4EQ6Xs6cR0SvgIU9vdXm00qyPCu38MMfRwSY4HnsVUV797T/fQUD91zkuwhyXCUGLA==} @@ -7771,7 +7660,6 @@ packages: postcss: 8.4.18 postcss-sort-media-queries: 4.2.1_postcss@8.4.18 tslib: 2.4.0 - dev: false /@docusaurus/logger/2.2.0: resolution: {integrity: sha512-DF3j1cA5y2nNsu/vk8AG7xwpZu6f5MKkPPMaaIbgXLnWGfm6+wkOeW7kNrxnM95YOhKUkJUophX69nGUnLsm0A==} @@ -7779,7 +7667,6 @@ packages: dependencies: chalk: 4.1.2 tslib: 2.4.0 - dev: false /@docusaurus/mdx-loader/2.2.0_275b5e113b7d789bf37da835e1f2a2a2: resolution: {integrity: sha512-X2bzo3T0jW0VhUU+XdQofcEeozXOTmKQMvc8tUnWRdTnCvj4XEcBVdC3g+/jftceluiwSTNRAX4VBOJdNt18jA==} @@ -7849,7 +7736,6 @@ packages: - supports-color - uglify-js - webpack-cli - dev: false /@docusaurus/module-type-aliases/2.2.0_e04bad828ac717e6587f05c972df8358: resolution: {integrity: sha512-wDGW4IHKoOr9YuJgy7uYuKWrDrSpsUSDHLZnWQYM9fN7D5EpSmYHjFruUpKWVyxLpD/Wh0rW8hYZwdjJIQUQCQ==} @@ -8522,7 +8408,6 @@ packages: optional: true dependencies: tslib: 2.4.0 - dev: false /@docusaurus/utils-common/2.2.0_@docusaurus+types@2.2.0: resolution: {integrity: sha512-qebnerHp+cyovdUseDQyYFvMW1n1nv61zGe5JJfoNQUnjKuApch3IVsz+/lZ9a38pId8kqehC1Ao2bW/s0ntDA==} @@ -8586,7 +8471,6 @@ packages: - supports-color - uglify-js - webpack-cli - dev: false /@docusaurus/utils/2.0.0-beta.3_esbuild@0.14.10: resolution: {integrity: sha512-DApc6xcb3CvvsBCfRU6Zk3KoZa4mZfCJA4XRv5zhlhaSb0GFuAo7KQ353RUu6d0eYYylY3GGRABXkxRE1SEClA==} @@ -8704,7 +8588,6 @@ packages: - supports-color - uglify-js - webpack-cli - dev: false /@emotion/babel-plugin/11.10.5_@babel+core@7.20.7: resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} @@ -8959,7 +8842,6 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true /@fastify/ajv-compiler/3.3.1: resolution: {integrity: sha512-IRnids8lblQ8e1i8h4JLyfJmebXE+ohcj8x8X/+Ew6ZB4H0Ui05z5YL6q5FOcl0zItVpu4adRzeyVNNUwmduIg==} @@ -9049,16 +8931,13 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true /@humanwhocodes/module-importer/1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true /@istanbuljs/load-nyc-config/1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -9069,12 +8948,10 @@ packages: get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 - dev: true /@istanbuljs/schema/0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - dev: true /@jest/console/29.3.1: resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} @@ -9086,7 +8963,6 @@ packages: jest-message-util: 29.3.1 jest-util: 29.3.1 slash: 3.0.0 - dev: true /@jest/core/29.3.1_ts-node@10.9.1: resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} @@ -9128,7 +9004,6 @@ packages: transitivePeerDependencies: - supports-color - ts-node - dev: true /@jest/environment/29.3.1: resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} @@ -9138,14 +9013,12 @@ packages: '@jest/types': 29.3.1 '@types/node': 17.0.21 jest-mock: 29.3.1 - dev: true /@jest/expect-utils/29.3.1: resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.2.0 - dev: true /@jest/expect/29.3.1: resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} @@ -9155,7 +9028,6 @@ packages: jest-snapshot: 29.3.1 transitivePeerDependencies: - supports-color - dev: true /@jest/fake-timers/29.3.1: resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} @@ -9167,7 +9039,6 @@ packages: jest-message-util: 29.3.1 jest-mock: 29.3.1 jest-util: 29.3.1 - dev: true /@jest/globals/29.3.1: resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} @@ -9179,7 +9050,6 @@ packages: jest-mock: 29.3.1 transitivePeerDependencies: - supports-color - dev: true /@jest/reporters/29.3.1: resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} @@ -9216,14 +9086,12 @@ packages: v8-to-istanbul: 9.0.1 transitivePeerDependencies: - supports-color - dev: true /@jest/schemas/29.0.0: resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.24.34 - dev: true /@jest/source-map/29.2.0: resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} @@ -9232,7 +9100,6 @@ packages: '@jridgewell/trace-mapping': 0.3.15 callsites: 3.1.0 graceful-fs: 4.2.9 - dev: true /@jest/test-result/29.3.1: resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} @@ -9242,7 +9109,6 @@ packages: '@jest/types': 29.3.1 '@types/istanbul-lib-coverage': 2.0.3 collect-v8-coverage: 1.0.1 - dev: true /@jest/test-sequencer/29.3.1: resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} @@ -9252,7 +9118,6 @@ packages: graceful-fs: 4.2.9 jest-haste-map: 29.3.1 slash: 3.0.0 - dev: true /@jest/transform/26.6.2: resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} @@ -9298,7 +9163,6 @@ packages: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - dev: true /@jest/types/26.6.2: resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} @@ -9332,7 +9196,6 @@ packages: '@types/node': 17.0.21 '@types/yargs': 17.0.12 chalk: 4.1.2 - dev: true /@jridgewell/gen-mapping/0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} @@ -9370,11 +9233,9 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.0.5 '@jridgewell/sourcemap-codec': 1.4.11 - dev: true /@leichtgewicht/ip-codec/2.0.3: resolution: {integrity: sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==} - dev: false /@lyrasearch/lyra/0.3.1: resolution: {integrity: sha512-c0k8R026nfXu/FhA9xgh7jo/+HM4I7XCn5J+us32mQEmqNBmGpD0CEyJ8PiJxmsDapyeYwpMNQgT2lNmnIL86w==} @@ -10310,7 +10171,6 @@ packages: /@sinclair/typebox/0.24.34: resolution: {integrity: sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw==} - dev: true /@sindresorhus/is/4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} @@ -10320,13 +10180,11 @@ packages: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: type-detect: 4.0.8 - dev: true /@sinonjs/fake-timers/9.1.2: resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: '@sinonjs/commons': 1.8.3 - dev: true /@slorber/static-site-generator-webpack-plugin/4.0.7: resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} @@ -10335,7 +10193,6 @@ packages: eval: 0.1.8 p-map: 4.0.0 webpack-sources: 3.2.3 - dev: false /@storybook/addon-actions/6.5.15_react-dom@18.2.0+react@18.2.0: resolution: {integrity: sha512-cnLzVK1S+EydFDSuvxMmMAxVqNXijBGdV9QTgsu6ys5sOkoiXRETKZmxuN8/ZRbkfc4N+1KAylSCZOOHzBQTBQ==} @@ -11773,7 +11630,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-plugin-remove-jsx-attribute/5.4.0: resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} @@ -11787,7 +11643,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-plugin-remove-jsx-empty-expression/5.0.1: resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} @@ -11801,7 +11656,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-plugin-replace-jsx-attribute-value/5.0.1: resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} @@ -11815,7 +11669,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-plugin-svg-dynamic-title/5.4.0: resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} @@ -11829,7 +11682,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-plugin-svg-em-dimensions/5.4.0: resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} @@ -11843,7 +11695,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-plugin-transform-react-native-svg/5.4.0: resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} @@ -11857,7 +11708,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-plugin-transform-svg-component/5.5.0: resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} @@ -11871,7 +11721,6 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.3 - dev: false /@svgr/babel-preset/5.5.0: resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} @@ -11902,7 +11751,6 @@ packages: '@svgr/babel-plugin-svg-em-dimensions': 6.0.0_@babel+core@7.19.3 '@svgr/babel-plugin-transform-react-native-svg': 6.0.0_@babel+core@7.19.3 '@svgr/babel-plugin-transform-svg-component': 6.2.0_@babel+core@7.19.3 - dev: false /@svgr/core/5.5.0: resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} @@ -11924,7 +11772,6 @@ packages: cosmiconfig: 7.0.1 transitivePeerDependencies: - supports-color - dev: false /@svgr/hast-util-to-babel-ast/5.5.0: resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} @@ -11939,7 +11786,6 @@ packages: dependencies: '@babel/types': 7.19.4 entities: 3.0.1 - dev: false /@svgr/plugin-jsx/5.5.0: resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} @@ -11966,7 +11812,6 @@ packages: svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - dev: false /@svgr/plugin-svgo/5.5.0: resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} @@ -11987,7 +11832,6 @@ packages: cosmiconfig: 7.0.1 deepmerge: 4.2.2 svgo: 2.8.0 - dev: false /@svgr/webpack/5.5.0: resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} @@ -12019,7 +11863,6 @@ packages: '@svgr/plugin-svgo': 6.2.0_@svgr+core@6.2.1 transitivePeerDependencies: - supports-color - dev: false /@szmarczak/http-timer/4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} @@ -12127,19 +11970,15 @@ packages: /@tsconfig/node10/1.0.7: resolution: {integrity: sha512-aBvUmXLQbayM4w3A8TrjwrXs4DZ8iduJnuJLLRGdkWlyakCf1q6uHZJBzXoRA/huAEknG5tcUyQxN3A+In5euQ==} - dev: true /@tsconfig/node12/1.0.7: resolution: {integrity: sha512-dgasobK/Y0wVMswcipr3k0HpevxFJLijN03A8mYfEPvWvOs14v0ZlYTR4kIgMx8g4+fTyTFv8/jLCIfRqLDJ4A==} - dev: true /@tsconfig/node14/1.0.0: resolution: {integrity: sha512-RKkL8eTdPv6t5EHgFKIVQgsDapugbuOptNd9OOunN/HAkzmmTnZELx1kNCK0rSdUYGmiFMM3rRQMAWiyp023LQ==} - dev: true /@tsconfig/node16/1.0.2: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} - dev: true /@types/aria-query/5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} @@ -12157,26 +11996,22 @@ packages: '@types/babel__generator': 7.6.2 '@types/babel__template': 7.4.0 '@types/babel__traverse': 7.11.1 - dev: true /@types/babel__generator/7.6.2: resolution: {integrity: sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==} dependencies: '@babel/types': 7.20.7 - dev: true /@types/babel__template/7.4.0: resolution: {integrity: sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==} dependencies: '@babel/parser': 7.20.7 '@babel/types': 7.20.7 - dev: true /@types/babel__traverse/7.11.1: resolution: {integrity: sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==} dependencies: '@babel/types': 7.20.7 - dev: true /@types/bcryptjs/2.4.2: resolution: {integrity: sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==} @@ -12192,7 +12027,6 @@ packages: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: '@types/node': 17.0.21 - dev: false /@types/btoa-lite/1.0.0: resolution: {integrity: sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==} @@ -12215,7 +12049,6 @@ packages: dependencies: '@types/express-serve-static-core': 4.17.28 '@types/node': 17.0.21 - dev: false /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} @@ -12274,7 +12107,6 @@ packages: '@types/node': 17.0.21 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 - dev: false /@types/express-serve-static-core/4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} @@ -12291,7 +12123,6 @@ packages: '@types/express-serve-static-core': 4.17.28 '@types/qs': 6.9.7 '@types/serve-static': 1.13.10 - dev: false /@types/express/4.17.15: resolution: {integrity: sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==} @@ -12316,7 +12147,6 @@ packages: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: '@types/node': 17.0.21 - dev: true /@types/hast/2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} @@ -12350,7 +12180,6 @@ packages: resolution: {integrity: sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==} dependencies: '@types/node': 17.0.21 - dev: false /@types/is-ci/3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} @@ -12364,26 +12193,22 @@ packages: /@types/istanbul-lib-coverage/2.0.3: resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} - dev: true /@types/istanbul-lib-report/3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.3 - dev: true /@types/istanbul-reports/3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: true /@types/jest/27.5.2: resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} dependencies: jest-matcher-utils: 27.4.6 pretty-format: 27.5.1 - dev: true /@types/js-levenshtein/1.1.1: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} @@ -12480,7 +12305,6 @@ packages: /@types/node/16.18.10: resolution: {integrity: sha512-XU1+v7h81p7145ddPfjv7jtWvkSilpcnON3mQ+bDi9Yuf7OI56efOglXRyXWgQ57xH3fEQgh7WOJMncRHVew5w==} - dev: true /@types/node/17.0.21: resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==} @@ -12501,7 +12325,6 @@ packages: /@types/prettier/2.3.0: resolution: {integrity: sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw==} - dev: true /@types/pretty-hrtime/1.0.1: resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} @@ -12622,7 +12445,6 @@ packages: /@types/retry/0.12.1: resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} - dev: false /@types/sax/1.2.4: resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} @@ -12639,13 +12461,11 @@ packages: /@types/semver/7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - dev: true /@types/serve-index/1.9.1: resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: '@types/express': 4.17.14 - dev: false /@types/serve-static/1.13.10: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} @@ -12671,7 +12491,6 @@ packages: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: '@types/node': 17.0.21 - dev: false /@types/source-list-map/0.1.2: resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} @@ -12679,7 +12498,6 @@ packages: /@types/stack-utils/2.0.0: resolution: {integrity: sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==} - dev: true /@types/superagent/4.1.10: resolution: {integrity: sha512-xAgkb2CMWUMCyVc/3+7iQfOEBE75NvuZeezvmixbUw3nmENf2tCnQkW5yQLTYqvXUQ+R6EXxdqKKbal2zM5V/g==} @@ -12761,11 +12579,9 @@ packages: resolution: {integrity: sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw==} dependencies: '@types/node': 17.0.21 - dev: false /@types/yargs-parser/20.2.0: resolution: {integrity: sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==} - dev: true /@types/yargs/15.0.14: resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==} @@ -12783,7 +12599,6 @@ packages: resolution: {integrity: sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==} dependencies: '@types/yargs-parser': 20.2.0 - dev: true /@types/yauzl/2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} @@ -12822,7 +12637,6 @@ packages: typescript: 4.9.4 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/parser/5.49.0_eslint@8.33.0+typescript@4.9.4: resolution: {integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==} @@ -12842,7 +12656,6 @@ packages: typescript: 4.9.4 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/scope-manager/5.33.1: resolution: {integrity: sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==} @@ -12858,7 +12671,6 @@ packages: dependencies: '@typescript-eslint/types': 5.49.0 '@typescript-eslint/visitor-keys': 5.49.0 - dev: true /@typescript-eslint/type-utils/5.49.0_eslint@8.33.0+typescript@4.9.4: resolution: {integrity: sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==} @@ -12878,7 +12690,6 @@ packages: typescript: 4.9.4 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/types/5.33.1: resolution: {integrity: sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==} @@ -12888,7 +12699,6 @@ packages: /@typescript-eslint/types/5.49.0: resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /@typescript-eslint/typescript-estree/5.33.1_typescript@4.9.4: resolution: {integrity: sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==} @@ -12930,7 +12740,6 @@ packages: typescript: 4.9.4 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/utils/5.33.1_eslint@8.33.0+typescript@4.9.4: resolution: {integrity: sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ==} @@ -12968,7 +12777,6 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true /@typescript-eslint/visitor-keys/5.33.1: resolution: {integrity: sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==} @@ -12984,7 +12792,6 @@ packages: dependencies: '@typescript-eslint/types': 5.49.0 eslint-visitor-keys: 3.3.0 - dev: true /@verdaccio-scope/verdaccio-auth-foo/0.0.2: resolution: {integrity: sha512-BqeDqLcYcm3CRYlrQnAueKg8vabBtqwgZ4jRLZJtig+JWzSX50sKdWrzbhf6waQT/HjRO+ADUs/2gjl1tdOTMQ==} @@ -13424,7 +13231,6 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.1 - dev: true /acorn-walk/7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} @@ -13596,7 +13402,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - dev: true /ansi-html-community/0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} @@ -13623,7 +13428,6 @@ packages: /ansi-regex/6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: false /ansi-styles/2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} @@ -13645,12 +13449,10 @@ packages: /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - dev: true /ansi-styles/6.1.0: resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} engines: {node: '>=12'} - dev: false /ansi-to-html/0.6.15: resolution: {integrity: sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==} @@ -13718,7 +13520,6 @@ packages: /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true /arg/5.0.1: resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==} @@ -13761,7 +13562,7 @@ packages: dev: true /array-flatten/1.1.1: - resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} /array-flatten/2.1.2: resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} @@ -13965,7 +13766,6 @@ packages: picocolors: 1.0.0 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /autoprefixer/9.8.8: resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} @@ -14028,7 +13828,6 @@ packages: follow-redirects: 1.14.9_debug@4.3.3 transitivePeerDependencies: - debug - dev: false /axobject-query/3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} @@ -14077,7 +13876,6 @@ packages: slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: true /babel-loader/8.2.5_b1475583497452e4eb6a502a776a8f19: resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} @@ -14092,7 +13890,6 @@ packages: make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 5.74.0_esbuild@0.14.10 - dev: false /babel-loader/8.2.5_b8bce14f87162c3885dc6907ec4c380b: resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} @@ -14208,7 +14005,6 @@ packages: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-jest-hoist/29.2.0: resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} @@ -14218,7 +14014,6 @@ packages: '@babel/types': 7.20.7 '@types/babel__core': 7.1.14 '@types/babel__traverse': 7.11.1 - dev: true /babel-plugin-macros/2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} @@ -14277,7 +14072,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.7: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} @@ -14338,7 +14132,6 @@ packages: core-js-compat: 3.25.2 transitivePeerDependencies: - supports-color - dev: false /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.7: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -14383,7 +14176,6 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.3 transitivePeerDependencies: - supports-color - dev: false /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.7: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -14428,7 +14220,6 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.7 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.7 '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.7 - dev: true /babel-preset-jest/29.2.0_@babel+core@7.20.7: resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} @@ -14439,7 +14230,6 @@ packages: '@babel/core': 7.20.7 babel-plugin-jest-hoist: 29.2.0 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.7 - dev: true /bail/1.0.5: resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} @@ -14615,7 +14405,6 @@ packages: dns-equal: 1.0.0 fast-deep-equal: 3.1.3 multicast-dns: 7.2.4 - dev: false /bonjour/3.5.0: resolution: {integrity: sha1-jokKGD2O6aI5OzhExpGkK897yfU=} @@ -14628,7 +14417,7 @@ packages: multicast-dns-service-types: 1.1.0 /boolbase/1.0.0: - resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} /boxen/5.0.1: resolution: {integrity: sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==} @@ -14642,7 +14431,6 @@ packages: type-fest: 0.20.2 widest-line: 3.1.0 wrap-ansi: 7.0.0 - dev: false /boxen/5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} @@ -14670,7 +14458,6 @@ packages: type-fest: 2.19.0 widest-line: 4.0.1 wrap-ansi: 8.0.1 - dev: false /bplist-parser/0.1.1: resolution: {integrity: sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==} @@ -14835,7 +14622,6 @@ packages: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 - dev: true /btoa-lite/1.0.0: resolution: {integrity: sha1-M3dm2hWAEhD92VbCLpxokaudAzc=} @@ -15129,7 +14915,6 @@ packages: /char-regex/1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - dev: true /character-entities-legacy/1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -15267,7 +15052,6 @@ packages: /cjs-module-lexer/1.2.1: resolution: {integrity: sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==} - dev: true /class-utils/0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} @@ -15299,7 +15083,6 @@ packages: engines: {node: '>= 10.0'} dependencies: source-map: 0.6.1 - dev: false /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} @@ -15312,7 +15095,6 @@ packages: /cli-boxes/3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - dev: false /cli-cursor/3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} @@ -15374,7 +15156,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true /clone-deep/4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} @@ -15406,7 +15187,6 @@ packages: /co/4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true /coa/2.0.2: resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} @@ -15422,7 +15202,6 @@ packages: /collect-v8-coverage/1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true /collection-visit/1.0.0: resolution: {integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=} @@ -15466,7 +15245,6 @@ packages: /combine-promises/1.1.0: resolution: {integrity: sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==} engines: {node: '>=10'} - dev: false /combined-stream/1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -15518,7 +15296,6 @@ packages: /commander/8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - dev: false /common-path-prefix/3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -15607,7 +15384,6 @@ packages: unique-string: 2.0.0 write-file-atomic: 3.0.3 xdg-basedir: 4.0.0 - dev: false /connect-history-api-fallback/1.6.0: resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} @@ -15616,11 +15392,9 @@ packages: /connect-history-api-fallback/2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} - dev: false /consola/2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - dev: false /console-browserify/1.2.0: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} @@ -15637,7 +15411,6 @@ packages: /content-disposition/0.5.2: resolution: {integrity: sha1-DPaLud318r55YcOoUXjLhdunjLQ=} engines: {node: '>= 0.6'} - dev: false /content-disposition/0.5.3: resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} @@ -15668,7 +15441,6 @@ packages: /convert-source-map/2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true /cookie-signature/1.0.6: resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} @@ -15731,7 +15503,6 @@ packages: schema-utils: 4.0.0 serialize-javascript: 6.0.0 webpack: 5.74.0_esbuild@0.14.10 - dev: false /copy-webpack-plugin/9.0.1_webpack@5.74.0: resolution: {integrity: sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==} @@ -15764,7 +15535,6 @@ packages: /core-js-pure/3.21.1: resolution: {integrity: sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==} requiresBuild: true - dev: false /core-js-pure/3.27.0: resolution: {integrity: sha512-fJml7FM6v1HI3Gkg5/Ifc/7Y2qXcJxaDwSROeZGAZfNykSTvUk94WT55TYzJ2lFHK0voSr/d4nOVChLuNCWNpA==} @@ -15779,7 +15549,6 @@ packages: /core-js/3.25.5: resolution: {integrity: sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==} requiresBuild: true - dev: false /core-js/3.27.0: resolution: {integrity: sha512-wY6cKosevs430KRkHUIsvepDXHGjlXOZO3hYXNyqpD6JvB0X28aXyv0t1Y1vZMwE7SoKmtfa6IASHCPN52FwBQ==} @@ -15886,7 +15655,6 @@ packages: /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true /cross-env/7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} @@ -15948,7 +15716,6 @@ packages: /crypto-random-string/2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} - dev: false /css-declaration-sorter/6.3.0_postcss@8.3.6: resolution: {integrity: sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==} @@ -15975,7 +15742,6 @@ packages: postcss: ^8.0.9 dependencies: postcss: 8.4.18 - dev: false /css-functions-list/3.1.0: resolution: {integrity: sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==} @@ -16061,7 +15827,6 @@ packages: postcss-value-parser: 4.2.0 semver: 7.3.7 webpack: 5.74.0_esbuild@0.14.10 - dev: false /css-loader/6.7.3_webpack@5.75.0: resolution: {integrity: sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==} @@ -16132,7 +15897,6 @@ packages: serialize-javascript: 6.0.0 source-map: 0.6.1 webpack: 5.74.0_esbuild@0.14.10 - dev: false /css-select-base-adapter/0.1.1: resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} @@ -16147,16 +15911,6 @@ packages: nth-check: 1.0.2 dev: false - /css-select/4.1.3: - resolution: {integrity: sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==} - dependencies: - boolbase: 1.0.0 - css-what: 5.1.0 - domhandler: 4.3.0 - domutils: 2.8.0 - nth-check: 2.0.1 - dev: true - /css-select/4.2.1: resolution: {integrity: sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==} dependencies: @@ -16248,7 +16002,6 @@ packages: postcss-merge-idents: 5.1.1_postcss@8.4.18 postcss-reduce-idents: 5.2.0_postcss@8.4.18 postcss-zindex: 5.1.0_postcss@8.4.18 - dev: false /cssnano-preset-default/5.2.12_postcss@8.3.6: resolution: {integrity: sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==} @@ -16362,7 +16115,6 @@ packages: postcss-reduce-transforms: 5.1.0_postcss@8.4.18 postcss-svgo: 5.1.0_postcss@8.4.18 postcss-unique-selectors: 5.1.1_postcss@8.4.18 - dev: false /cssnano-utils/3.1.0_postcss@8.3.6: resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} @@ -16389,7 +16141,6 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.18 - dev: false /cssnano/5.0.7_postcss@8.3.6: resolution: {integrity: sha512-7C0tbb298hef3rq+TtBbMuezBQ9VrFtrQEsPNuBKNVgWny/67vdRsnq8EoNu7TRjAHURgYvWlRIpCUmcMZkRzw==} @@ -16426,7 +16177,6 @@ packages: lilconfig: 2.0.4 postcss: 8.4.18 yaml: 1.10.2 - dev: false /csso/4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} @@ -17211,7 +16961,6 @@ packages: /dedent/0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true /deep-equal/1.1.1: resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} @@ -17248,11 +16997,9 @@ packages: /deep-extend/0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false /deep-is/0.1.3: resolution: {integrity: sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw==} - dev: true /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} @@ -17282,7 +17029,6 @@ packages: engines: {node: '>= 10'} dependencies: execa: 5.1.1 - dev: false /defaults/1.0.3: resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} @@ -17348,7 +17094,6 @@ packages: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 - dev: false /delaunator/5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} @@ -17408,7 +17153,6 @@ packages: /detect-newline/3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - dev: true /detect-node/2.0.4: resolution: {integrity: sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==} @@ -17429,7 +17173,6 @@ packages: debug: 2.6.9 transitivePeerDependencies: - supports-color - dev: false /detect-port/1.3.0: resolution: {integrity: sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==} @@ -17462,17 +17205,14 @@ packages: /diff-sequences/27.5.1: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true /diff-sequences/29.3.1: resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true /diff/5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} @@ -17513,7 +17253,6 @@ packages: engines: {node: '>=6'} dependencies: '@leichtgewicht/ip-codec': 2.0.3 - dev: false /dns-txt/2.0.2: resolution: {integrity: sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=} @@ -17532,7 +17271,6 @@ packages: engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dev: true /docusaurus-plugin-sass/0.2.1_2619879d3bac99c21a5b1cdc20972a32: resolution: {integrity: sha512-cRugbRWnKLjFPQTo1k2cyn/AANYkXAPHv+DaLs7bkOfOofEgTSrMdpNidt3oZ0ltQcjUUbvmSRRjH9R1ifdRMA==} @@ -17697,7 +17435,6 @@ packages: engines: {node: '>=8'} dependencies: is-obj: 2.0.0 - dev: false /dotenv-expand/5.1.0: resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} @@ -17731,7 +17468,6 @@ packages: /eastasianwidth/0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false /ecc-jsbn/0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} @@ -17770,7 +17506,6 @@ packages: /emittery/0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - dev: true /emoji-regex/7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} @@ -17780,7 +17515,6 @@ packages: /emoji-regex/9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} @@ -17788,10 +17522,9 @@ packages: /emoticon/3.2.0: resolution: {integrity: sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==} - dev: false /encodeurl/1.0.2: - resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} /end-of-stream/1.4.4: @@ -17848,7 +17581,6 @@ packages: /entities/3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} - dev: false /entities/4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} @@ -17993,7 +17725,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /esbuild-darwin-64/0.13.15: @@ -18009,7 +17740,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /esbuild-darwin-arm64/0.13.15: @@ -18025,7 +17755,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /esbuild-freebsd-64/0.13.15: @@ -18041,7 +17770,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /esbuild-freebsd-arm64/0.13.15: @@ -18057,7 +17785,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /esbuild-linux-32/0.13.15: @@ -18073,7 +17800,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-64/0.13.15: @@ -18089,7 +17815,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-arm/0.13.15: @@ -18105,7 +17830,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-arm64/0.13.15: @@ -18121,7 +17845,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-mips64le/0.13.15: @@ -18137,7 +17860,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-ppc64le/0.13.15: @@ -18153,7 +17875,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-s390x/0.14.10: @@ -18161,7 +17882,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-loader/2.16.0: @@ -18191,7 +17911,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /esbuild-openbsd-64/0.13.15: @@ -18207,7 +17926,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /esbuild-sunos-64/0.13.15: @@ -18223,7 +17941,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /esbuild-windows-32/0.13.15: @@ -18239,7 +17956,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /esbuild-windows-64/0.13.15: @@ -18255,7 +17971,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /esbuild-windows-arm64/0.13.15: @@ -18271,7 +17986,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /esbuild/0.13.15: @@ -18321,7 +18035,6 @@ packages: esbuild-windows-32: 0.14.10 esbuild-windows-64: 0.14.10 esbuild-windows-arm64: 0.14.10 - dev: true /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -18330,10 +18043,9 @@ packages: /escape-goat/2.1.1: resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} engines: {node: '>=8'} - dev: false /escape-html/1.0.3: - resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -18611,7 +18323,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true /eslint-utils/3.0.0_eslint@8.33.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} @@ -18681,7 +18392,6 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true /espree/9.4.0: resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} @@ -18690,7 +18400,6 @@ packages: acorn: 8.8.1 acorn-jsx: 5.3.2_acorn@8.8.1 eslint-visitor-keys: 3.3.0 - dev: true /esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -18702,7 +18411,6 @@ packages: engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -18740,10 +18448,9 @@ packages: /eta/1.12.3: resolution: {integrity: sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg==} engines: {node: '>=6.0.0'} - dev: false /etag/1.8.1: - resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} /eval/0.1.8: @@ -18752,7 +18459,6 @@ packages: dependencies: '@types/node': 17.0.21 require-like: 0.1.2 - dev: false /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} @@ -18842,7 +18548,6 @@ packages: /exit/0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - dev: true /expand-brackets/2.1.4: resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=} @@ -18881,7 +18586,6 @@ packages: jest-matcher-utils: 29.3.1 jest-message-util: 29.3.1 jest-util: 29.3.1 - dev: true /express-rate-limit/5.5.1: resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} @@ -19156,7 +18860,6 @@ packages: /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true /fast-querystring/1.0.0: resolution: {integrity: sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==} @@ -19178,7 +18881,6 @@ packages: resolution: {integrity: sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=} dependencies: punycode: 1.4.1 - dev: false /fastest-levenshtein/1.0.12: resolution: {integrity: sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==} @@ -19230,13 +18932,11 @@ packages: engines: {node: '>=0.8.0'} dependencies: websocket-driver: 0.7.4 - dev: false /fb-watchman/2.0.1: resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} dependencies: bser: 2.1.1 - dev: true /fbemitter/3.0.0: resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} @@ -19294,7 +18994,6 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - dev: true /file-loader/6.2.0_webpack@4.46.0: resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} @@ -19316,7 +19015,6 @@ packages: loader-utils: 2.0.2 schema-utils: 3.1.1 webpack: 5.74.0 - dev: false /file-system-cache/1.1.0: resolution: {integrity: sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==} @@ -19343,7 +19041,6 @@ packages: /filesize/8.0.7: resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} engines: {node: '>= 0.4.0'} - dev: false /fill-range/4.0.0: resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} @@ -19458,11 +19155,9 @@ packages: dependencies: flatted: 3.1.1 rimraf: 3.0.2 - dev: true /flatted/3.1.1: resolution: {integrity: sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==} - dev: true /flush-write-stream/1.1.1: resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} @@ -19522,7 +19217,6 @@ packages: optional: true dependencies: debug: 4.3.4 - dev: false /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -19631,7 +19325,6 @@ packages: tapable: 1.1.3 typescript: 4.9.4 webpack: 5.74.0_esbuild@0.14.10 - dev: false /fork-ts-checker-webpack-plugin/6.5.0_b8acf4014661d551dd10e3dbb645172f: resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} @@ -19748,7 +19441,6 @@ packages: /fraction.js/4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} - dev: false /fragment-cache/0.2.1: resolution: {integrity: sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=} @@ -19922,7 +19614,6 @@ packages: /get-package-type/0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - dev: true /get-port/5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} @@ -20077,7 +19768,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - dev: true /globalthis/1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} @@ -20118,7 +19808,6 @@ packages: ignore: 5.2.0 merge2: 1.4.1 slash: 4.0.0 - dev: false /globby/6.1.0: resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} @@ -20176,7 +19865,6 @@ packages: /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true /graphlib/2.1.8: resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} @@ -20197,7 +19885,6 @@ packages: kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 - dev: false /gzip-size/5.1.1: resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} @@ -20311,7 +19998,6 @@ packages: /has-yarn/2.1.0: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} - dev: false /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -20480,7 +20166,6 @@ packages: /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true /html-minifier-terser/5.1.1: resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==} @@ -20520,7 +20205,6 @@ packages: param-case: 3.0.4 relateurl: 0.2.7 terser: 5.14.2 - dev: false /html-parse-stringify/3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} @@ -20564,7 +20248,6 @@ packages: pretty-error: 4.0.0 tapable: 2.2.0 webpack: 5.74.0_esbuild@0.14.10 - dev: false /html-webpack-plugin/5.5.0_webpack@5.75.0: resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} @@ -20695,7 +20378,6 @@ packages: micromatch: 4.0.5 transitivePeerDependencies: - debug - dev: false /http-proxy/1.18.1_debug@4.3.3: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} @@ -20716,7 +20398,6 @@ packages: requires-port: 1.0.0 transitivePeerDependencies: - debug - dev: false /http-signature/1.3.6: resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} @@ -20841,7 +20522,6 @@ packages: /ignore/5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: true /image-size/1.0.2: resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} @@ -20849,7 +20529,6 @@ packages: hasBin: true dependencies: queue: 6.0.2 - dev: false /immer/8.0.1: resolution: {integrity: sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==} @@ -20857,7 +20536,6 @@ packages: /immer/9.0.12: resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} - dev: false /immutable/4.0.0: resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} @@ -20873,7 +20551,6 @@ packages: /import-lazy/2.1.0: resolution: {integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=} engines: {node: '>=4'} - dev: false /import-lazy/4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} @@ -20895,7 +20572,6 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -21032,7 +20708,6 @@ packages: /ipaddr.js/2.0.1: resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} engines: {node: '>= 10'} - dev: false /is-absolute-url/3.0.3: resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} @@ -21230,7 +20905,6 @@ packages: /is-generator-fn/2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - dev: true /is-generator-function/1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} @@ -21283,7 +20957,6 @@ packages: /is-npm/5.0.0: resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} engines: {node: '>=10'} - dev: false /is-number-object/1.0.5: resolution: {integrity: sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==} @@ -21306,7 +20979,6 @@ packages: /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - dev: false /is-object/1.0.2: resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} @@ -21344,7 +21016,6 @@ packages: /is-plain-obj/3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} - dev: false /is-plain-obj/4.0.0: resolution: {integrity: sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==} @@ -21387,7 +21058,6 @@ packages: /is-root/2.1.0: resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} engines: {node: '>=6'} - dev: false /is-set/2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -21501,7 +21171,6 @@ packages: /is-yarn-global/0.3.0: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - dev: false /isarray/0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -21546,7 +21215,6 @@ packages: /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} - dev: true /istanbul-lib-instrument/5.1.0: resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} @@ -21559,7 +21227,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /istanbul-lib-report/3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} @@ -21568,7 +21235,6 @@ packages: istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 - dev: true /istanbul-lib-source-maps/4.0.0: resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} @@ -21579,7 +21245,6 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true /istanbul-reports/3.1.3: resolution: {integrity: sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==} @@ -21587,7 +21252,6 @@ packages: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - dev: true /istanbul-reports/3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} @@ -21618,7 +21282,6 @@ packages: dependencies: execa: 5.1.1 p-limit: 3.1.0 - dev: true /jest-circus/29.3.1: resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} @@ -21645,7 +21308,6 @@ packages: stack-utils: 2.0.3 transitivePeerDependencies: - supports-color - dev: true /jest-cli/29.3.1_0f89317ef48a2a24b0210d5ddc0c14be: resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} @@ -21673,7 +21335,6 @@ packages: - '@types/node' - supports-color - ts-node - dev: true /jest-config/29.3.1_0f89317ef48a2a24b0210d5ddc0c14be: resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} @@ -21713,7 +21374,6 @@ packages: ts-node: 10.9.1_5cc4fd05cdbba7efed0227e61dc065e1 transitivePeerDependencies: - supports-color - dev: true /jest-config/29.3.1_4c9218cc83705fb930ab54f5e2165d14: resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} @@ -21753,7 +21413,6 @@ packages: ts-node: 10.9.1_5cc4fd05cdbba7efed0227e61dc065e1 transitivePeerDependencies: - supports-color - dev: true /jest-diff/27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} @@ -21763,7 +21422,6 @@ packages: diff-sequences: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 - dev: true /jest-diff/29.3.1: resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} @@ -21773,14 +21431,12 @@ packages: diff-sequences: 29.3.1 jest-get-type: 29.2.0 pretty-format: 29.3.1 - dev: true /jest-docblock/29.2.0: resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 - dev: true /jest-each/29.3.1: resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} @@ -21791,7 +21447,6 @@ packages: jest-get-type: 29.2.0 jest-util: 29.3.1 pretty-format: 29.3.1 - dev: true /jest-environment-jsdom-global/3.1.2_jest-environment-jsdom@29.3.1: resolution: {integrity: sha512-Suq/B0c8OVUYrx05j8ynKqKMzNCTNll72SLxzoTeBtjnsbrScM2Az0dBEBPN8EVTuP1lcgWN0tV0M9+hfkvXHQ==} @@ -21835,17 +21490,14 @@ packages: '@types/node': 17.0.21 jest-mock: 29.3.1 jest-util: 29.3.1 - dev: true /jest-get-type/27.5.1: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true /jest-get-type/29.2.0: resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true /jest-haste-map/26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} @@ -21887,7 +21539,6 @@ packages: walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 - dev: true /jest-junit/12.3.0: resolution: {integrity: sha512-+NmE5ogsEjFppEl90GChrk7xgz8xzvF0f+ZT5AnhW6suJC93gvQtmQjfyjDnE0Z2nXJqEkxF0WXlvjG/J+wn/g==} @@ -21905,7 +21556,6 @@ packages: dependencies: jest-get-type: 29.2.0 pretty-format: 29.3.1 - dev: true /jest-matcher-utils/27.4.6: resolution: {integrity: sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==} @@ -21915,7 +21565,6 @@ packages: jest-diff: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 - dev: true /jest-matcher-utils/29.3.1: resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} @@ -21925,7 +21574,6 @@ packages: jest-diff: 29.3.1 jest-get-type: 29.2.0 pretty-format: 29.3.1 - dev: true /jest-message-util/29.3.1: resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} @@ -21940,7 +21588,6 @@ packages: pretty-format: 29.3.1 slash: 3.0.0 stack-utils: 2.0.3 - dev: true /jest-mock-process/1.5.1_jest@29.3.1: resolution: {integrity: sha512-CPu46KyUiVSxE+LkqBuscqGmy1bvW2vJQuNstt83iLtFaFjgrgmp6LY04IKuOhhlGhcrdi86Gqq5/fTE2wG6lg==} @@ -21965,7 +21612,6 @@ packages: '@jest/types': 29.3.1 '@types/node': 17.0.21 jest-util: 29.3.1 - dev: true /jest-pnp-resolver/1.2.2_jest-resolve@29.3.1: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} @@ -21977,7 +21623,6 @@ packages: optional: true dependencies: jest-resolve: 29.3.1 - dev: true /jest-regex-util/26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} @@ -21987,7 +21632,6 @@ packages: /jest-regex-util/29.2.0: resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true /jest-resolve-dependencies/29.3.1: resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} @@ -21997,7 +21641,6 @@ packages: jest-snapshot: 29.3.1 transitivePeerDependencies: - supports-color - dev: true /jest-resolve/29.3.1: resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} @@ -22012,7 +21655,6 @@ packages: resolve: 1.22.0 resolve.exports: 1.1.0 slash: 3.0.0 - dev: true /jest-runner/29.3.1: resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} @@ -22041,7 +21683,6 @@ packages: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - dev: true /jest-runtime/29.3.1: resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} @@ -22071,7 +21712,6 @@ packages: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - dev: true /jest-serializer/26.6.2: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} @@ -22111,7 +21751,6 @@ packages: semver: 7.3.8 transitivePeerDependencies: - supports-color - dev: true /jest-util/26.6.2: resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} @@ -22135,7 +21774,6 @@ packages: ci-info: 3.2.0 graceful-fs: 4.2.9 picomatch: 2.3.1 - dev: true /jest-validate/29.3.1: resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} @@ -22147,7 +21785,6 @@ packages: jest-get-type: 29.2.0 leven: 3.1.0 pretty-format: 29.3.1 - dev: true /jest-watcher/29.3.1: resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} @@ -22161,7 +21798,6 @@ packages: emittery: 0.13.1 jest-util: 29.3.1 string-length: 4.0.2 - dev: true /jest-worker/26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} @@ -22197,7 +21833,6 @@ packages: jest-util: 29.3.1 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true /jest/29.3.1_0f89317ef48a2a24b0210d5ddc0c14be: resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} @@ -22217,7 +21852,6 @@ packages: - '@types/node' - supports-color - ts-node - dev: true /joi/17.6.0: resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==} @@ -22244,7 +21878,6 @@ packages: /js-sdsl/4.1.4: resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} - dev: true /js-string-escape/1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} @@ -22343,7 +21976,6 @@ packages: /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true /json-stable-stringify/1.0.1: resolution: {integrity: sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=} @@ -22352,7 +21984,7 @@ packages: dev: true /json-stringify-safe/5.0.1: - resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true /json3/3.3.3: @@ -22616,7 +22248,6 @@ packages: engines: {node: '>=8'} dependencies: package-json: 6.5.0 - dev: false /lazy-ass/1.6.0: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} @@ -22652,7 +22283,6 @@ packages: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true /light-my-request/5.6.1: resolution: {integrity: sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==} @@ -22789,7 +22419,6 @@ packages: /loader-utils/3.2.0: resolution: {integrity: sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==} engines: {node: '>= 12.13.0'} - dev: false /loadjs/4.2.0: resolution: {integrity: sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==} @@ -22865,7 +22494,6 @@ packages: /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true /lodash.once/4.1.1: resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} @@ -23006,13 +22634,11 @@ packages: /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true /makeerror/1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 - dev: true /map-age-cleaner/0.1.3: resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} @@ -23196,7 +22822,6 @@ packages: /mdast-util-to-string/2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} - dev: false /mdast-util-to-string/3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} @@ -23644,7 +23269,6 @@ packages: /mime-db/1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} - dev: false /mime-db/1.48.0: resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==} @@ -23659,7 +23283,6 @@ packages: engines: {node: '>= 0.6'} dependencies: mime-db: 1.33.0 - dev: false /mime-types/2.1.31: resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==} @@ -23743,7 +23366,6 @@ packages: dependencies: schema-utils: 4.0.0 webpack: 5.74.0_esbuild@0.14.10 - dev: false /mini-css-extract-plugin/2.7.2_webpack@5.75.0: resolution: {integrity: sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==} @@ -23922,7 +23544,7 @@ packages: engines: {node: '>=10'} /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} /ms/2.1.1: resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} @@ -23985,7 +23607,6 @@ packages: dependencies: dns-packet: 5.3.1 thunky: 1.1.0 - dev: false /mutationobserver-shim/0.3.7: resolution: {integrity: sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ==} @@ -24047,11 +23668,9 @@ packages: /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true /negotiator/0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} @@ -24108,7 +23727,6 @@ packages: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 - dev: false /node-environment-flags/1.0.6: resolution: {integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==} @@ -24135,18 +23753,16 @@ packages: /node-forge/1.2.1: resolution: {integrity: sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==} engines: {node: '>= 6.13.0'} - dev: false /node-html-parser/4.1.5: resolution: {integrity: sha512-NLgqUXtftqnBqIjlRjYSaApaqE7TTxfTiH4VqKCjdUJKFOtUzRwney83EHz2qYc0XoxXAkYdmLjENCuZHvsIFg==} dependencies: - css-select: 4.1.3 + css-select: 4.2.1 he: 1.2.0 dev: true /node-int64/0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true /node-libs-browser/2.2.1: resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} @@ -24913,7 +24529,6 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 - dev: true /ora/5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} @@ -25055,7 +24670,6 @@ packages: dependencies: '@types/retry': 0.12.1 retry: 0.13.1 - dev: false /p-timeout/3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} @@ -25076,7 +24690,6 @@ packages: registry-auth-token: 4.2.1 registry-url: 5.1.0 semver: 6.3.0 - dev: false /pako/1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -25235,7 +24848,7 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} /path-to-regexp/0.1.7: - resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} /path-to-regexp/1.8.0: resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} @@ -25244,7 +24857,6 @@ packages: /path-to-regexp/2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} - dev: false /path-to-regexp/6.2.0: resolution: {integrity: sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==} @@ -25385,7 +24997,6 @@ packages: /pirates/4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - dev: true /pkg-dir/3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} @@ -25411,7 +25022,6 @@ packages: engines: {node: '>=8'} dependencies: find-up: 3.0.0 - dev: false /please-upgrade-node/3.2.0: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} @@ -25434,8 +25044,8 @@ packages: hasBin: true dev: false - /pnpm/7.27.0-0: - resolution: {integrity: sha512-QMYZt0Q4nXxysP33eolNKB/dn8B+Py/cqUVerirUwq9OFJv3a586lxtclvGcsJ8P8rjpEXI8eojdZD/PrdupwA==} + /pnpm/7.27.0: + resolution: {integrity: sha512-nvxGrxgu3oYyw7zg7DdotEnqp9r/c0/iLZHr6QewJPEkVFGSPdsxrm0HFKBkOqwCInoutFzz/mtGx+pbYV8UCw==} engines: {node: '>=14.6'} hasBin: true dev: false @@ -25489,7 +25099,6 @@ packages: postcss: 8.4.18 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 - dev: false /postcss-colormin/5.3.0_postcss@8.3.6: resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==} @@ -25528,7 +25137,6 @@ packages: colord: 2.9.3 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-convert-values/5.1.2_postcss@8.3.6: resolution: {integrity: sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==} @@ -25561,7 +25169,6 @@ packages: browserslist: 4.21.4 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-discard-comments/5.1.2_postcss@8.3.6: resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} @@ -25588,7 +25195,6 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.18 - dev: false /postcss-discard-duplicates/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} @@ -25615,7 +25221,6 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.18 - dev: false /postcss-discard-empty/5.1.1_postcss@8.3.6: resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} @@ -25642,7 +25247,6 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.18 - dev: false /postcss-discard-overridden/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} @@ -25669,7 +25273,6 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.18 - dev: false /postcss-discard-unused/5.1.0_postcss@8.4.16: resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} @@ -25689,7 +25292,6 @@ packages: dependencies: postcss: 8.4.18 postcss-selector-parser: 6.0.10 - dev: false /postcss-flexbugs-fixes/4.2.1: resolution: {integrity: sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==} @@ -25739,7 +25341,6 @@ packages: postcss: 8.4.18 semver: 7.3.8 webpack: 5.74.0_esbuild@0.14.10 - dev: false /postcss-media-query-parser/0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} @@ -25765,7 +25366,6 @@ packages: cssnano-utils: 3.1.0_postcss@8.4.18 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-merge-longhand/5.1.6_postcss@8.3.6: resolution: {integrity: sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==} @@ -25798,7 +25398,6 @@ packages: postcss: 8.4.18 postcss-value-parser: 4.2.0 stylehacks: 5.1.0_postcss@8.4.18 - dev: false /postcss-merge-rules/5.1.2_postcss@8.3.6: resolution: {integrity: sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==} @@ -25837,7 +25436,6 @@ packages: cssnano-utils: 3.1.0_postcss@8.4.18 postcss: 8.4.18 postcss-selector-parser: 6.0.11 - dev: false /postcss-minify-font-values/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} @@ -25867,7 +25465,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-minify-gradients/5.1.1_postcss@8.3.6: resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} @@ -25903,7 +25500,6 @@ packages: cssnano-utils: 3.1.0_postcss@8.4.18 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-minify-params/5.1.3_postcss@8.3.6: resolution: {integrity: sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==} @@ -25939,7 +25535,6 @@ packages: cssnano-utils: 3.1.0_postcss@8.4.18 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-minify-selectors/5.2.1_postcss@8.3.6: resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} @@ -25969,7 +25564,6 @@ packages: dependencies: postcss: 8.4.18 postcss-selector-parser: 6.0.11 - dev: false /postcss-modules-extract-imports/2.0.0: resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} @@ -26106,7 +25700,6 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.18 - dev: false /postcss-normalize-display-values/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} @@ -26136,7 +25729,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-normalize-positions/5.1.1_postcss@8.3.6: resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} @@ -26166,7 +25758,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-normalize-repeat-style/5.1.1_postcss@8.3.6: resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} @@ -26196,7 +25787,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-normalize-string/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} @@ -26226,7 +25816,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-normalize-timing-functions/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} @@ -26256,7 +25845,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-normalize-unicode/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==} @@ -26289,7 +25877,6 @@ packages: browserslist: 4.21.4 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-normalize-url/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} @@ -26322,7 +25909,6 @@ packages: normalize-url: 6.1.0 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-normalize-whitespace/5.1.1_postcss@8.3.6: resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} @@ -26352,7 +25938,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-ordered-values/5.1.3_postcss@8.3.6: resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} @@ -26385,7 +25970,6 @@ packages: cssnano-utils: 3.1.0_postcss@8.4.18 postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-reduce-idents/5.2.0_postcss@8.4.16: resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} @@ -26405,7 +25989,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-reduce-initial/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==} @@ -26438,7 +26021,6 @@ packages: browserslist: 4.21.4 caniuse-api: 3.0.0 postcss: 8.4.18 - dev: false /postcss-reduce-transforms/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} @@ -26468,7 +26050,6 @@ packages: dependencies: postcss: 8.4.18 postcss-value-parser: 4.2.0 - dev: false /postcss-resolve-nested-selector/0.1.1: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} @@ -26489,7 +26070,6 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: false /postcss-selector-parser/6.0.11: resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} @@ -26516,7 +26096,6 @@ packages: dependencies: postcss: 8.4.18 sort-css-media-queries: 2.0.4 - dev: false /postcss-svgo/5.1.0_postcss@8.3.6: resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} @@ -26549,7 +26128,6 @@ packages: postcss: 8.4.18 postcss-value-parser: 4.2.0 svgo: 2.8.0 - dev: false /postcss-unique-selectors/5.1.1_postcss@8.3.6: resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} @@ -26579,7 +26157,6 @@ packages: dependencies: postcss: 8.4.18 postcss-selector-parser: 6.0.11 - dev: false /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -26600,7 +26177,6 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.4.18 - dev: false /postcss/7.0.32: resolution: {integrity: sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==} @@ -26671,7 +26247,6 @@ packages: /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: true /prettier-linter-helpers/1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} @@ -26690,7 +26265,6 @@ packages: resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} engines: {node: '>=10.13.0'} hasBin: true - dev: true /pretty-bytes/5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} @@ -26717,7 +26291,6 @@ packages: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: true /pretty-format/29.3.1: resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} @@ -26726,7 +26299,6 @@ packages: '@jest/schemas': 29.0.0 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true /pretty-hrtime/1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} @@ -26736,7 +26308,6 @@ packages: /pretty-time/1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} - dev: false /prism-react-renderer/1.2.1_react@17.0.2: resolution: {integrity: sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==} @@ -26932,7 +26503,6 @@ packages: engines: {node: '>=8'} dependencies: escape-goat: 2.1.1 - dev: false /pure-color/1.3.0: resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} @@ -26984,7 +26554,6 @@ packages: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: inherits: 2.0.4 - dev: false /quick-format-unescaped/4.0.3: resolution: {integrity: sha512-MaL/oqh02mhEo5m5J2rwsVL23Iw2PEaGVHgT2vFt8AAsr0lfvQA5dpXo9TPu0rz7tSBdUPgkbam0j/fj5ZM8yg==} @@ -27017,7 +26586,6 @@ packages: /range-parser/1.2.0: resolution: {integrity: sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=} engines: {node: '>= 0.6'} - dev: false /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -27071,7 +26639,6 @@ packages: ini: 1.3.8 minimist: 1.2.6 strip-json-comments: 2.0.1 - dev: false /react-base16-styling/0.6.0: resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} @@ -27151,7 +26718,6 @@ packages: - typescript - vue-template-compiler - webpack - dev: false /react-docgen-typescript/2.2.2_typescript@4.9.4: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} @@ -27214,7 +26780,6 @@ packages: /react-error-overlay/6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} - dev: false /react-fast-compare/3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} @@ -27371,7 +26936,6 @@ packages: '@babel/runtime': 7.20.6 react-loadable: /@docusaurus/react-loadable/5.5.2_react@17.0.2 webpack: 5.74.0_esbuild@0.14.10 - dev: false /react-loadable-ssr-addon-v5-slorber/1.0.1_c83a830dd63b7b1afe877d4c76931366: resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} @@ -27483,7 +27047,6 @@ packages: '@babel/runtime': 7.20.6 react: 17.0.2 react-router: 5.3.4_react@17.0.2 - dev: false /react-router-dom/5.3.3_react@17.0.2: resolution: {integrity: sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng==} @@ -27513,7 +27076,6 @@ packages: react-router: 5.3.4_react@17.0.2 tiny-invariant: 1.2.0 tiny-warning: 1.0.3 - dev: false /react-router-dom/5.3.4_react@18.2.0: resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} @@ -27562,7 +27124,6 @@ packages: react-is: 16.13.1 tiny-invariant: 1.2.0 tiny-warning: 1.0.3 - dev: false /react-router/5.3.4_react@18.2.0: resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} @@ -27825,7 +27386,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: minimatch: 3.0.4 - dev: false /redent/1.0.0: resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} @@ -27900,7 +27460,6 @@ packages: /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - dev: true /regexpu-core/5.1.0: resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} @@ -27918,14 +27477,12 @@ packages: engines: {node: '>=6.0.0'} dependencies: rc: 1.2.8 - dev: false /registry-url/5.1.0: resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} engines: {node: '>=8'} dependencies: rc: 1.2.8 - dev: false /regjsgen/0.6.0: resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} @@ -27946,7 +27503,6 @@ packages: emoticon: 3.2.0 node-emoji: 1.11.0 unist-util-visit: 2.0.3 - dev: false /remark-external-links/8.0.0: resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} @@ -28087,7 +27643,6 @@ packages: /require-like/0.1.2: resolution: {integrity: sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=} - dev: false /require-main-filename/2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -28109,7 +27664,6 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - dev: true /resolve-from/3.0.0: resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} @@ -28122,7 +27676,6 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: true /resolve-pathname/3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} @@ -28133,7 +27686,6 @@ packages: /resolve.exports/1.1.0: resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} engines: {node: '>=10'} - dev: true /resolve/1.17.0: resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} @@ -28195,7 +27747,6 @@ packages: /retry/0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - dev: false /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -28234,7 +27785,6 @@ packages: /rtl-detect/1.0.4: resolution: {integrity: sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==} - dev: false /rtlcss/3.5.0: resolution: {integrity: sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==} @@ -28466,7 +28016,6 @@ packages: dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 - dev: false /secure-json-parse/2.5.0: resolution: {integrity: sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==} @@ -28490,7 +28039,6 @@ packages: engines: {node: '>=10'} dependencies: node-forge: 1.2.1 - dev: false /semver-compare/1.0.0: resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=} @@ -28501,7 +28049,6 @@ packages: engines: {node: '>=8'} dependencies: semver: 6.3.0 - dev: false /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} @@ -28608,7 +28155,6 @@ packages: path-is-inside: 1.0.2 path-to-regexp: 2.2.1 range-parser: 1.2.0 - dev: false /serve-index/1.9.1: resolution: {integrity: sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=} @@ -28623,7 +28169,6 @@ packages: parseurl: 1.3.3 transitivePeerDependencies: - supports-color - dev: false /serve-index/1.9.1_supports-color@6.1.0: resolution: {integrity: sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=} @@ -28730,7 +28275,6 @@ packages: /shell-quote/1.7.3: resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} - dev: false /shelljs/0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} @@ -28803,7 +28347,6 @@ packages: /slash/4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - dev: false /slice-ansi/3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} @@ -28905,7 +28448,6 @@ packages: faye-websocket: 0.11.4 uuid: 8.3.2 websocket-driver: 0.7.4 - dev: false /sonic-boom/2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} @@ -28926,7 +28468,6 @@ packages: /sort-css-media-queries/2.0.4: resolution: {integrity: sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==} engines: {node: '>= 6.3.0'} - dev: false /source-list-map/2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} @@ -28954,7 +28495,6 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true /source-map-support/0.5.19: resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} @@ -29037,7 +28577,6 @@ packages: wbuf: 1.7.3 transitivePeerDependencies: - supports-color - dev: false /spdy-transport/3.0.0_supports-color@6.1.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -29062,7 +28601,6 @@ packages: spdy-transport: 3.0.0 transitivePeerDependencies: - supports-color - dev: false /spdy/4.0.2_supports-color@6.1.0: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} @@ -29131,7 +28669,6 @@ packages: engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - dev: true /stackframe/1.2.0: resolution: {integrity: sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==} @@ -29163,7 +28700,6 @@ packages: /std-env/3.0.1: resolution: {integrity: sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==} - dev: false /steno/0.4.4: resolution: {integrity: sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=} @@ -29225,7 +28761,6 @@ packages: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: true /string-width/2.1.1: resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} @@ -29258,7 +28793,6 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.0.1 - dev: false /string.prototype.matchall/4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} @@ -29373,12 +28907,10 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: false /strip-bom-string/1.0.0: resolution: {integrity: sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=} engines: {node: '>=0.10.0'} - dev: false /strip-bom/2.0.0: resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} @@ -29395,7 +28927,6 @@ packages: /strip-bom/4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - dev: true /strip-eof/1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} @@ -29424,7 +28955,6 @@ packages: /strip-json-comments/2.0.1: resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} engines: {node: '>=0.10.0'} - dev: false /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -29501,7 +29031,6 @@ packages: browserslist: 4.21.4 postcss: 8.4.18 postcss-selector-parser: 6.0.11 - dev: false /stylelint-config-recommended/7.0.0_stylelint@14.16.1: resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==} @@ -29663,7 +29192,6 @@ packages: /svg-parser/2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - dev: false /svg-tags/1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} @@ -29921,7 +29449,6 @@ packages: serialize-javascript: 6.0.0 terser: 5.14.2 webpack: 5.74.0 - dev: false /terser-webpack-plugin/5.3.6_webpack@5.75.0: resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} @@ -29984,7 +29511,6 @@ packages: '@istanbuljs/schema': 0.1.3 glob: 7.2.0 minimatch: 3.1.2 - dev: true /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -30050,7 +29576,6 @@ packages: /tmpl/1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true /to-arraybuffer/1.0.1: resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} @@ -30207,7 +29732,6 @@ packages: typescript: 4.9.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true /ts-pnp/1.2.0_typescript@4.9.4: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} @@ -30294,12 +29818,10 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - dev: true /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - dev: true /type-fest/0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} @@ -30318,7 +29840,6 @@ packages: /type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - dev: true /type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} @@ -30421,7 +29942,6 @@ packages: resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true - dev: true /ua-parser-js/0.7.31: resolution: {integrity: sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==} @@ -30510,7 +30030,6 @@ packages: is-plain-obj: 2.1.0 trough: 1.0.5 vfile: 4.2.1 - dev: false /union-value/1.0.1: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} @@ -30538,7 +30057,6 @@ packages: engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 - dev: false /unist-builder/2.0.3: resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} @@ -30655,7 +30173,7 @@ packages: dev: false /unpipe/1.0.0: - resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} /unquote/1.1.1: @@ -30714,7 +30232,6 @@ packages: semver: 7.3.8 semver-diff: 3.1.1 xdg-basedir: 4.0.0 - dev: false /update-ts-references/2.4.1_typescript@4.9.4: resolution: {integrity: sha512-t5o/ijSiFhm67hmVN0m+lOkUopV3MYYZE/lhd3bYaGTCkU+3TpnfRxP/OoxRdapzPOuZaxVBmMwjtW1lN8WoqA==} @@ -30790,7 +30307,6 @@ packages: mime-types: 2.1.31 schema-utils: 3.1.1 webpack: 5.74.0 - dev: false /url-loader/4.1.1_webpack@5.75.0: resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} @@ -31006,7 +30522,6 @@ packages: /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} @@ -31019,7 +30534,6 @@ packages: '@jridgewell/trace-mapping': 0.3.15 '@types/istanbul-lib-coverage': 2.0.3 convert-source-map: 1.8.0 - dev: true /v8flags/3.2.0: resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} @@ -31043,7 +30557,7 @@ packages: resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} /vary/1.1.2: - resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} /verror/1.10.0: @@ -31133,13 +30647,11 @@ packages: rxjs: 7.5.4 transitivePeerDependencies: - debug - dev: false /walker/1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 - dev: true /watchpack-chokidar2/2.0.1: resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} @@ -31244,7 +30756,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /webpack-bundle-analyzer/4.7.0: resolution: {integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==} @@ -31416,7 +30927,6 @@ packages: range-parser: 1.2.1 schema-utils: 4.0.0 webpack: 5.74.0_esbuild@0.14.10 - dev: false /webpack-dev-server/3.11.3_78c1cd1c404fc7ed0a3af68b1f6f4aa1: resolution: {integrity: sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==} @@ -31565,7 +31075,6 @@ packages: - debug - supports-color - utf-8-validate - dev: false /webpack-filter-warnings-plugin/1.2.1_webpack@4.46.0: resolution: {integrity: sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==} @@ -31762,7 +31271,6 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: false /webpack/5.74.0_esbuild@0.14.10: resolution: {integrity: sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==} @@ -31895,7 +31403,6 @@ packages: pretty-time: 1.1.0 std-env: 3.0.1 webpack: 5.74.0_esbuild@0.14.10 - dev: false /websocket-driver/0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} @@ -32022,7 +31529,6 @@ packages: engines: {node: '>=12'} dependencies: string-width: 5.1.2 - dev: false /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} @@ -32030,7 +31536,6 @@ packages: /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - dev: true /wordwrap/1.0.0: resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} @@ -32078,7 +31583,6 @@ packages: ansi-styles: 6.1.0 string-width: 5.1.2 strip-ansi: 7.0.1 - dev: false /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -32097,7 +31601,6 @@ packages: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true /ws/6.2.1: resolution: {integrity: sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==} @@ -32148,7 +31651,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /x-default-browser/0.4.0: resolution: {integrity: sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==} @@ -32160,7 +31662,6 @@ packages: /xdg-basedir/4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} - dev: false /xml-js/1.6.11: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} @@ -32192,7 +31693,6 @@ packages: /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist/2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -32234,7 +31734,6 @@ packages: /yargs-parser/21.0.0: resolution: {integrity: sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==} engines: {node: '>=12'} - dev: true /yargs/13.3.2: resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} @@ -32291,7 +31790,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.0.0 - dev: true /yarn/1.22.19: resolution: {integrity: sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==} @@ -32310,7 +31808,6 @@ packages: /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}