From 96e2def3171106c6ffa86876231e7daa9c2ce074 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Sun, 10 Nov 2024 06:54:33 +0300 Subject: [PATCH 01/18] fix: Replace local trim with ts-dedent --- .../translate/providers/yandex/config.ts | 19 +++++------ src/config/index.ts | 32 +++---------------- 2 files changed, 15 insertions(+), 36 deletions(-) diff --git a/src/commands/translate/providers/yandex/config.ts b/src/commands/translate/providers/yandex/config.ts index ee833684..fb85f745 100644 --- a/src/commands/translate/providers/yandex/config.ts +++ b/src/commands/translate/providers/yandex/config.ts @@ -1,5 +1,7 @@ import {cyan, gray} from 'chalk'; -import {option, trim} from '~/config'; +import {dedent} from 'ts-dedent'; + +import {option} from '~/config'; const folder = option({ flags: '--folder ', @@ -9,14 +11,13 @@ const folder = option({ `, }); -const configExample = trim( - gray(` -glossaryPairs: - - sourceText: string - translatedText: string - - sourceText: string - translatedText: string`), -); +const configExample = gray(dedent` + glossaryPairs: + - sourceText: string + translatedText: string + - sourceText: string + translatedText: string +`); const glossary = option({ flags: '--glossary ', diff --git a/src/config/index.ts b/src/config/index.ts index f482108a..435d362a 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -4,29 +4,7 @@ import {Command as BaseCommand, Help as BaseHelp, Option} from 'commander'; import {identity} from 'lodash'; import {cyan, yellow} from 'chalk'; import {load} from 'js-yaml'; - -const getPadX = (string: string) => { - const match = /^(\s+)/.exec(string); - const pad = (match && match[1]) || ''; - - return new RegExp('^[\\s]{0,' + pad.length + '}'); -}; - -export function trim(string: string | TemplateStringsArray): string { - let lines = Array.isArray(string) ? (string as string[]) : (string as string).split('\n'); - - let pad: RegExp; - if (lines[0].trim() === '') { - pad = getPadX(lines[1]); - lines = lines.slice(1); - } else { - pad = getPadX(lines[0]); - } - - lines = lines.map((line) => line.replace(pad, '')); - - return lines.join('\n').trim(); -} +import {dedent} from 'ts-dedent'; export function toArray(value: string | string[], previous: string | string[]) { value = ([] as string[]).concat(value); @@ -256,13 +234,13 @@ export class Help extends BaseHelp { commandUsage(command: Command) { const usage = super.commandUsage(command); - return trim(usage.replace(/{{PROGRAM}}/g, cmd(command))); + return dedent(usage.replace(/{{PROGRAM}}/g, cmd(command))); } commandDescription(command: Command) { const desc = super.commandDescription(command); - return trim(desc.replace(/{{PROGRAM}}/g, cmd(command))); + return dedent(desc.replace(/{{PROGRAM}}/g, cmd(command))); } optionDescription(option: ExtendedOption) { @@ -287,10 +265,10 @@ export class Help extends BaseHelp { } if (extraInfo.length > 0) { - return trim(option.description) + `\n\n${cyan(extraInfo.join(' '))}\n\n\n`; + return dedent(option.description) + `\n\n${cyan(extraInfo.join(' '))}\n\n\n`; } - return trim(option.description) + '\n\n\n'; + return dedent(option.description) + '\n\n\n'; } // Ugly method - copypasted from commander source From 072c8b0dc5ac09e83c4199d9c20dcae04c2c76d7 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Sun, 10 Nov 2024 06:56:19 +0300 Subject: [PATCH 02/18] fix: Improve some types --- src/models.ts | 12 ++++-------- src/program/base.ts | 2 +- src/program/index.ts | 2 +- src/program/types.ts | 6 +++--- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/models.ts b/src/models.ts index a7bef3fb..044d301b 100644 --- a/src/models.ts +++ b/src/models.ts @@ -7,7 +7,7 @@ import {LintConfig} from '@diplodoc/transform/lib/yfmlint'; import {IncludeMode, Lang, ResourceType, Stage} from './constants'; import {FileContributors, VCSConnector, VCSConnectorConfig} from './vcs-connector/connector-models'; -export type VarsPreset = 'internal' | 'external'; +export type VarsPreset = string; export type VarsMetadata = { [field: string]: string; @@ -51,7 +51,7 @@ interface VCSConfiguration { * * you should pass `https://github.com/foo-org/bar/tree/main/docs` as a value for this parameter. */ - remoteBase: string; + remoteBase?: string; } interface YfmConfig { @@ -152,18 +152,14 @@ export interface YfmTocInclude { export type YfmTocIncluders = YfmTocIncluder[]; export type YfmTocIncluder = { - name: YfmTocIncluderName; + name: string; // arbitrary includer parameters // eslint-disable-next-line @typescript-eslint/no-explicit-any } & Record; -export const includersNames = ['sourcedocs', 'openapi', 'generic', 'unarchive'] as const; - -export type YfmTocIncluderName = (typeof includersNames)[number]; - // eslint-disable-next-line @typescript-eslint/no-explicit-any export type Includer = { - name: YfmTocIncluderName; + name: string; includerFunction: IncluderFunction; }; diff --git a/src/program/base.ts b/src/program/base.ts index f5421b7f..2d538232 100644 --- a/src/program/base.ts +++ b/src/program/base.ts @@ -88,7 +88,7 @@ export const BaseProgram = < } } - apply(program?: IProgram) { + apply(program?: IProgram) { // @ts-ignore this['parent'] = program; diff --git a/src/program/index.ts b/src/program/index.ts index 6c4b53af..5569a91c 100644 --- a/src/program/index.ts +++ b/src/program/index.ts @@ -42,7 +42,7 @@ export class Program }), }, }) - implements IProgram + implements IProgram { readonly command: Command = new Command(NAME) .helpOption(true) diff --git a/src/program/types.ts b/src/program/types.ts index cd4384f7..24b1558e 100644 --- a/src/program/types.ts +++ b/src/program/types.ts @@ -5,8 +5,8 @@ import type {Logger} from '~/logger'; // eslint-disable-next-line @typescript-eslint/no-explicit-any type Hooks = Record | HookMap>; -export interface ICallable { - apply(program?: IProgram): void; +export interface ICallable { + apply(program?: IProgram): void; } /** @@ -28,7 +28,7 @@ export interface ICallable { * 5. Complex hook calls should be designed as external private methods named as 'hookMethodName' * (example: hookConfig) */ -export interface IProgram extends ICallable { +export interface IProgram extends ICallable { command: Command; parent?: IParent; From 9ad3d670af24726d9c9d2fcb5ef1046f4a1fbaf2 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Sun, 10 Nov 2024 06:57:28 +0300 Subject: [PATCH 03/18] chore: Add tests for publish command --- src/commands/publish/__tests__/index.ts | 84 +++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/commands/publish/__tests__/index.ts diff --git a/src/commands/publish/__tests__/index.ts b/src/commands/publish/__tests__/index.ts new file mode 100644 index 00000000..439d19e1 --- /dev/null +++ b/src/commands/publish/__tests__/index.ts @@ -0,0 +1,84 @@ +import type {Run} from '../run'; +import type {Mock} from 'vitest'; +import type {PublishConfig} from '..'; + +import {expect, it, vi} from 'vitest'; +import {Publish} from '..'; +import {upload as originalUpload} from '../upload'; + +export const upload = originalUpload as Mock; + +// eslint-disable-next-line no-var +var resolveConfig: Mock; + +vi.mock('../upload'); +vi.mock('~/config', async (importOriginal) => { + resolveConfig = vi.fn((_path, {defaults, fallback}) => { + return defaults || fallback; + }); + + return { + ...((await importOriginal()) as {}), + resolveConfig, + }; +}); + +export async function runPublish(args: string) { + const publish = new Publish(); + + publish.apply(); + + await publish.parse(['node', 'index'].concat(args.split(' '))); +} + +type DeepPartial = { + [P in keyof T]?: T[P] extends Record ? DeepPartial : T[P]; +}; + +export function testConfig(name: string, args: string, result: DeepPartial): void; +export function testConfig(name: string, args: string, result: Error | string): void; +export function testConfig( + name: string, + args: string, + config: DeepPartial, + result: DeepPartial, +): void; +export function testConfig( + name: string, + args: string, + config: DeepPartial, + result: Error | string, +): void; +export function testConfig(name: string, args: string, config: any, result?: any): void { + it(name, async () => { + if (!result) { + result = config; + config = {}; + } + + resolveConfig.mockImplementation((_path, {defaults}) => { + return { + ...defaults, + ...config, + }; + }); + + upload.mockImplementation((run: Run) => { + expect(run.config).toMatchObject(result as Partial); + }); + + try { + await runPublish('--input ./input --access-key-id 1 --secret-access-key 1 ' + args); + expect(upload).toBeCalled(); + } catch (error: any) { + const message = error.message || error; + if (result instanceof Error) { + expect(message).toEqual(result.message); + } else if (typeof result === 'string') { + expect(message).toEqual(result); + } else { + throw error; + } + } + }); +} From 8e6063d1254e75e13be05f5875a6983d0b80794a Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Sun, 10 Nov 2024 06:59:01 +0300 Subject: [PATCH 04/18] feat: **BREAKING** Drop internal build publish functionality --- src/cmd/build/index.ts | 26 -------------------------- src/models.ts | 7 ------- 2 files changed, 33 deletions(-) diff --git a/src/cmd/build/index.ts b/src/cmd/build/index.ts index 2c9f052e..91790952 100644 --- a/src/cmd/build/index.ts +++ b/src/cmd/build/index.ts @@ -20,7 +20,6 @@ import { } from '../../steps'; import {prepareMapFile} from '../../steps/processMapFile'; import {copyFiles, logger} from '../../utils'; -import {upload as publishFilesToS3} from '../../commands/publish/upload'; export const build = { command: ['build', '$0'], @@ -197,7 +196,6 @@ async function handler(args: Arguments) { const { output: outputFolderPath, outputFormat, - publish, lintDisabled, buildDisabled, addMapFile, @@ -245,30 +243,6 @@ async function handler(args: Arguments) { if (glob.sync('.*', {cwd: tmpOutputFolder}).length) { shell.cp('-r', join(tmpOutputFolder, '.*'), userOutputFolder); } - - if (publish) { - const DEFAULT_PREFIX = process.env.YFM_STORAGE_PREFIX ?? ''; - const { - ignore = [], - storageRegion, - storageEndpoint: endpoint, - storageBucket: bucket, - storagePrefix: prefix = DEFAULT_PREFIX, - storageKeyId: accessKeyId, - storageSecretKey: secretAccessKey, - } = ArgvService.getConfig(); - - await publishFilesToS3({ - input: userOutputFolder, - region: storageRegion, - ignore: [...ignore, TMP_INPUT_FOLDER, TMP_OUTPUT_FOLDER], - endpoint, - bucket, - prefix, - accessKeyId, - secretAccessKey, - }); - } } } catch (err) { logger.error('', err.message); diff --git a/src/models.ts b/src/models.ts index 044d301b..edd60b8a 100644 --- a/src/models.ts +++ b/src/models.ts @@ -98,13 +98,6 @@ export interface YfmArgv extends YfmConfig { input: string; output: string; quiet: string; - publish: boolean; - storageEndpoint: string; - storageBucket: string; - storagePrefix: string; - storageKeyId: string; - storageSecretKey: string; - storageRegion: string; contributors: boolean; ignoreAuthorPatterns: string; addSystemMeta: boolean; From cb7ca019a58c809bb8d18e3a321ee3ac6729dc4a Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Sun, 10 Nov 2024 07:01:47 +0300 Subject: [PATCH 05/18] chore: Drop useless `deprecated` helper --- src/config/index.ts | 13 ------------- src/index.ts | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/src/config/index.ts b/src/config/index.ts index 435d362a..040c5fed 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -73,19 +73,6 @@ export const strictScope = (scopeName: string) => (config: Hash) => { } }; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const deprecated = (config: Hash, option: string, value: () => any) => { - Object.defineProperty(config, option, { - enumerable: false, - get: () => { - // TODO: uncomment under system flag - // console.warn(`DEPRECATED: Option ${ option } is deprecated`); - - return value(); - }, - }); -}; - export const defined = (option: string, ...scopes: Hash[]) => { for (const scope of scopes) { if (option in scope) { diff --git a/src/index.ts b/src/index.ts index 3178ea6f..b084cc49 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,7 +4,7 @@ export type {ICallable, IProgram, ProgramConfig, ProgramArgs} from './program'; export {Program} from './program'; export type {Config, OptionInfo} from './config'; -export {Command, option, deprecated} from './config'; +export {Command, option} from './config'; import {Program} from './program'; From 0aea02a57b80a7369a28e260251f91d4ba626b47 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Sun, 10 Nov 2024 07:03:40 +0300 Subject: [PATCH 06/18] chore: Override node:path API for precise path managing --- src/commands/translate/__tests__/index.ts | 4 -- .../translate/providers/yandex/index.ts | 14 ++++-- src/config/index.ts | 12 ++--- src/globals.d.ts | 49 ++++++++++++++++++- src/program/index.ts | 4 +- 5 files changed, 67 insertions(+), 16 deletions(-) diff --git a/src/commands/translate/__tests__/index.ts b/src/commands/translate/__tests__/index.ts index 229c9dad..e034314d 100644 --- a/src/commands/translate/__tests__/index.ts +++ b/src/commands/translate/__tests__/index.ts @@ -29,10 +29,6 @@ export async function runTranslate(args: string) { return translate; } -type DeepPartial = { - [P in keyof T]?: T[P] extends Record ? DeepPartial : T[P]; -}; - export function testConfig(defaultArgs: string) { function _testConfig(name: string, args: string, result: DeepPartial): void; function _testConfig(name: string, args: string, result: Error | string): void; diff --git a/src/commands/translate/providers/yandex/index.ts b/src/commands/translate/providers/yandex/index.ts index 71841ed9..c179187f 100644 --- a/src/commands/translate/providers/yandex/index.ts +++ b/src/commands/translate/providers/yandex/index.ts @@ -1,6 +1,7 @@ import type {IProgram} from '~/program'; import type {TranslateArgs, TranslateConfig} from '~/commands/translate'; import {ok} from 'assert'; +import {resolve} from 'node:path'; import {Translate} from '~/commands/translate'; import {defined, resolveConfig} from '~/config'; import {Provider} from './provider'; @@ -68,11 +69,18 @@ export class Extension { ok(config.auth, 'Required param auth is not configured'); ok(config.folder, 'Required param folder is not configured'); - const glossary = defined('glossary', args, config); - if (glossary) { - const glossaryConfig = await resolveConfig(config.glossary, { + if (defined('glossary', args, config)) { + let glossary: AbsolutePath; + if (defined('glossary', args)) { + glossary = resolve(args.input, args.glossary); + } else { + glossary = config.resolve(config.glossary); + } + + const glossaryConfig = await resolveConfig(glossary, { defaults: {glossaryPairs: []}, }); + config.glossaryPairs = glossaryConfig.glossaryPairs || []; } else { config.glossaryPairs = []; diff --git a/src/config/index.ts b/src/config/index.ts index 040c5fed..c3105c9c 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -135,11 +135,9 @@ export function option(o: OptionInfo) { export const configPath = Symbol('configPath'); -export const configRoot = Symbol('configRoot'); - type ConfigUtils = { [configPath]?: string; - [configRoot]: string; + resolve(subpath: string): AbsolutePath; }; export type Config = T & ConfigUtils; @@ -147,13 +145,15 @@ export type Config = T & ConfigUtils; export function withConfigUtils(path: string, config: T): Config { return { ...config, - [configRoot]: dirname(resolve(path)), + resolve(subpath: string): AbsolutePath { + return resolve(dirname(path), subpath) as AbsolutePath; + }, [configPath]: resolve(path), }; } export async function resolveConfig( - path: string, + path: AbsolutePath, { defaults, fallback, @@ -165,7 +165,7 @@ export async function resolveConfig( } = {}, ): Promise> { try { - const content = await readFile(resolve(path), 'utf8'); + const content = await readFile(path, 'utf8'); const data = load(content) as Hash; return withConfigUtils(path, { diff --git a/src/globals.d.ts b/src/globals.d.ts index 7b06d9c4..82e34041 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -1,3 +1,50 @@ -declare const VERSION: string; +const VERSION: string; type Hash = Record; + +type DeepPartial = { + [P in keyof T]?: T[P] extends Record ? DeepPartial : T[P]; +}; + +type UnresolvedPath = string & { + __type: 'unresolved'; +}; + +type AbsolutePath = string & { + __type: 'absolute'; +}; + +type RelativePath = string & { + __type: 'relative'; +}; + +type NormalizedPath = string & { + __type: 'normalized'; +}; + +type AnyPath = string | UnresolvedPath | AbsolutePath | RelativePath | NormalizedPath; + +declare module "path" { + namespace path { + interface PlatformPath extends PlatformPath { + normalize(path: T): T; + + join(path: T, ...paths: string[]): T; + + resolve(...paths: string[]): AbsolutePath; + + isAbsolute(path: AnyPath): path is AbsolutePath; + + relative(from: AnyPath, to: AnyPath): RelativePath; + + dirname(path: T): T; + + basename(path: AnyPath, suffix?: string): RelativePath; + + extname(path: AnyPath): string; + } + } + + const path: path.PlatformPath; + export = path; +} diff --git a/src/program/index.ts b/src/program/index.ts index 5569a91c..5233f19d 100644 --- a/src/program/index.ts +++ b/src/program/index.ts @@ -1,7 +1,7 @@ import type {ICallable, IParent, IProgram} from './types'; import {resolve} from 'node:path'; -import {Command, Config, configRoot} from '~/config'; +import {Command, Config} from '~/config'; import {YFM_CONFIG_FILENAME} from '~/constants'; import {Build, Publish, Translate} from '~/commands'; @@ -103,7 +103,7 @@ export class Program const configExtensions: ExtensionInfo[] = (config.extensions || []).map( (ext: ExtensionInfo | string) => { const extPath = typeof ext === 'string' ? ext : ext.path; - const path = isRelative(extPath) ? resolve(config[configRoot], extPath) : extPath; + const path = isRelative(extPath) ? config.resolve(extPath) : extPath; const options = typeof ext === 'string' ? {} : ext.options || {}; return {path, options}; From 6e99312f54a383b3020404d9d870da19f03c5617 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 12:38:45 +0300 Subject: [PATCH 07/18] fix: Fix some lint and typecheck errors --- src/commands/publish/__tests__/index.ts | 3 +++ src/commands/publish/run.ts | 2 +- src/commands/translate/commands/compose.ts | 4 ++-- src/commands/translate/commands/extract.ts | 10 +++++----- src/commands/translate/index.ts | 4 ++-- .../translate/providers/yandex/index.ts | 2 +- .../translate/providers/yandex/provider.ts | 4 ++++ .../providers/yandex/utils/errors.ts | 2 +- .../translate/providers/yandex/utils/index.ts | 2 +- src/commands/translate/utils/config.ts | 7 ++----- src/commands/translate/utils/fs.ts | 1 + src/commands/translate/utils/translate.ts | 8 ++++---- src/config/index.ts | 10 +++++++--- src/globals.d.ts | 7 ++++--- src/index.ts | 3 +++ src/models.ts | 19 +++++++++---------- src/program/base.ts | 3 ++- src/program/index.ts | 8 ++++---- 18 files changed, 56 insertions(+), 43 deletions(-) diff --git a/src/commands/publish/__tests__/index.ts b/src/commands/publish/__tests__/index.ts index 439d19e1..f0f5e162 100644 --- a/src/commands/publish/__tests__/index.ts +++ b/src/commands/publish/__tests__/index.ts @@ -32,6 +32,7 @@ export async function runPublish(args: string) { } type DeepPartial = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any [P in keyof T]?: T[P] extends Record ? DeepPartial : T[P]; }; @@ -49,6 +50,7 @@ export function testConfig( config: DeepPartial, result: Error | string, ): void; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export function testConfig(name: string, args: string, config: any, result?: any): void { it(name, async () => { if (!result) { @@ -70,6 +72,7 @@ export function testConfig(name: string, args: string, config: any, result?: any try { await runPublish('--input ./input --access-key-id 1 --secret-access-key 1 ' + args); expect(upload).toBeCalled(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { const message = error.message || error; if (result instanceof Error) { diff --git a/src/commands/publish/run.ts b/src/commands/publish/run.ts index be496a4d..b9c7dcdf 100644 --- a/src/commands/publish/run.ts +++ b/src/commands/publish/run.ts @@ -31,7 +31,7 @@ export class Run { }); this.logger = new Logger(config, [ - (level, message) => message.replace(new RegExp(this.root, 'ig'), ''), + (_level, message) => message.replace(new RegExp(this.root, 'ig'), ''), ]); } diff --git a/src/commands/translate/commands/compose.ts b/src/commands/translate/commands/compose.ts index 1ff41504..fe17914f 100644 --- a/src/commands/translate/commands/compose.ts +++ b/src/commands/translate/commands/compose.ts @@ -120,7 +120,7 @@ export class Compose this.logger.compose(file.path); await configuredPipeline(file); this.logger.composed(file.path); - } catch (error: any) { + } catch (error: unknown) { if (error instanceof TranslateError) { this.logger.composeError(file.path, `${error.message}`); @@ -128,7 +128,7 @@ export class Compose process.exit(1); } } else { - this.logger.error(file.path, error.message); + this.logger.error(file.path, error); } } }), diff --git a/src/commands/translate/commands/extract.ts b/src/commands/translate/commands/extract.ts index 849b04b0..9d1ec694 100644 --- a/src/commands/translate/commands/extract.ts +++ b/src/commands/translate/commands/extract.ts @@ -33,7 +33,7 @@ export type ExtractArgs = ProgramArgs & { target?: string | string[]; include?: string[]; exclude?: string[]; - vars?: Record; + vars?: Hash; useExperimentalParser?: boolean; }; @@ -45,7 +45,7 @@ export type ExtractConfig = Pick & exclude: string[]; files: string[]; skipped: [string, string][]; - vars: Record; + vars: Hash; useExperimentalParser?: boolean; }; @@ -154,7 +154,7 @@ export class Extract this.logger.extract(file); await configuredPipeline(file); this.logger.extracted(file); - } catch (error: any) { + } catch (error: unknown) { if (error instanceof TranslateError) { if (error instanceof SkipTranslation) { this.logger.skipped([[error.reason, file]]); @@ -167,7 +167,7 @@ export class Extract process.exit(1); } } else { - this.logger.error(file, error.message); + this.logger.error(file, error); } } }), @@ -181,7 +181,7 @@ export type PipelineParameters = { output: string; source: ExtractOptions['source']; target: ExtractOptions['target']; - vars: Record; + vars: Hash; useExperimentalParser?: boolean; }; diff --git a/src/commands/translate/index.ts b/src/commands/translate/index.ts index abe873aa..396c59b7 100644 --- a/src/commands/translate/index.ts +++ b/src/commands/translate/index.ts @@ -43,7 +43,7 @@ export type TranslateArgs = ProgramArgs & { target?: string | string[]; include?: string[]; exclude?: string[]; - vars?: Record; + vars?: Hash; }; export type TranslateConfig = Pick & { @@ -55,7 +55,7 @@ export type TranslateConfig = Pick exclude: string[]; files: string[]; skipped: [string, string][]; - vars: Record; + vars: Hash; dryRun: boolean; }; diff --git a/src/commands/translate/providers/yandex/index.ts b/src/commands/translate/providers/yandex/index.ts index c179187f..ef01c301 100644 --- a/src/commands/translate/providers/yandex/index.ts +++ b/src/commands/translate/providers/yandex/index.ts @@ -91,7 +91,7 @@ export class Extension { const provider = new Provider(config); - provider.logger.pipe(program.logger); + provider.pipe(program.logger); return provider; }); diff --git a/src/commands/translate/providers/yandex/provider.ts b/src/commands/translate/providers/yandex/provider.ts index ef8e79b6..71ba2845 100644 --- a/src/commands/translate/providers/yandex/provider.ts +++ b/src/commands/translate/providers/yandex/provider.ts @@ -24,6 +24,10 @@ export class Provider { this.logger = new TranslateLogger(config); } + pipe(logger: Logger) { + this.logger.pipe(logger); + } + async skip(skipped: [string, string][]) { this.logger.skipped(skipped); } diff --git a/src/commands/translate/providers/yandex/utils/errors.ts b/src/commands/translate/providers/yandex/utils/errors.ts index f4de6e67..7e3506d1 100644 --- a/src/commands/translate/providers/yandex/utils/errors.ts +++ b/src/commands/translate/providers/yandex/utils/errors.ts @@ -1,7 +1,7 @@ import {TranslateError} from '../../../utils'; export class RequestError extends TranslateError { - static canRetry(error: any) { + static canRetry(error: unknown) { if (error instanceof RequestError) { switch (true) { case error.status === 429: diff --git a/src/commands/translate/providers/yandex/utils/index.ts b/src/commands/translate/providers/yandex/utils/index.ts index 1e46146a..33c0bcb0 100644 --- a/src/commands/translate/providers/yandex/utils/index.ts +++ b/src/commands/translate/providers/yandex/utils/index.ts @@ -3,7 +3,7 @@ export {LimitExceed, RequestError, AuthError} from './errors'; export class Defer { resolve!: (text: T) => void; - reject!: (error: any) => void; + reject!: (error: unknown) => void; promise: Promise; diff --git a/src/commands/translate/utils/config.ts b/src/commands/translate/utils/config.ts index d0d213b9..c34deacf 100644 --- a/src/commands/translate/utils/config.ts +++ b/src/commands/translate/utils/config.ts @@ -99,7 +99,7 @@ export function resolveFiles( lang: string | null, exts: string[], ) { - let result: string[] = []; + let result: string[]; let skipped: [string, string][] = []; const extmatch = '**/*@(' + exts.map((ext) => '*' + ext).join('|') + ')'; @@ -150,10 +150,7 @@ export function resolveFiles( return [result, skipped]; } -export function resolveVars( - config: {vars?: Record}, - args: {vars?: Record}, -) { +export function resolveVars(config: {vars?: Hash}, args: {vars?: Hash}) { return merge(config.vars || {}, args.vars); } diff --git a/src/commands/translate/utils/fs.ts b/src/commands/translate/utils/fs.ts index 0ee65e60..5387943f 100644 --- a/src/commands/translate/utils/fs.ts +++ b/src/commands/translate/utils/fs.ts @@ -46,6 +46,7 @@ function stringifyFile(content: JSONObject | string, path: string): string { } } +// eslint-disable-next-line @typescript-eslint/no-explicit-any function isObject(object: any): object is JSONObject { return object && typeof object === 'object'; } diff --git a/src/commands/translate/utils/translate.ts b/src/commands/translate/utils/translate.ts index 5240a6aa..bf3184f6 100644 --- a/src/commands/translate/utils/translate.ts +++ b/src/commands/translate/utils/translate.ts @@ -9,8 +9,8 @@ export function extract(content: Content, options: ExtractOptions) { const {xliff, units, skeleton} = _extract(content, options); return {xliff, units, skeleton}; - } catch (error: any) { - throw new ExtractError(error); + } catch (error: unknown) { + throw new ExtractError(error as Error); } } @@ -20,7 +20,7 @@ type Xliff = Parameters[1]; export function compose(skeleton: Skeleton, xliff: Xliff, options: ComposeOptions) { try { return _compose(skeleton, xliff, options); - } catch (error: any) { - throw new ComposeError(error); + } catch (error: unknown) { + throw new ComposeError(error as Error); } } diff --git a/src/config/index.ts b/src/config/index.ts index c3105c9c..0eb966b2 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -6,6 +6,8 @@ import {cyan, yellow} from 'chalk'; import {load} from 'js-yaml'; import {dedent} from 'ts-dedent'; +type ExtendedError = Error & {code: string}; + export function toArray(value: string | string[], previous: string | string[]) { value = ([] as string[]).concat(value); @@ -50,6 +52,7 @@ export function args(command: Command | null) { let args: string[] | undefined; while (command) { + // @ts-ignore args = command.rawArgs || args; command = command.parent; } @@ -67,7 +70,7 @@ export const strictScope = (scopeName: string) => (config: Hash) => { if (scopeName in config) { return config[scopeName]; } else { - const error = new TypeError(`Scope ${scopeName} doesn't exist in config`); + const error = new TypeError(`Scope ${scopeName} doesn't exist in config`) as ExtendedError; error.code = 'ScopeException'; throw error; } @@ -84,7 +87,8 @@ export const defined = (option: string, ...scopes: Hash[]) => { }; // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const valuable = (...values: any[]) => values.some((value) => value !== null); +export const valuable = (...values: any[]) => + values.some((value) => value !== null && value !== undefined); const OptionSource = Symbol('OptionSource'); @@ -136,7 +140,7 @@ export function option(o: OptionInfo) { export const configPath = Symbol('configPath'); type ConfigUtils = { - [configPath]?: string; + [configPath]: AbsolutePath | null; resolve(subpath: string): AbsolutePath; }; diff --git a/src/globals.d.ts b/src/globals.d.ts index 82e34041..474aaea4 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -1,9 +1,10 @@ -const VERSION: string; +declare const VERSION: string; +// eslint-disable-next-line @typescript-eslint/no-explicit-any type Hash = Record; type DeepPartial = { - [P in keyof T]?: T[P] extends Record ? DeepPartial : T[P]; + [P in keyof T]?: T[P] extends {} ? DeepPartial : T[P]; }; type UnresolvedPath = string & { @@ -24,7 +25,7 @@ type NormalizedPath = string & { type AnyPath = string | UnresolvedPath | AbsolutePath | RelativePath | NormalizedPath; -declare module "path" { +declare module 'path' { namespace path { interface PlatformPath extends PlatformPath { normalize(path: T): T; diff --git a/src/index.ts b/src/index.ts index b084cc49..8fbded19 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,6 +10,7 @@ import {Program} from './program'; if (require.main === module) { (async () => { + // eslint-disable-next-line no-console console.time(MAIN_TIMER_ID); let exitCode = 0; @@ -23,10 +24,12 @@ if (require.main === module) { const message = error?.message || error; if (message) { + // eslint-disable-next-line no-console console.error(error.stack || error.message || error); } } + // eslint-disable-next-line no-console console.timeEnd(MAIN_TIMER_ID); process.exit(exitCode); diff --git a/src/models.ts b/src/models.ts index edd60b8a..16680fd5 100644 --- a/src/models.ts +++ b/src/models.ts @@ -71,8 +71,8 @@ interface YfmConfig { removeHiddenTocItems: boolean; vcs?: VCSConfiguration; connector?: VCSConnectorConfig; - lang?: Lang; - langs?: Lang[]; + lang?: `${Lang}`; + langs?: `${Lang}`[]; lintDisabled: boolean; buildDisabled: boolean; lintConfig: LintConfig; @@ -83,23 +83,22 @@ interface YfmConfig { * true -> extract changelogs * -> extract and push to s3 */ - changelogs?: string | boolean; + changelogs: string | boolean; analytics?: DocAnalytics; useLegacyConditions?: boolean; - search?: - | true - | ({ - provider?: string; - } & {[prop: string]: unknown}); + search: { + enabled: boolean; + provider?: string; + } & {[prop: string]: unknown}; } export interface YfmArgv extends YfmConfig { rootInput: string; input: string; output: string; - quiet: string; + quiet: boolean; contributors: boolean; - ignoreAuthorPatterns: string; + ignoreAuthorPatterns: string[]; addSystemMeta: boolean; addMapFile: boolean; allowCustomResources: boolean; diff --git a/src/program/base.ts b/src/program/base.ts index 2d538232..90292d5a 100644 --- a/src/program/base.ts +++ b/src/program/base.ts @@ -26,6 +26,7 @@ export type BaseHooks = { export const BaseProgram = < TConfig extends Record, TArgs extends ProgramArgs = ProgramArgs, + // eslint-disable-next-line @typescript-eslint/no-explicit-any THooks extends Record | HookMap> = BaseHooks, >( name: string, @@ -75,7 +76,7 @@ export const BaseProgram = < readonly logger: Logger = new Logger(); - protected options!: ExtendedOption[]; + readonly options!: ExtendedOption[]; protected args: string[] = []; diff --git a/src/program/index.ts b/src/program/index.ts index 5233f19d..b3b46363 100644 --- a/src/program/index.ts +++ b/src/program/index.ts @@ -18,7 +18,7 @@ export type ExtensionInfo = { }; export type ProgramConfig = { - input: string; + input: AbsolutePath; config: string; extensions: ExtensionInfo[]; quiet: boolean; @@ -26,7 +26,7 @@ export type ProgramConfig = { }; export type ProgramArgs = { - input: string; + input: AbsolutePath; config: string; extensions: string[]; quiet: boolean; @@ -60,7 +60,7 @@ export class Program readonly translate = new Translate(); - protected options = [ + readonly options = [ options.input('./'), options.config(YFM_CONFIG_FILENAME), options.extensions, @@ -75,7 +75,7 @@ export class Program .helpOption(false) .allowUnknownOption(true); - private readonly modules: ICallable[] = [this.build, this.publish, this.translate]; + private readonly modules: ICallable[] = [this.build, this.publish, this.translate]; async init(argv: string[]) { const args = this.parser.parse(argv).opts() as ProgramArgs; From 5a6a9dc4bf3582dbe400ee22359180b2e3c202f3 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 12:39:35 +0300 Subject: [PATCH 08/18] fix: Fix translation tests --- src/commands/translate/__tests__/index.ts | 4 ++-- src/commands/translate/index.spec.ts | 12 +++++++++--- src/commands/translate/utils/config.ts | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/commands/translate/__tests__/index.ts b/src/commands/translate/__tests__/index.ts index e034314d..fbabca44 100644 --- a/src/commands/translate/__tests__/index.ts +++ b/src/commands/translate/__tests__/index.ts @@ -44,6 +44,7 @@ export function testConfig(defaultArgs: string) { config: DeepPartial, result: Error | string, ): void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any function _testConfig(name: string, args: string, config: any, result?: any): void { it(name, async () => { if (!result) { @@ -59,9 +60,8 @@ export function testConfig(defaultArgs: string) { }); if (result instanceof Error || typeof result === 'string') { - const message = result.message || result; await expect(async () => runTranslate(defaultArgs + ' ' + args)).rejects.toThrow( - message, + result, ); } else { const instance = await runTranslate(defaultArgs + ' ' + args); diff --git a/src/commands/translate/index.spec.ts b/src/commands/translate/index.spec.ts index 6281e743..ada1eac0 100644 --- a/src/commands/translate/index.spec.ts +++ b/src/commands/translate/index.spec.ts @@ -99,7 +99,7 @@ describe('Translate command', () => { ); test( - 'should handle args with priority', + 'should handle args with priority', '--source ru', { // @ts-ignore @@ -312,8 +312,14 @@ describe('Translate command', () => { }); it('should call provider translate with config', async () => { - const instance = await run('-o output --folder 1'); + const instance = await run('-o output --folder 1 --source ru --target en --auth y0_1'); - expect(instance.provider?.translate).toBeCalledWith(expect.objectContaining({})); + expect(instance.provider?.translate).toBeCalledWith( + expect.anything(), + expect.objectContaining({ + input: expect.stringMatching(/^\//), + output: expect.stringMatching(/^\//), + }), + ); }); }); diff --git a/src/commands/translate/utils/config.ts b/src/commands/translate/utils/config.ts index c34deacf..6073d663 100644 --- a/src/commands/translate/utils/config.ts +++ b/src/commands/translate/utils/config.ts @@ -120,6 +120,7 @@ export function resolveFiles( result = glob.sync(extmatch, { cwd: input, nodir: true, + ignore: ['node_modules/**', '*/node_modules/**'], }); if (exclude.length) { From ed4d3988182be0ca697794818727f0df3172d1e1 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 12:40:47 +0300 Subject: [PATCH 09/18] feat: Implement new build configuration systemcon --- src/commands/build/__tests__/index.ts | 120 ++++++++ src/commands/build/config.ts | 148 ++++++++++ .../build/features/changelogs/config.ts | 10 + .../build/features/changelogs/index.ts | 26 ++ .../build/features/contributors/config.ts | 16 ++ .../build/features/contributors/index.ts | 55 ++++ src/commands/build/features/legacy/config.ts | 68 +++++ .../build/features/legacy/index.spec.ts | 270 ++++++++++++++++++ src/commands/build/features/legacy/index.ts | 115 ++++++++ src/commands/build/features/linter/config.ts | 15 + .../build/features/linter/index.spec.ts | 83 ++++++ src/commands/build/features/linter/index.ts | 97 +++++++ .../build/features/redirects/index.ts | 71 +++++ src/commands/build/features/search/config.ts | 15 + .../build/features/search/index.spec.ts | 72 +++++ src/commands/build/features/search/index.ts | 58 ++++ .../build/features/singlepage/config.ts | 10 + .../build/features/singlepage/index.ts | 26 ++ .../build/features/templating/config.ts | 55 ++++ .../build/features/templating/index.spec.ts | 206 +++++++++++++ .../build/features/templating/index.ts | 94 ++++++ src/commands/build/handler.ts | 107 +++++++ src/commands/build/index.spec.ts | 263 +++++++++++++++++ src/commands/build/run.ts | 108 +++++++ 24 files changed, 2108 insertions(+) create mode 100644 src/commands/build/__tests__/index.ts create mode 100644 src/commands/build/config.ts create mode 100644 src/commands/build/features/changelogs/config.ts create mode 100644 src/commands/build/features/changelogs/index.ts create mode 100644 src/commands/build/features/contributors/config.ts create mode 100644 src/commands/build/features/contributors/index.ts create mode 100644 src/commands/build/features/legacy/config.ts create mode 100644 src/commands/build/features/legacy/index.spec.ts create mode 100644 src/commands/build/features/legacy/index.ts create mode 100644 src/commands/build/features/linter/config.ts create mode 100644 src/commands/build/features/linter/index.spec.ts create mode 100644 src/commands/build/features/linter/index.ts create mode 100644 src/commands/build/features/redirects/index.ts create mode 100644 src/commands/build/features/search/config.ts create mode 100644 src/commands/build/features/search/index.spec.ts create mode 100644 src/commands/build/features/search/index.ts create mode 100644 src/commands/build/features/singlepage/config.ts create mode 100644 src/commands/build/features/singlepage/index.ts create mode 100644 src/commands/build/features/templating/config.ts create mode 100644 src/commands/build/features/templating/index.spec.ts create mode 100644 src/commands/build/features/templating/index.ts create mode 100644 src/commands/build/handler.ts create mode 100644 src/commands/build/index.spec.ts create mode 100644 src/commands/build/run.ts diff --git a/src/commands/build/__tests__/index.ts b/src/commands/build/__tests__/index.ts new file mode 100644 index 00000000..a117317e --- /dev/null +++ b/src/commands/build/__tests__/index.ts @@ -0,0 +1,120 @@ +import type {Run} from '../run'; +import type {BuildConfig, BuildRawConfig} from '..'; + +import {Mock, describe, expect, it, vi} from 'vitest'; +import {Build} from '..'; +import {handler as originalHandler} from '../handler'; +import {withConfigUtils} from '~/config'; + +export const handler = originalHandler as Mock; + +// eslint-disable-next-line no-var +var resolveConfig: Mock; + +vi.mock('shelljs'); +vi.mock('../handler'); +vi.mock('~/config', async (importOriginal) => { + resolveConfig = vi.fn((_path, {defaults, fallback}) => { + return defaults || fallback; + }); + + return { + ...((await importOriginal()) as {}), + resolveConfig, + }; +}); + +export async function runBuild(args: string) { + const build = new Build(); + + build.apply(); + + await build.parse(['node', 'index'].concat(args.split(' '))); +} + +export function testConfig(name: string, args: string, result: DeepPartial): void; +export function testConfig(name: string, args: string, error: Error): void; +export function testConfig( + name: string, + args: string, + config: DeepPartial, + result: DeepPartial, +): void; +export function testConfig( + name: string, + args: string, + config: DeepPartial, + error: Error, +): void; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function testConfig(name: string, args: string, config: any, result?: any): void { + it(name, async () => { + if (!result) { + result = config; + config = {}; + } + + resolveConfig.mockImplementation((path, {defaults}) => { + if (path.endsWith('.yfmlint')) { + return withConfigUtils(path, {}); + } + + if (path.endsWith('redirects.yaml')) { + return withConfigUtils(null, {}); + } + + return withConfigUtils(path, { + ...defaults, + ...config, + }); + }); + + handler.mockImplementation((run: Run) => { + expect(run.config).toMatchObject(result as Partial); + }); + + if (result instanceof Error) { + await expect(() => + runBuild('--input ./input --output ./output ' + args), + ).rejects.toThrow(result); + } else { + await runBuild('--input ./input --output ./output ' + args); + + expect(handler).toBeCalled(); + } + }); +} + +export function testBooleanFlag(name: string, arg: string, defaults: boolean) { + describe(name, () => { + testConfig('should handle default', '', { + [name]: defaults, + }); + + testConfig('should handle arg', arg, { + [name]: true, + }); + + testConfig( + 'should handle config enabled', + '', + { + [name]: true, + }, + { + [name]: true, + }, + ); + + testConfig( + 'should handle config disabled', + '', + { + [name]: false, + }, + { + [name]: false, + }, + ); + }); +} diff --git a/src/commands/build/config.ts b/src/commands/build/config.ts new file mode 100644 index 00000000..a09a1b48 --- /dev/null +++ b/src/commands/build/config.ts @@ -0,0 +1,148 @@ +import {bold, underline} from 'chalk'; +import {options as globalOptions} from '~/program/config'; +import {option} from '~/config'; +import {Stage} from '~/constants'; + +export enum OutputFormat { + md = 'md', + html = 'html', +} + +const outputFormat = option({ + flags: '-f, --output-format ', + defaultInfo: 'html', + choices: ['html', 'md'], + desc: ` + Format of output files. (html or md) + + If ${bold('html')} is selected, then renders md to static html files. + (See also ${underline('--static-content')} option) + + If ${bold('md')} is selected, then renders md to prepared md files + enriched by additional metadata. + (Useful for complex documentation servers with runtime rendering) + `, +}); + +const langs = option({ + flags: '--lang, --langs ', + desc: 'Allow loading custom resources into statically generated pages.', + // parser: toArray, +}); + +const vars = option({ + flags: '-v, --vars ', + desc: ` + Pass list of variables directly to build. + Variables should be passed in JSON format. + Passed variables overrides the same in presets.yaml + + Example: + {{PROGRAM}} -i ./ -o ./build -v '{"name":"test"}' + `, + parser: (value) => JSON.parse(value), +}); + +const varsPreset = option({ + flags: '--vars-preset ', + desc: ` + Select vars preset of documentation. + Selected preset will be merged with default section of presets.yaml + `, +}); + +const allowHtml = option({ + flags: '--allow-html', + desc: 'Allow to use HTML in Markdown files.', + defaultInfo: true, +}); + +const sanitizeHtml = option({ + flags: '--sanitize-html', + desc: 'Toggle transformed HTML sanitizing. (Slow but secure feature)', + defaultInfo: true, +}); + +const ignore = option({ + flags: '--ignore ', + desc: ` + Do not process paths matched by glob. + + Example: + {{PROGRAM}} -i ./input -o ./output --ignore *.bad.md + + or + + {{PROGRAM}} -i ./ -o ./build --ignore ./build + `, +}); + +// TODO: options below are not beautified. +const addMapFile = option({ + flags: '--add-map-file', + desc: 'Should add all paths of documentation into file.json.', +}); + +const removeHiddenTocItems = option({ + flags: '--remove-hidden-toc-items', + desc: 'Remove from Toc all items marked as hidden.', +}); + +const mergeIncludes = option({ + flags: '--merge-includes', + desc: 'Merge includes syntax during md to md processing.', +}); + +const resources = option({ + flags: '--resource, --resources ', + desc: 'Allow loading custom resources into statically generated pages.', + // parser: toArray, +}); + +const allowCustomResources = option({ + flags: '--allow-custom-resources', + desc: 'Allow loading custom resources into statically generated pages.', +}); + +const staticContent = option({ + flags: '--static-content', + desc: 'Allow loading custom resources into statically generated pages.', +}); + +const ignoreStage = option({ + flags: '--ignore-stage ', + defaultInfo: Stage.SKIP, + desc: 'Ignore tocs with stage.', +}); + +const addSystemMeta = option({ + flags: '--add-system-meta', + desc: 'Should add system section variables form presets into files meta data.', +}); + +const buildDisabled = option({ + flags: '--build-disabled', + desc: 'Disable building.', +}); + +export const options = { + input: globalOptions.input, + output: globalOptions.output, + config: globalOptions.config, + langs, + outputFormat, + varsPreset, + vars, + allowHtml, + sanitizeHtml, + addMapFile, + removeHiddenTocItems, + mergeIncludes, + resources, + allowCustomResources, + staticContent, + ignore, + ignoreStage, + addSystemMeta, + buildDisabled, +}; diff --git a/src/commands/build/features/changelogs/config.ts b/src/commands/build/features/changelogs/config.ts new file mode 100644 index 00000000..b880d1ff --- /dev/null +++ b/src/commands/build/features/changelogs/config.ts @@ -0,0 +1,10 @@ +import {option} from '~/config'; + +const changelogs = option({ + flags: '--changelogs', + desc: 'Beta functionality: Toggle processing of experimental changelogs syntax', +}); + +export const options = { + changelogs, +}; diff --git a/src/commands/build/features/changelogs/index.ts b/src/commands/build/features/changelogs/index.ts new file mode 100644 index 00000000..027abc62 --- /dev/null +++ b/src/commands/build/features/changelogs/index.ts @@ -0,0 +1,26 @@ +import type {Build} from '~/commands'; +import type {Command} from '~/config'; +import {defined} from '~/config'; +import {options} from './config'; + +export type ChangelogsArgs = { + changelogs: boolean | string; +}; + +export type ChangelogsConfig = { + changelogs: boolean | string; +}; + +export class Changelogs { + apply(program: Build) { + program.hooks.Command.tap('Changelogs', (command: Command) => { + command.addOption(options.changelogs); + }); + + program.hooks.Config.tap('Changelogs', (config, args) => { + config.changelogs = defined('changelogs', args, config) || false; + + return config; + }); + } +} diff --git a/src/commands/build/features/contributors/config.ts b/src/commands/build/features/contributors/config.ts new file mode 100644 index 00000000..5018f30d --- /dev/null +++ b/src/commands/build/features/contributors/config.ts @@ -0,0 +1,16 @@ +import {option} from '~/config'; + +const contributors = option({ + flags: '--contributors', + desc: 'Should attach contributors into files', +}); + +const ignoreAuthorPatterns = option({ + flags: '--ignore-author-patterns ', + desc: 'Ignore authors if they contain passed string', +}); + +export const options = { + contributors, + ignoreAuthorPatterns, +}; diff --git a/src/commands/build/features/contributors/index.ts b/src/commands/build/features/contributors/index.ts new file mode 100644 index 00000000..39e70793 --- /dev/null +++ b/src/commands/build/features/contributors/index.ts @@ -0,0 +1,55 @@ +import type {Build} from '../..'; +import type {Command} from '~/config'; +import type {VCSConnectorConfig} from '~/vcs-connector/connector-models'; + +import {defined} from '~/config'; +import {options} from './config'; + +interface VCSConfiguration { + /** + * Externally accessible base URI for a resource where a particular documentation + * source is hosted. + * + * This configuration parameter is used to directly control the Edit button behaviour + * in the Diplodoc documentation viewer(s). + * + * For example, if the following applies: + * - Repo with doc source is hosted on GitHub (say, https://github.com/foo-org/bar), + * - Within that particular repo, the directory that is being passed as an `--input` + * parameter to the CLI is located at `docs/`, + * - Whenever the Edit button is pressed, you wish to direct your readers to the + * respective document's source on `main` branch + * + * you should pass `https://github.com/foo-org/bar/tree/main/docs` as a value for this parameter. + */ + remoteBase?: string; + connector?: VCSConnectorConfig; +} + +export type ContributorsArgs = { + contributors?: boolean; + ignoreAuthorPatterns?: string[]; +}; + +export type ContributorsConfig = { + vcs: VCSConfiguration; + contributors: boolean; + ignoreAuthorPatterns: string[]; +}; + +export class Contributors { + apply(program: Build) { + program.hooks.Command.tap('Contributors', (command: Command) => { + command.addOption(options.contributors); + command.addOption(options.ignoreAuthorPatterns); + }); + + program.hooks.Config.tap('Contributors', (config, args) => { + config.vcs = defined('vcs', config) || {}; + config.contributors = defined('contributors', args, config) || false; + config.ignoreAuthorPatterns = defined('ignoreAuthorPatterns', args, config) || []; + + return config; + }); + } +} diff --git a/src/commands/build/features/legacy/config.ts b/src/commands/build/features/legacy/config.ts new file mode 100644 index 00000000..df014e36 --- /dev/null +++ b/src/commands/build/features/legacy/config.ts @@ -0,0 +1,68 @@ +import {bold} from 'chalk'; +import {option} from '~/config'; + +const disableLiquid = option({ + flags: '--disable-liquid', + desc: 'Disable template engine.', + defaultInfo: false, + deprecated: 'Use --no-template instead.', +}); + +const applyPresets = option({ + flags: '--apply-presets', + desc: 'Should apply presets.', + defaultInfo: true, + deprecated: 'Use --template-vars/--no-template-vars instead.', +}); + +const resolveConditions = option({ + flags: '--resolve-conditions', + desc: 'Should resolve conditions.', + defaultInfo: true, + deprecated: 'Use --template-conditions/--no-template-conditions instead.', +}); + +const conditionsInCode = option({ + flags: '--conditions-in-code', + desc: 'Meet conditions in code blocks.', + defaultInfo: false, + deprecated: 'Use --template=all or --template=code instead.', +}); + +const lintDisabled = option({ + flags: '--lint-disabled', + desc: 'Disable linting.', + hidden: true, + deprecated: `Use ${bold('--no-lint')} instead.`, +}); + +const allowHTML = option({ + flags: '--allowHTML', + desc: 'Allow to use HTML in Markdown files.', + defaultInfo: true, + deprecated: `Use ${bold('--allow-html')} for consistency.`, +}); + +const needToSanitizeHtml = option({ + flags: '--need-to-sanitize-html', + desc: 'Toggle transformed HTML sanitizing. (Slow but secure feature)', + defaultInfo: true, + deprecated: `Use ${bold('--sanitize-html')} instead.`, +}); + +const useLegacyConditions = option({ + flags: '--use-legacy-conditions', + desc: 'Temporal backward compatibility flag.', + defaultInfo: false, +}); + +export const options = { + disableLiquid, + applyPresets, + resolveConditions, + conditionsInCode, + lintDisabled, + allowHTML, + needToSanitizeHtml, + useLegacyConditions, +}; diff --git a/src/commands/build/features/legacy/index.spec.ts b/src/commands/build/features/legacy/index.spec.ts new file mode 100644 index 00000000..d6219379 --- /dev/null +++ b/src/commands/build/features/legacy/index.spec.ts @@ -0,0 +1,270 @@ +import {describe} from 'vitest'; +import {testConfig as test} from '../../__tests__'; + +describe('Build legacy feature', () => { + describe('config', () => { + describe('disableLiquid', () => { + test('should handle default', '', { + template: { + enabled: true, + }, + }); + + test('should handle arg', '--disable-liquid', { + template: { + enabled: false, + }, + }); + + test('should handle old arg with priority', '--disable-liquid --template all', { + template: { + enabled: false, + }, + }); + + test( + 'should handle config', + '', + { + disableLiquid: true, + }, + { + template: { + enabled: false, + }, + }, + ); + }); + + describe('applyPresets', () => { + test('should handle default', '', { + template: { + features: { + substitutions: true, + }, + }, + }); + + test( + 'should handle arg with priority', + '--apply-presets', + { + applyPresets: false, + }, + { + template: { + features: { + substitutions: true, + }, + }, + }, + ); + + test('should handle negated arg', '--no-apply-presets', { + template: { + features: { + substitutions: false, + }, + }, + }); + + test('should handle new arg', '--no-template-vars', { + template: { + features: { + substitutions: false, + }, + }, + }); + + test('should handle old arg with priority', '--no-apply-presets --template-vars', { + template: { + features: { + substitutions: false, + }, + }, + }); + + test( + 'should handle config', + '', + { + applyPresets: false, + }, + { + template: { + features: { + substitutions: false, + }, + }, + }, + ); + }); + + describe('resolveConditions', () => { + test('should handle default', '', { + template: { + features: { + conditions: true, + }, + }, + }); + + test( + 'should handle arg with priority', + '--resolve-conditions', + { + resolveConditions: false, + }, + { + template: { + features: { + conditions: true, + }, + }, + }, + ); + + test('should handle negated arg', '--no-resolve-conditions', { + template: { + features: { + conditions: false, + }, + }, + }); + + test('should handle new arg', '--no-template-conditions', { + template: { + features: { + conditions: false, + }, + }, + }); + + test( + 'should handle old arg with priority', + '--no-resolve-conditions --template-conditions', + { + template: { + features: { + conditions: false, + }, + }, + }, + ); + + test( + 'should handle config', + '', + { + resolveConditions: false, + }, + { + template: { + features: { + conditions: false, + }, + }, + }, + ); + }); + + describe('conditionsInCode', () => { + test('should handle default', '', { + template: { + scopes: { + text: true, + code: false, + }, + }, + }); + + test('should handle arg', '--conditions-in-code', { + template: { + scopes: { + text: true, + code: true, + }, + }, + }); + + test( + 'should handle negated arg with priority', + '--no-conditions-in-code', + { + conditionsInCode: true, + }, + { + template: { + scopes: { + text: true, + code: false, + }, + }, + }, + ); + + test('should handle old arg with priority', '--no-conditions-in-code --template all', { + template: { + scopes: { + text: true, + code: false, + }, + }, + }); + + test('should handle negated new arg', '--no-template', { + template: { + enabled: false, + scopes: { + text: false, + code: false, + }, + }, + }); + + test( + 'should handle config', + '', + { + conditionsInCode: true, + }, + { + template: { + scopes: { + text: true, + code: true, + }, + }, + }, + ); + }); + + describe('lintDisabled', () => { + test('should handle default', '', { + lint: { + enabled: true, + config: { + 'log-levels': { + MD033: 'disabled', + }, + }, + }, + }); + + test('should handle arg', '--lint-disabled', { + lint: {enabled: false}, + }); + + test( + 'should handle config', + '', + { + lintDisabled: true, + }, + { + lint: {enabled: false}, + }, + ); + }); + }); +}); diff --git a/src/commands/build/features/legacy/index.ts b/src/commands/build/features/legacy/index.ts new file mode 100644 index 00000000..c364335b --- /dev/null +++ b/src/commands/build/features/legacy/index.ts @@ -0,0 +1,115 @@ +import type {Build} from '~/commands'; +import type {Command} from '~/config'; +import type {VCSConnectorConfig} from '~/vcs-connector/connector-models'; + +import {defined, valuable} from '~/config'; +import {options} from './config'; + +export type LegacyArgs = { + disableLiquid?: boolean; + resolveConditions?: boolean; + conditionsInCode?: boolean; + applyPresets?: boolean; + + lintDisabled?: boolean; + allowHTML?: boolean; + needToSanitizeHtml?: boolean; + useLegacyConditions?: boolean; +}; + +export type LegacyRawConfig = { + disableLiquid: boolean; + resolveConditions: boolean; + conditionsInCode: boolean; + applyPresets: boolean; + + lintDisabled: boolean; + allowHTML: boolean; + needToSanitizeHtml: boolean; + useLegacyConditions: boolean; + + connector?: VCSConnectorConfig; +}; + +export type LegacyConfig = { + useLegacyConditions: boolean; +}; + +export class Legacy { + apply(program: Build) { + program.hooks.Command.tap('Legacy', (command: Command) => { + command + .addOption(options.disableLiquid) + .addOption(options.applyPresets) + .addOption(options.resolveConditions) + .addOption(options.conditionsInCode) + .addOption(options.lintDisabled) + .addOption(options.allowHTML) + .addOption(options.needToSanitizeHtml) + .addOption(options.useLegacyConditions); + }); + + program.hooks.Config.tap('Legacy', (config, args) => { + const disableLiquid = defined('disableLiquid', args, config); + const applyPresets = defined('applyPresets', args, config); + const resolveConditions = defined('resolveConditions', args, config); + const conditionsInCode = defined('conditionsInCode', args, config); + const lintDisabled = defined('lintDisabled', args, config); + const allowHTML = defined('allowHTML', args, config); + const needToSanitizeHtml = defined('needToSanitizeHtml', args, config); + const useLegacyConditions = defined('useLegacyConditions', args, config); + const vcsConnector = defined('connector', config); + + if (valuable(disableLiquid)) { + config.template.enabled = disableLiquid !== true; + } + + if (valuable(conditionsInCode)) { + config.template.scopes.code = conditionsInCode === true; + } + + if (valuable(applyPresets)) { + config.template.features.substitutions = applyPresets; + } + + if (valuable(resolveConditions)) { + config.template.features.conditions = resolveConditions; + } + + if (valuable(lintDisabled)) { + config.lint.enabled = lintDisabled !== true; + } + + if (valuable(allowHTML)) { + config.allowHtml = allowHTML; + config.lint.config['log-levels']['MD033'] = allowHTML ? 'disabled' : 'error'; + } + + if (valuable(needToSanitizeHtml)) { + config.sanitizeHtml = needToSanitizeHtml; + } + + if (valuable(vcsConnector)) { + config.vcs.connector = vcsConnector; + } + + config.useLegacyConditions = Boolean(useLegacyConditions); + + for (const prop of [ + 'disableLiquid', + 'applyPresets', + 'resolveConditions', + 'conditionsInCode', + 'lintDisabled', + 'allowHTML', + 'needToSanitizeHtml', + 'connector', + ]) { + // @ts-ignore + delete config[prop]; + } + + return config; + }); + } +} diff --git a/src/commands/build/features/linter/config.ts b/src/commands/build/features/linter/config.ts new file mode 100644 index 00000000..253f2518 --- /dev/null +++ b/src/commands/build/features/linter/config.ts @@ -0,0 +1,15 @@ +import {bold} from 'chalk'; +import {option} from '~/config'; + +const lint = option({ + flags: '--lint', + desc: ` + Toggle file linting. + + Enabled by default. Use ${bold('--no-lint')} to disable. + `, +}); + +export const options = { + lint, +}; diff --git a/src/commands/build/features/linter/index.spec.ts b/src/commands/build/features/linter/index.spec.ts new file mode 100644 index 00000000..473b6fb2 --- /dev/null +++ b/src/commands/build/features/linter/index.spec.ts @@ -0,0 +1,83 @@ +import {describe, vi} from 'vitest'; +import {testConfig as test} from '../../__tests__'; + +vi.mock('~/cmd/publish/upload'); + +describe('Build linter feature', () => { + describe('config', () => { + describe('lint', () => { + test('should handle default', '', { + lint: { + enabled: true, + config: { + 'log-levels': { + MD033: 'disabled', + }, + }, + }, + }); + + test('should handle arg', '--no-lint', { + lint: {enabled: false}, + }); + + test( + 'should handle config', + '', + { + lint: {enabled: false}, + }, + { + lint: {enabled: false}, + }, + ); + + test( + 'should handle simplified config', + '', + { + lint: false, + }, + { + lint: {enabled: false}, + }, + ); + + test( + 'should handle enabled allowHtml', + '', + { + allowHtml: true, + }, + { + lint: { + enabled: true, + config: { + 'log-levels': { + MD033: 'disabled', + }, + }, + }, + }, + ); + + test( + 'should handle disabled allowHtml', + '', + { + allowHtml: false, + }, + { + lint: { + enabled: true, + config: { + 'log-levels': { + MD033: 'error', + }, + }, + }, + }, + ); + }); + }); +}); diff --git a/src/commands/build/features/linter/index.ts b/src/commands/build/features/linter/index.ts new file mode 100644 index 00000000..6cb3a405 --- /dev/null +++ b/src/commands/build/features/linter/index.ts @@ -0,0 +1,97 @@ +import type {Build} from '../..'; +import type {Command} from '~/config'; + +import {resolve} from 'path'; +import shell from 'shelljs'; +import {LogLevels} from '@diplodoc/transform/lib/log'; + +import {configPath, resolveConfig, valuable} from '~/config'; +import {LINT_CONFIG_FILENAME} from '~/constants'; +import {options} from './config'; + +export type LintArgs = { + lint: boolean; +}; + +export type LintRawConfig = { + lint: + | boolean + | { + enabled: boolean; + config: string; + }; +}; + +export type LintConfig = { + lint: { + enabled: boolean; + config: LogLevelConfig; + }; +}; + +type LogLevelConfig = { + 'log-levels': Record; +}; + +// TODO(major): move to separated 'lint' command +export class Lint { + apply(program: Build) { + program.hooks.Command.tap('Lint', (command: Command) => { + command.addOption(options.lint); + }); + + let resolvedPath: AbsolutePath | null = null; + + program.hooks.Config.tapPromise('Lint', async (config, args) => { + let lint: LintConfig['lint'] | boolean = { + enabled: true, + config: {'log-levels': {}}, + }; + + if (valuable(config.lint)) { + lint = config.lint; + } + + if (typeof lint === 'boolean') { + lint = { + enabled: lint, + config: {'log-levels': {}}, + }; + } + + if (valuable(args.lint)) { + lint.enabled = Boolean(args.lint); + } + + config.lint = lint; + + if (config.lint.enabled) { + const configFilename = + typeof config.lint.config === 'string' + ? config.resolve(config.lint.config as string) + : resolve(args.input, LINT_CONFIG_FILENAME); + + const lintConfig = await resolveConfig>(configFilename, { + fallback: {'log-levels': {}}, + }); + + config.lint.config = lintConfig as LogLevelConfig; + resolvedPath = lintConfig[configPath]; + } + + config.lint.config = config.lint.config || {'log-levels': {}}; + config.lint.config['log-levels'] = config.lint.config['log-levels'] || {}; + config.lint.config['log-levels']['MD033'] = config.allowHtml + ? LogLevels.DISABLED + : LogLevels.ERROR; + + return config; + }); + + program.hooks.AfterRun.for('md').tap('Lint', async (run) => { + if (resolvedPath) { + shell.cp(resolvedPath, run.output); + } + }); + } +} diff --git a/src/commands/build/features/redirects/index.ts b/src/commands/build/features/redirects/index.ts new file mode 100644 index 00000000..7587d0ae --- /dev/null +++ b/src/commands/build/features/redirects/index.ts @@ -0,0 +1,71 @@ +import {ok} from 'node:assert'; +import {resolve} from 'node:path'; +import shell from 'shelljs'; +import {Build} from '../..'; + +import {REDIRECTS_FILENAME} from '~/constants'; +import {configPath, resolveConfig} from '~/config'; + +interface Redirect { + from: string; + to: string; +} + +interface RedirectsConfig { + common: Redirect[]; + [lang: string]: Redirect[]; +} + +export class Redirects { + apply(program: Build) { + let resolvedPath: string | null = null; + + program.hooks.BeforeRun.for('md').tap('Redirects', async (run) => { + try { + const redirects = await resolveConfig( + resolve(run.originalInput, REDIRECTS_FILENAME), + { + fallback: {common: []}, + }, + ); + + if (redirects[configPath]) { + validateRedirects(redirects, redirects[configPath]); + resolvedPath = redirects[configPath]; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (error: any) { + run.logger.error(error.message || error); + } + }); + + program.hooks.AfterRun.for('md').tap('Redirects', async (run) => { + if (resolvedPath) { + shell.cp(resolvedPath, run.output); + } + }); + } +} + +function validateRedirects(redirectsConfig: RedirectsConfig, pathToRedirects: string) { + const redirects: Redirect[] = Object.keys(redirectsConfig).reduce( + (res, redirectSectionName) => { + const sectionRedirects = redirectsConfig[redirectSectionName]; + res.push(...sectionRedirects); + return res; + }, + [] as Redirect[], + ); + + const getContext = (from: string, to: string) => ` [Context: \n- from: ${from}\n- to: ${to} ]`; + const formatMessage = (message: string, pathname: string, from: string, to: string) => + `${pathname}: ${message} ${getContext(from, to)}`; + + redirects.forEach(({from, to}) => { + ok( + from && to, + formatMessage('One of the two parameters is missing', pathToRedirects, from, to), + ); + ok(from !== to, formatMessage('Parameters must be different', pathToRedirects, from, to)); + }); +} diff --git a/src/commands/build/features/search/config.ts b/src/commands/build/features/search/config.ts new file mode 100644 index 00000000..51ba4501 --- /dev/null +++ b/src/commands/build/features/search/config.ts @@ -0,0 +1,15 @@ +import {option} from '~/config'; + +const search = option({ + flags: '--search', + desc: ` + Enable search functionality. + + From command args only local search can be enabled. + Use config to configure alternate search strategy. + `, +}); + +export const options = { + search, +}; diff --git a/src/commands/build/features/search/index.spec.ts b/src/commands/build/features/search/index.spec.ts new file mode 100644 index 00000000..0c3649de --- /dev/null +++ b/src/commands/build/features/search/index.spec.ts @@ -0,0 +1,72 @@ +import {describe} from 'vitest'; +import {testConfig as test} from '../../__tests__'; + +describe('Build search feature', () => { + describe('config', () => { + describe('search', () => { + test('should handle default', '', { + search: { + enabled: false, + provider: 'local', + }, + }); + + test('should handle arg', '--search', { + search: { + enabled: true, + provider: 'local', + }, + }); + + test( + 'should handle arg with priority', + '--search', + { + search: { + enabled: false, + provider: 'custom', + }, + }, + { + search: { + enabled: true, + provider: 'custom', + }, + }, + ); + + test( + 'should handle config', + '', + { + search: { + enabled: true, + provider: 'custom', + searchUrl: 'test/?q={{query}}', + }, + }, + { + search: { + enabled: true, + provider: 'custom', + searchUrl: 'test/?q={{query}}', + }, + }, + ); + + test( + 'should handle simplified config', + '', + { + search: true, + }, + { + search: { + enabled: true, + provider: 'local', + }, + }, + ); + }); + }); +}); diff --git a/src/commands/build/features/search/index.ts b/src/commands/build/features/search/index.ts new file mode 100644 index 00000000..60818549 --- /dev/null +++ b/src/commands/build/features/search/index.ts @@ -0,0 +1,58 @@ +import type {Build} from '~/commands'; +import type {Command} from '~/config'; + +import {valuable} from '~/config'; +import {options} from './config'; + +export type SearchArgs = { + search: boolean; +}; + +export type SearchRawConfig = { + search: boolean | Config; +}; + +export type SearchConfig = { + search: Config; +}; + +type Config = { + enabled: boolean; + provider: string; +} & { + [prop: string]: unknown; +}; + +export class Search { + apply(program: Build) { + program.hooks.Command.tap('Search', (command: Command) => { + command.addOption(options.search); + }); + + program.hooks.Config.tap('Search', (config, args) => { + let search: Config | boolean = { + enabled: false, + provider: 'local', + }; + + if (valuable(config.search)) { + search = config.search; + } + + if (typeof search === 'boolean') { + search = { + enabled: search, + provider: 'local', + }; + } + + if (valuable(args.search)) { + search.enabled = Boolean(args.search); + } + + config.search = search; + + return config; + }); + } +} diff --git a/src/commands/build/features/singlepage/config.ts b/src/commands/build/features/singlepage/config.ts new file mode 100644 index 00000000..a117e968 --- /dev/null +++ b/src/commands/build/features/singlepage/config.ts @@ -0,0 +1,10 @@ +import {option} from '~/config'; + +const singlePage = option({ + flags: '--single-page', + desc: 'Beta functionality: Build a single page in the output folder also.', +}); + +export const options = { + singlePage, +}; diff --git a/src/commands/build/features/singlepage/index.ts b/src/commands/build/features/singlepage/index.ts new file mode 100644 index 00000000..be266f63 --- /dev/null +++ b/src/commands/build/features/singlepage/index.ts @@ -0,0 +1,26 @@ +import type {Build} from '~/commands'; +import type {Command} from '~/config'; +import {defined} from '~/config'; +import {options} from './config'; + +export type SinglePageArgs = { + singlePage: boolean; +}; + +export type SinglePageConfig = { + singlePage: boolean; +}; + +export class SinglePage { + apply(program: Build) { + program.hooks.Command.tap('SinglePage', (command: Command) => { + command.addOption(options.singlePage); + }); + + program.hooks.Config.tap('SinglePage', (config, args) => { + config.singlePage = defined('singlePage', args, config) || false; + + return config; + }); + } +} diff --git a/src/commands/build/features/templating/config.ts b/src/commands/build/features/templating/config.ts new file mode 100644 index 00000000..f50f5ce5 --- /dev/null +++ b/src/commands/build/features/templating/config.ts @@ -0,0 +1,55 @@ +import {bold, cyan, green} from 'chalk'; +import {option} from '~/config'; + +const template = option({ + flags: '--template ', + desc: ` + Select liquid template engine mode. + By default liquid ignores code blocs. (${bold('text')} mode) + Use ${bold('all')} or ${bold('code')} mode to process code blocks. + Use ${bold('--no-template')} to completely disable template engine. + + Read more about templating ${cyan('https://diplodoc.com/docs/en/syntax/vars')} + `, + choices: ['all', 'text', 'code'], +}); + +const noTemplate = option({ + flags: '--no-template', + desc: 'Manual negation for --template', + hidden: true, + default: false, +}); + +const templateVars = option({ + flags: '--template-vars', + desc: ` + Toggle processing of terms decorated by double curly braces in Toc and Md files. (Enabled by default) + + Read more about substitutions ${cyan('https://diplodoc.com/docs/en/syntax/vars#subtitudes')} + + Example: + Some text ${green('{{some-variable}}')} end of text. + `, + defaultInfo: true, +}); + +const templateConditions = option({ + flags: '--template-conditions', + desc: ` + Toggle processing of conditions in Toc and Md files. (Enabled by default) + + Read more about conditions ${cyan('https://diplodoc.com/docs/en/syntax/vars#conditions')} + + Example: + Some text ${green('{% if var == "any" %}')} extra ${green('{% endif %}')} end of text. + `, + defaultInfo: true, +}); + +export const options = { + template, + noTemplate, + templateVars, + templateConditions, +}; diff --git a/src/commands/build/features/templating/index.spec.ts b/src/commands/build/features/templating/index.spec.ts new file mode 100644 index 00000000..3c1befc2 --- /dev/null +++ b/src/commands/build/features/templating/index.spec.ts @@ -0,0 +1,206 @@ +import {describe} from 'vitest'; +import {testConfig as test} from '../../__tests__'; + +describe('Build template feature', () => { + describe('config', () => { + describe('template', () => { + test('should handle default', '', { + template: { + enabled: true, + scopes: { + text: true, + code: false, + }, + }, + }); + + test('should handle arg `all`', '--template all', { + template: { + enabled: true, + scopes: { + text: true, + code: true, + }, + }, + }); + + test('should handle arg `text`', '--template text', { + template: { + enabled: true, + scopes: { + text: true, + code: false, + }, + }, + }); + + test('should handle arg `code`', '--template code', { + template: { + enabled: true, + scopes: { + text: false, + code: true, + }, + }, + }); + + test('should handle negated arg', '--no-template', { + template: { + enabled: false, + scopes: { + text: false, + code: false, + }, + }, + }); + + test( + 'should handle config', + '', + { + template: { + enabled: false, + }, + }, + { + template: { + enabled: false, + scopes: { + text: true, + code: false, + }, + }, + }, + ); + + test( + 'should handle siplified config', + '', + { + template: false, + }, + { + template: { + enabled: false, + scopes: { + text: true, + code: false, + }, + }, + }, + ); + }); + + describe('templateVars', () => { + test('should handle default', '', { + template: { + features: { + substitutions: true, + }, + }, + }); + + test( + 'should handle arg with priority', + '--template-vars', + { + template: { + features: { + substitutions: false, + }, + }, + }, + { + template: { + features: { + substitutions: true, + }, + }, + }, + ); + + test('should handle negated arg', '--no-template-vars', { + template: { + features: { + substitutions: false, + }, + }, + }); + + test( + 'should handle config', + '', + { + template: { + features: { + substitutions: false, + }, + }, + }, + { + template: { + features: { + substitutions: false, + }, + }, + }, + ); + }); + + describe('templateConditions', () => { + test('should handle default', '', { + template: { + features: { + conditions: true, + }, + }, + }); + + test( + 'should handle arg with priority', + '--template-conditions', + { + template: { + features: { + conditions: false, + }, + }, + }, + { + template: { + features: { + conditions: true, + }, + }, + }, + ); + + test('should handle negated arg', '--no-template-conditions', { + template: { + features: { + conditions: false, + }, + }, + }); + + test( + 'should handle config', + '', + { + template: { + features: { + conditions: false, + }, + }, + }, + { + template: { + features: { + conditions: false, + }, + }, + }, + ); + }); + }); +}); diff --git a/src/commands/build/features/templating/index.ts b/src/commands/build/features/templating/index.ts new file mode 100644 index 00000000..6fab837f --- /dev/null +++ b/src/commands/build/features/templating/index.ts @@ -0,0 +1,94 @@ +import type {Build} from '~/commands'; +import type {Command} from '~/config'; +import {defined, valuable} from '~/config'; +import {options} from './config'; + +const merge = (acc: Hash, ...sources: Hash[]) => { + for (const source of sources) { + for (const [key, value] of Object.entries(source)) { + if (!acc[key] || !value) { + acc[key] = value; + } else if (typeof value === 'object') { + acc[key] = merge({}, acc[key], value); + } + } + } + + return acc; +}; + +export type TemplatingArgs = { + template?: boolean | 'all' | 'text' | 'code'; + templateVars?: boolean; + templateConditions?: boolean; +}; + +export type TemplatingConfig = { + template: { + enabled: boolean; + scopes: { + text: boolean; + code: boolean; + }; + features: { + substitutions: boolean; + conditions: boolean; + cycles: boolean; + }; + }; +}; + +export type TemplatingRawConfig = { + template: boolean | DeepPartial; +}; + +export class Templating { + apply(program: Build) { + program.hooks.Command.tap('Templating', (command: Command) => { + command + .addOption(options.template) + .addOption(options.noTemplate) + .addOption(options.templateVars) + .addOption(options.templateConditions); + }); + + program.hooks.Config.tap('Templating', (config, args) => { + const template = defined('template', args); + const templateVars = defined('templateVars', args); + const templateConditions = defined('templateConditions', args); + + config.template = merge( + { + enabled: (config as TemplatingRawConfig).template !== false, + scopes: { + text: true, + code: false, + }, + features: { + substitutions: true, + conditions: true, + cycles: true, + }, + }, + config.template || {}, + ) as TemplatingConfig['template']; + + if (valuable(template)) { + config.template.enabled = template !== false; + + config.template.scopes.text = ['all', 'text'].includes(template as string); + config.template.scopes.code = ['all', 'code'].includes(template as string); + } + + if (valuable(templateVars)) { + config.template.features.substitutions = templateVars; + } + + if (valuable(templateConditions)) { + config.template.features.conditions = templateConditions; + } + + return config; + }); + } +} diff --git a/src/commands/build/handler.ts b/src/commands/build/handler.ts new file mode 100644 index 00000000..fbf995a2 --- /dev/null +++ b/src/commands/build/handler.ts @@ -0,0 +1,107 @@ +import type {Run} from './run'; + +import 'threads/register'; + +import glob from 'glob'; +import {join} from 'path'; +import shell from 'shelljs'; + +import OpenapiIncluder from '@diplodoc/openapi-extension/includer'; + +import {BUNDLE_FOLDER} from '~/constants'; +import {ArgvService, Includers, SearchService} from '~/services'; +import { + initLinterWorkers, + processAssets, + processChangelogs, + processExcludedFiles, + processLinter, + processLogs, + processPages, + processServiceFiles, +} from '~/steps'; +import {prepareMapFile} from '~/steps/processMapFile'; +import {copyFiles} from '~/utils'; + +export async function handler(run: Run) { + const tmpInputFolder = run.input; + const tmpOutputFolder = run.output; + + if (typeof VERSION !== 'undefined') { + console.log(`Using v${VERSION} version`); + } + + try { + ArgvService.init(run.legacyConfig); + SearchService.init(); + // TODO: Remove duplicated types from openapi-extension + // @ts-ignore + Includers.init([OpenapiIncluder]); + + const { + output: outputFolderPath, + outputFormat, + lintDisabled, + buildDisabled, + addMapFile, + } = ArgvService.getConfig(); + + preparingTemporaryFolders(); + + await processServiceFiles(); + processExcludedFiles(); + + if (addMapFile) { + prepareMapFile(); + } + + const outputBundlePath = join(outputFolderPath, BUNDLE_FOLDER); + + if (!lintDisabled) { + /* Initialize workers in advance to avoid a timeout failure due to not receiving a message from them */ + await initLinterWorkers(); + } + + const processes = [ + !lintDisabled && processLinter(), + !buildDisabled && processPages(outputBundlePath), + ].filter(Boolean) as Promise[]; + + await Promise.all(processes); + + if (!buildDisabled) { + // process additional files + processAssets({ + run, + outputFormat, + outputBundlePath, + tmpOutputFolder, + }); + + await processChangelogs(); + + await SearchService.release(); + } + } catch (error) { + run.logger.error(error); + } finally { + processLogs(tmpInputFolder); + } +} + +function preparingTemporaryFolders() { + const args = ArgvService.getConfig(); + + copyFiles( + args.rootInput, + args.input, + glob.sync('**', { + cwd: args.rootInput, + nodir: true, + follow: true, + ignore: ['node_modules/**', '*/node_modules/**'], + }), + ); + + shell.chmod('-R', 'u+w', args.input); +} diff --git a/src/commands/build/index.spec.ts b/src/commands/build/index.spec.ts new file mode 100644 index 00000000..6ab53216 --- /dev/null +++ b/src/commands/build/index.spec.ts @@ -0,0 +1,263 @@ +import {describe, expect, it} from 'vitest'; +import {handler, runBuild as run, testConfig as test, testBooleanFlag} from './__tests__'; + +describe('Build command', () => { + describe('config', () => { + it('should fail without required output prop', async () => { + await expect(() => run('--input ./input')).rejects.toThrow( + `error: required option '-o, --output ' not specified`, + ); + }); + + it('should handle required props in args', async () => { + await run('--input ./input --output ./output'); + + expect(handler).toBeCalled(); + }); + + describe('input', () => { + test('should be absolute', '--input ./input', { + input: expect.stringMatching(/^\/.*?\/input$/), + }); + }); + + describe('output', () => { + test('should be absolute', '--output ./output', { + output: expect.stringMatching(/^\/.*?\/output$/), + }); + }); + + describe('langs', () => { + test('should handle default', '', { + langs: ['ru'], + }); + + test('should handle arg', '--langs en', { + langs: ['en'], + }); + + test('should handle shorthand arg', '--lang en', { + langs: ['en'], + }); + + test('should handle multiple arg', '--lang en --lang ru', { + langs: ['en', 'ru'], + }); + + test('should handle multiple different arg', '--lang en --langs ru', { + langs: ['en', 'ru'], + }); + + test( + 'should handle config', + '', + { + langs: ['ru', 'en'], + }, + { + langs: ['ru', 'en'], + }, + ); + + test( + 'should handle empty config', + '', + { + langs: [], + }, + { + langs: ['ru'], + }, + ); + + test( + 'should fail on unlisted lang', + '', + { + // @ts-ignore + lang: 'fr', + langs: ['ru', 'en'], + }, + new Error(`Configured default lang 'fr' is not listed in langs (ru, en)`), + ); + }); + + describe('lang', () => { + test('should handle default', '', { + lang: 'ru', + }); + + test( + 'should handle config', + '', + { + lang: 'en', + }, + { + lang: 'en', + }, + ); + + test( + 'should handle first lang from langs', + '', + { + langs: ['en', 'ru'], + }, + { + lang: 'en', + }, + ); + }); + + describe('outputFormat', () => { + test('should handle default', '', { + outputFormat: 'html', + }); + + test('should handle arg', '--output-format md', { + outputFormat: 'md', + }); + + test('should handle shorthand arg', '-f md', { + outputFormat: 'md', + }); + + test( + 'should handle config', + '', + { + outputFormat: 'md', + }, + { + outputFormat: 'md', + }, + ); + + it('should fail on unknown format', async () => { + await expect(() => + run('--input ./input --output ./output --output-format other'), + ).rejects.toThrow( + `error: option '-f, --output-format ' argument 'other' is invalid. Allowed choices are html, md.`, + ); + }); + }); + + describe('varsPreset', () => { + test('should handle default', '', { + varsPreset: 'default', + }); + + test('should handle arg', '--vars-preset public', { + varsPreset: 'public', + }); + + test( + 'should handle config', + '', + { + varsPreset: 'public', + }, + { + varsPreset: 'public', + }, + ); + }); + + describe('vars', () => { + test('should handle default', '', { + vars: {}, + }); + + test('should handle arg', '--vars {"a":1}', { + vars: {a: 1}, + }); + + test('should handle shorthand arg', '-v {"a":1}', { + vars: {a: 1}, + }); + + test( + 'should handle config', + '', + { + vars: {a: 1}, + }, + { + vars: {a: 1}, + }, + ); + + // TODO: should merge args ang config + // test('should merge args ang config') + }); + + describe('ignoreStage', () => { + test('should handle default', '', { + ignoreStage: 'skip', + }); + + test('should handle arg', '--ignore-stage preview', { + ignoreStage: 'preview', + }); + + test( + 'should handle config', + '', + { + ignoreStage: 'preview', + }, + { + ignoreStage: 'preview', + }, + ); + }); + + describe('ignore', () => { + test('should handle default', '', { + ignore: [], + }); + + test('should handle arg', '--ignore **/*.md', { + ignore: ['**/*.md'], + }); + + test('should handle args', '--ignore **/*.md --ignore **/*.yaml', { + ignore: ['**/*.md', '**/*.yaml'], + }); + + test( + 'should handle config', + '', + { + ignore: ['**/*.md'], + }, + { + ignore: ['**/*.md'], + }, + ); + + // TODO: should merge args ang config + // test('should merge args ang config') + }); + + testBooleanFlag('addMapFile', '--add-map-file', false); + testBooleanFlag('removeHiddenTocItems', '--remove-hidden-toc-items', false); + testBooleanFlag('allowCustomResources', '--allow-custom-resources', false); + testBooleanFlag('staticContent', '--static-content', false); + testBooleanFlag('addSystemMeta', '--add-system-meta', false); + testBooleanFlag('buildDisabled', '--build-disabled', false); + testBooleanFlag('allowHtml', '--allow-html', true); + testBooleanFlag('sanitizeHtml', '--sanitize-html', true); + + // test('should handle required props in config', '', { + // input: './input', + // output: './output', + // }, { + // input: './input', + // output: './output', + // }); + }); + + // describe('apply', () => {}); +}); diff --git a/src/commands/build/run.ts b/src/commands/build/run.ts new file mode 100644 index 00000000..06a909d7 --- /dev/null +++ b/src/commands/build/run.ts @@ -0,0 +1,108 @@ +import type {YfmArgv} from '~/models'; + +import {join, resolve} from 'path'; +import {configPath} from '~/config'; +import { + BUNDLE_FOLDER, + REDIRECTS_FILENAME, + TMP_INPUT_FOLDER, + TMP_OUTPUT_FOLDER, + YFM_CONFIG_FILENAME, +} from '~/constants'; +import {Logger} from '~/logger'; +import {BuildConfig} from '.'; + +/** + * This is transferable context for build command. + * Use this context to communicate with lower data processing levels. + */ +export class Run { + readonly originalInput: AbsolutePath; + + readonly originalOutput: AbsolutePath; + + readonly input: AbsolutePath; + + readonly output: AbsolutePath; + + readonly legacyConfig: YfmArgv; + + readonly logger: Logger; + + readonly config: BuildConfig; + + get bundlePath() { + return join(this.originalOutput, BUNDLE_FOLDER); + } + + get configPath() { + return this.config[configPath] || join(this.config.input, YFM_CONFIG_FILENAME); + } + + get redirectsPath() { + return join(this.originalInput, REDIRECTS_FILENAME); + } + + constructor(config: BuildConfig) { + this.config = config; + this.originalInput = config.input; + this.originalOutput = config.output; + + // TODO: use root instead + // We need to create system where we can safely work with original input. + this.input = resolve(config.output, TMP_INPUT_FOLDER); + this.output = resolve(config.output, TMP_OUTPUT_FOLDER); + + this.legacyConfig = { + rootInput: this.originalInput, + input: this.input, + output: this.output, + quiet: config.quiet, + addSystemMeta: config.addSystemMeta, + addMapFile: config.addMapFile, + staticContent: config.staticContent, + strict: config.strict, + langs: config.langs, + lang: config.lang, + ignoreStage: config.ignoreStage, + singlePage: config.singlePage, + removeHiddenTocItems: config.removeHiddenTocItems, + allowCustomResources: config.allowCustomResources, + resources: config.resources, + analytics: config.analytics, + varsPreset: config.varsPreset, + vars: config.vars, + outputFormat: config.outputFormat, + allowHTML: config.allowHtml, + needToSanitizeHtml: config.sanitizeHtml, + useLegacyConditions: config.useLegacyConditions, + + ignore: config.ignore, + + applyPresets: config.template.features.substitutions, + resolveConditions: config.template.features.conditions, + conditionsInCode: config.template.scopes.code, + disableLiquid: !config.template.enabled, + + buildDisabled: config.buildDisabled, + + lintDisabled: !config.lint.enabled, + // @ts-ignore + lintConfig: config.lint.config, + + vcs: config.vcs, + connector: config.vcs.connector, + contributors: config.contributors, + ignoreAuthorPatterns: config.ignoreAuthorPatterns, + + changelogs: config.changelogs, + search: config.search, + + included: config.mergeIncludes, + }; + + this.logger = new Logger(config, [ + (_level, message) => message.replace(new RegExp(this.input, 'ig'), ''), + ]); + } +} From 4ad1928d1b54f7d8fe638e25fd18e379367f2adf Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 12:43:18 +0300 Subject: [PATCH 10/18] fix: Attach new build system to main program --- src/cmd/build/index.ts | 277 ----------------------------- src/cmd/index.ts | 3 - src/commands/build/index.ts | 335 ++++++++++++++++++++++++++++++------ src/config/index.ts | 14 +- src/logger/index.ts | 20 ++- src/program/config.ts | 28 ++- src/program/types.ts | 6 +- src/resolvers/md2html.ts | 7 +- src/services/argv.ts | 9 +- src/services/search.ts | 7 +- src/steps/processAssets.ts | 47 ++--- src/validator.ts | 158 ----------------- 12 files changed, 349 insertions(+), 562 deletions(-) delete mode 100644 src/cmd/build/index.ts delete mode 100644 src/cmd/index.ts delete mode 100644 src/validator.ts diff --git a/src/cmd/build/index.ts b/src/cmd/build/index.ts deleted file mode 100644 index 91790952..00000000 --- a/src/cmd/build/index.ts +++ /dev/null @@ -1,277 +0,0 @@ -import glob from 'glob'; -import {Arguments, Argv} from 'yargs'; -import {join, resolve} from 'path'; -import shell from 'shelljs'; - -import OpenapiIncluder from '@diplodoc/openapi-extension/includer'; - -import {BUNDLE_FOLDER, Stage, TMP_INPUT_FOLDER, TMP_OUTPUT_FOLDER} from '../../constants'; -import {argvValidator} from '../../validator'; -import {ArgvService, Includers, SearchService} from '../../services'; -import { - initLinterWorkers, - processAssets, - processChangelogs, - processExcludedFiles, - processLinter, - processLogs, - processPages, - processServiceFiles, -} from '../../steps'; -import {prepareMapFile} from '../../steps/processMapFile'; -import {copyFiles, logger} from '../../utils'; - -export const build = { - command: ['build', '$0'], - description: 'Build documentation in target directory', - handler, - builder, -}; - -function builder(argv: Argv) { - return argv - .option('input', { - alias: 'i', - describe: 'Path to input folder with .md files', - type: 'string', - group: 'Build options:', - }) - .option('output', { - alias: 'o', - describe: 'Path to output folder', - type: 'string', - group: 'Build options:', - }) - .option('varsPreset', { - default: 'default', - describe: 'Target vars preset of documentation ', - group: 'Build options:', - }) - .option('output-format', { - default: 'html', - describe: 'Format of output file ', - group: 'Build options:', - }) - .option('vars', { - alias: 'v', - default: '{}', - describe: 'List of markdown variables', - group: 'Build options:', - }) - .option('apply-presets', { - default: true, - describe: 'Should apply presets. Only for --output-format=md', - type: 'boolean', - group: 'Build options:', - }) - .option('resolve-conditions', { - default: true, - describe: 'Should resolve conditions. Only for --output-format=md', - type: 'boolean', - group: 'Build options:', - }) - .option('conditions-in-code', { - default: false, - describe: 'Meet conditions in code blocks', - type: 'boolean', - group: 'Build options:', - }) - .option('disable-liquid', { - default: false, - describe: 'Disable template engine', - type: 'boolean', - group: 'Build options:', - }) - .option('allowHTML', { - default: false, - describe: 'Allow to use HTML in Markdown files', - type: 'boolean', - group: 'Build options:', - }) - .option('ignore-stage', { - default: Stage.SKIP, - describe: 'Ignore tocs with stage', - group: 'Build options:', - }) - .option('ignore-author-patterns', { - default: [] as string[], - describe: 'Ignore authors if they contain passed string', - group: 'Build options:', - type: 'array', - }) - .option('contributors', { - default: false, - describe: 'Should attach contributors into files', - type: 'boolean', - group: 'Build options:', - }) - .option('add-system-meta', { - default: false, - describe: 'Should add system section variables form presets into files meta data', - type: 'boolean', - group: 'Build options:', - }) - .option('add-map-file', { - default: false, - describe: 'Should add all paths of documentation into file.json', - type: 'boolean', - group: 'Build options:', - }) - .option('single-page', { - default: false, - describe: 'Beta functionality: Build a single page in the output folder also', - type: 'boolean', - group: 'Build options:', - }) - .option('publish', { - default: false, - describe: 'Should upload output files to S3 storage', - type: 'boolean', - group: 'Build options:', - }) - .option('remove-hidden-toc-items', { - default: false, - describe: 'Remove hidden toc items', - type: 'boolean', - group: 'Build options:', - }) - .option('lint-disabled', { - default: false, - describe: 'Disable linting', - type: 'boolean', - group: 'Build options:', - }) - .option('build-disabled', { - default: false, - describe: 'Disable building', - type: 'boolean', - group: 'Build options:', - }) - .option('allow-custom-resources', { - default: false, - describe: 'Allow loading custom resources', - type: 'boolean', - group: 'Build options:', - }) - .option('static-content', { - default: false, - describe: 'Include static content in the page', - type: 'boolean', - group: 'Build options:', - }) - .option('need-to-sanitize-html', { - default: true, - describe: 'Enable sanitize html', - type: 'boolean', - group: 'Build options:', - }) - .option('search', {}) - .check(argvValidator) - .example('yfm -i ./input -o ./output', '') - .demandOption( - ['input', 'output'], - 'Please provide input and output arguments to work with this tool', - ); -} - -async function handler(args: Arguments) { - const userOutputFolder = resolve(args.output); - const tmpInputFolder = resolve(args.output, TMP_INPUT_FOLDER); - const tmpOutputFolder = resolve(args.output, TMP_OUTPUT_FOLDER); - - if (typeof VERSION !== 'undefined') { - console.log(`Using v${VERSION} version`); - } - - try { - ArgvService.init({ - ...args, - rootInput: args.input, - input: tmpInputFolder, - output: tmpOutputFolder, - }); - SearchService.init(); - Includers.init([OpenapiIncluder as any]); - - const { - output: outputFolderPath, - outputFormat, - lintDisabled, - buildDisabled, - addMapFile, - } = ArgvService.getConfig(); - - preparingTemporaryFolders(userOutputFolder); - - await processServiceFiles(); - processExcludedFiles(); - - if (addMapFile) { - prepareMapFile(); - } - - const outputBundlePath = join(outputFolderPath, BUNDLE_FOLDER); - - if (!lintDisabled) { - /* Initialize workers in advance to avoid a timeout failure due to not receiving a message from them */ - await initLinterWorkers(); - } - - const processes = [ - !lintDisabled && processLinter(), - !buildDisabled && processPages(outputBundlePath), - ].filter(Boolean) as Promise[]; - - await Promise.all(processes); - - if (!buildDisabled) { - // process additional files - processAssets({ - args, - outputFormat, - outputBundlePath, - tmpOutputFolder, - userOutputFolder, - }); - - await processChangelogs(); - - await SearchService.release(); - - // Copy all generated files to user' output folder - shell.cp('-r', join(tmpOutputFolder, '*'), userOutputFolder); - if (glob.sync('.*', {cwd: tmpOutputFolder}).length) { - shell.cp('-r', join(tmpOutputFolder, '.*'), userOutputFolder); - } - } - } catch (err) { - logger.error('', err.message); - } finally { - processLogs(tmpInputFolder); - - shell.rm('-rf', tmpInputFolder, tmpOutputFolder); - } -} - -function preparingTemporaryFolders(userOutputFolder: string) { - const args = ArgvService.getConfig(); - - shell.mkdir('-p', userOutputFolder); - - // Create temporary input/output folders - shell.rm('-rf', args.input, args.output); - shell.mkdir(args.input, args.output); - - copyFiles( - args.rootInput, - args.input, - glob.sync('**', { - cwd: args.rootInput, - nodir: true, - follow: true, - ignore: ['node_modules/**', '*/node_modules/**'], - }), - ); - - shell.chmod('-R', 'u+w', args.input); -} diff --git a/src/cmd/index.ts b/src/cmd/index.ts deleted file mode 100644 index faea8f7e..00000000 --- a/src/cmd/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export {build} from './build'; -// export {publish} from './publish'; -// export {translate} from './translate'; diff --git a/src/commands/build/index.ts b/src/commands/build/index.ts index f41df8c9..bf08189d 100644 --- a/src/commands/build/index.ts +++ b/src/commands/build/index.ts @@ -1,88 +1,309 @@ -import type {IProgram} from '~/program'; -import yargs from 'yargs'; -import {hideBin} from 'yargs/helpers'; -import {Help} from 'commander'; -import log from '@diplodoc/transform/lib/log'; +import type {IProgram, ProgramArgs, ProgramConfig} from '~/program'; +import type {DocAnalytics} from '@diplodoc/client'; + +import {ok} from 'node:assert'; +import {join} from 'node:path'; +import glob from 'glob'; +import {pick} from 'lodash'; +import {AsyncParallelHook, AsyncSeriesHook, HookMap} from 'tapable'; import {BaseProgram} from '~/program/base'; -import {Command} from '~/config'; -import {build} from '~/cmd'; +import {Lang, Stage, YFM_CONFIG_FILENAME} from '~/constants'; +import {Command, Config, configPath, defined, valuable} from '~/config'; +import {OutputFormat, options} from './config'; +import {Run} from './run'; + +import { + Templating, + TemplatingArgs, + TemplatingConfig, + TemplatingRawConfig, +} from './features/templating'; +import {Contributors, ContributorsArgs, ContributorsConfig} from './features/contributors'; +import {SinglePage, SinglePageArgs, SinglePageConfig} from './features/singlepage'; +import {Redirects} from './features/redirects'; +import {Lint, LintArgs, LintConfig, LintRawConfig} from './features/linter'; +import {Changelogs, ChangelogsArgs, ChangelogsConfig} from './features/changelogs'; +import {Search, SearchArgs, SearchConfig, SearchRawConfig} from './features/search'; +import {Legacy, LegacyArgs, LegacyConfig, LegacyRawConfig} from './features/legacy'; +import shell from 'shelljs'; + +export enum ResourceType { + style = 'style', + script = 'script', + csp = 'csp', +} + +// TODO: Move to isolated feature? +export type Resources = { + [key in ResourceType]?: string[]; +}; + +type BaseArgs = {output: AbsolutePath}; + +type BaseConfig = { + lang: `${Lang}`; + // TODO(patch): exetend langs list by newly supported langs or change type to string + langs: `${Lang}`[]; + outputFormat: `${OutputFormat}`; + varsPreset: string; + vars: Hash; + allowHtml: boolean; + sanitizeHtml: boolean; + // TODO(minor): string[] + ignoreStage: string; + ignore: string[]; + addSystemMeta: boolean; + // TODO(minor): we can generate this file all time + addMapFile: boolean; + // TODO(major): can this be solved by `when` prop in toc? + removeHiddenTocItems: boolean; + mergeIncludes: boolean; + // TODO(major): use as default behavior + staticContent: boolean; + // TODO(major): wtf? if we don't need to build, why we call build command? + buildDisabled: boolean; + allowCustomResources: boolean; + resources: Resources; + // TODO: explicitly handle + analytics: DocAnalytics; +}; + +export type {Run}; const command = 'Build'; -export type BuildArgs = {}; +const hooks = () => ({ + /** + * Async series hook which runs before start of any Run type.

+ * Args: + * - run - [Build.Run](./Run.ts) constructed context.
+ * Best place to subscribe on Run hooks. + */ + BeforeAnyRun: new AsyncSeriesHook(['run'], `${command}.BeforeAnyRun`), + /** + * Async series hook map which runs before start of target Run type.

+ * Args: + * - run - [Build.Run](./Run.ts) constructed context.
+ * Best place to subscribe on target Run hooks. + */ + BeforeRun: new HookMap( + (format: `${OutputFormat}`) => + new AsyncSeriesHook(['run'], `${command}.${format}.BeforeRun`), + ), + /** + * Async parallel hook which runs on start of any Run type.

+ * Args: + * - run - [Build.Run](./Run.ts) constructed context.
+ * Best place to do something in parallel with main build process. + */ + Run: new AsyncParallelHook(['run'], `${command}.Run`), + // TODO: decompose handler and describe this hook + AfterRun: new HookMap( + (format: `${OutputFormat}`) => + new AsyncSeriesHook(['run'], `${command}.${format}.AfterRun`), + ), + // TODO: decompose handler and describe this hook + AfterAnyRun: new AsyncSeriesHook(['run'], `${command}.AfterAnyRun`), +}); -export type BuildConfig = {}; +export type BuildArgs = ProgramArgs & + BaseArgs & + Partial< + TemplatingArgs & + ContributorsArgs & + SinglePageArgs & + LintArgs & + ChangelogsArgs & + SearchArgs & + LegacyArgs + >; -const parser = yargs - .command(build) - .option('config', { - alias: 'c', - describe: 'YFM configuration file', - type: 'string', - }) - .option('strict', { - alias: 's', - default: false, - describe: 'Run in strict mode', - type: 'boolean', - }) - .option('quiet', { - alias: 'q', - default: false, - describe: "Run in quiet mode. Don't write logs to stdout", - type: 'boolean', - }) - .group(['config', 'strict', 'quiet', 'help', 'version'], 'Common options:') - .version(typeof VERSION === 'undefined' ? '' : VERSION) - .help(); +export type BuildRawConfig = BaseArgs & + ProgramConfig & + BaseConfig & + TemplatingRawConfig & + ContributorsConfig & + SinglePageConfig & + LintRawConfig & + ChangelogsConfig & + SearchRawConfig & + LegacyRawConfig; + +export type BuildConfig = Config< + BaseArgs & + ProgramConfig & + BaseConfig & + TemplatingConfig & + ContributorsConfig & + SinglePageConfig & + LintConfig & + ChangelogsConfig & + SearchConfig & + LegacyConfig +>; + +export type BuildHooks = ReturnType; export class Build // eslint-disable-next-line new-cap - extends BaseProgram(command, { + extends BaseProgram(command, { config: { - // scope: 'build', - defaults: () => ({}), + scope: 'build', + defaults: () => + ({ + langs: [], + outputFormat: OutputFormat.html, + varsPreset: 'default', + vars: {}, + ignore: [], + allowHtml: true, + sanitizeHtml: true, + addMapFile: false, + removeHiddenTocItems: false, + mergeIncludes: false, + resources: [], + allowCustomResources: false, + staticContent: false, + ignoreStage: Stage.SKIP, + addSystemMeta: false, + buildDisabled: false, + lint: {enabled: true, config: {'log-levels': {}}}, + }) as Partial, }, command: { isDefault: true, }, - hooks: () => {}, + hooks: hooks(), }) implements IProgram { - readonly command = new Command('build') - .allowUnknownOption(true) - .description('Build documentation in target directory'); + readonly templating = new Templating(); + + readonly contributors = new Contributors(); + + readonly singlepage = new SinglePage(); + + readonly redirects = new Redirects(); + + readonly linter = new Lint(); + + readonly changelogs = new Changelogs(); - protected options = []; + readonly search = new Search(); + + readonly legacy = new Legacy(); + + readonly command = new Command('build').description('Build documentation in target directory'); + + readonly options = [ + options.input('./'), + options.output({required: true}), + options.langs, + options.outputFormat, + options.varsPreset, + options.vars, + options.allowHtml, + options.sanitizeHtml, + options.addMapFile, + options.removeHiddenTocItems, + options.mergeIncludes, + options.resources, + options.allowCustomResources, + options.staticContent, + options.addSystemMeta, + options.ignore, + options.ignoreStage, + options.config(YFM_CONFIG_FILENAME), + options.buildDisabled, + ]; apply(program?: IProgram) { - super.apply(program); + this.hooks.Config.tap('Build', (config, args) => { + const langs = defined('langs', args, config) || []; + const lang = defined('lang', config); - this.command.createHelp = function () { - const help = new Help(); - help.formatHelp = () => parser.getHelp(); - return help; - }; - } + if (valuable(lang)) { + if (!langs.length) { + langs.push(lang); + } - async action() { - await parser.parse(hideBin(process.argv), {}, (err, {strict}, output) => { - if (err) { - console.error(err); - process.exit(1); + ok( + langs.includes(lang), + `Configured default lang '${lang}' is not listed in langs (${langs.join(', ')})`, + ); } - const {warn, error} = log.get(); - - if ((strict && warn.length) || error.length) { - process.exit(1); + if (!langs.length) { + langs.push(Lang.RU); } - console.log(output); + const options = [...this.options, ...(program?.options || [])].map((option) => + option.attributeName(), + ); + + Object.assign(config, pick(args, options)); + + config.langs = langs; + config.lang = lang || langs[0]; - process.exit(0); + return config; + }); + + this.hooks.AfterRun.for('md').tap('Build', async (run) => { + if (run.config[configPath]) { + shell.cp(run.config[configPath], run.output); + } }); + + this.templating.apply(this); + this.contributors.apply(this); + this.singlepage.apply(this); + this.redirects.apply(this); + this.linter.apply(this); + this.changelogs.apply(this); + this.search.apply(this); + this.legacy.apply(this); + + super.apply(program); + } + + async action() { + const run = new Run(this.config); + + run.logger.pipe(this.logger); + + // console.log(run.config); + + shell.mkdir('-p', run.originalOutput); + + // Create temporary input/output folders + shell.rm('-rf', run.input, run.output); + shell.mkdir('-p', run.input, run.output); + + await this.hooks.BeforeAnyRun.promise(run); + await this.hooks.BeforeRun.for(this.config.outputFormat).promise(run); + await Promise.all([this.handler(run), this.hooks.Run.promise(run)]); + await this.hooks.AfterRun.for(this.config.outputFormat).promise(run); + await this.hooks.AfterAnyRun.promise(run); + + // Copy all generated files to user' output folder + shell.cp('-r', join(run.output, '*'), run.originalOutput); + + if (glob.sync('.*', {cwd: run.output}).length) { + shell.cp('-r', join(run.output, '.*'), run.originalOutput); + } + + shell.rm('-rf', run.input, run.output); + } + + /** + * Loads handler in async mode to not initialise all deps on startup. + */ + private async handler(run: Run) { + // @ts-ignore + const {handler} = await import('./handler'); + + return handler(run); } } diff --git a/src/config/index.ts b/src/config/index.ts index 0eb966b2..ca43c219 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -146,13 +146,17 @@ type ConfigUtils = { export type Config = T & ConfigUtils; -export function withConfigUtils(path: string, config: T): Config { +export function withConfigUtils(path: string | null, config: T): Config { return { ...config, - resolve(subpath: string): AbsolutePath { + resolve: (subpath: string): AbsolutePath => { + if (path === null) { + return resolve(subpath) as AbsolutePath; + } + return resolve(dirname(path), subpath) as AbsolutePath; }, - [configPath]: resolve(path), + [configPath]: path === null ? path : resolve(path), }; } @@ -169,7 +173,7 @@ export async function resolveConfig( } = {}, ): Promise> { try { - const content = await readFile(path, 'utf8'); + const content = (await readFile(path, 'utf8')) || '{}'; const data = load(content) as Hash; return withConfigUtils(path, { @@ -184,7 +188,7 @@ export async function resolveConfig( case 'ScopeException': case 'ENOENT': if (fallback) { - return withConfigUtils(path, fallback); + return withConfigUtils(null, fallback); } else { throw error; } diff --git a/src/logger/index.ts b/src/logger/index.ts index 6da2e79e..2f8c31ab 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -123,7 +123,9 @@ export class Logger implements LogConsumer { const _writer = this[Symbol.for(level) as keyof LogConsumer]; const _color = color || colors[level]; - const topic = (...messages: string[]) => { + const topic = (...messages: unknown[]) => { + messages = messages.map(extractMessage); + const message = this.filters.reduce((message, filter) => { return filter(level, message); }, messages.join(' ')); @@ -179,3 +181,19 @@ export class Logger implements LogConsumer { } } } + +function extractMessage(error: unknown): string { + if (!error) { + return ''; + } + + if (typeof error === 'string') { + return error; + } + + if (typeof error === 'object' && 'message' in error) { + return String(error.message); + } + + return String(error); +} diff --git a/src/program/config.ts b/src/program/config.ts index f954c4d0..cd63fd93 100644 --- a/src/program/config.ts +++ b/src/program/config.ts @@ -1,6 +1,6 @@ import {resolve} from 'node:path'; import {bold} from 'chalk'; -import {option, toArray} from '~/config'; +import {OptionInfo, option, toArray} from '~/config'; export const NAME = 'yfm'; @@ -12,6 +12,8 @@ ${NAME} build -i ./src -o ./dst If no command passed, ${bold('build')} command will be called by default.`; +const absolute = (path: string) => resolve(process.cwd(), path); + const quiet = option({ flags: '-q, --quiet', desc: ` @@ -46,21 +48,31 @@ const extensions = option({ parser: toArray, }); -const input = (defaultPath?: string) => - option({ +const input = (defaults: string | Partial = {}) => { + const defaultPath = typeof defaults === 'string' ? defaults : defaults.default; + const overrides = typeof defaults === 'string' ? {} : defaults; + + return option({ + ...overrides, flags: '-i, --input ', desc: `Configure path to {{PROGRAM}} input directory.`, - default: defaultPath, + default: defaultPath ? absolute(defaultPath) : undefined, parser: absolute, }); +}; -const output = (defaultPath?: string) => - option({ +const output = (defaults: string | Partial = {}) => { + const defaultPath = typeof defaults === 'string' ? defaults : defaults.default; + const overrides = typeof defaults === 'string' ? {} : defaults; + + return option({ + ...overrides, flags: '-o, --output ', desc: `Configure path to {{PROGRAM}} output directory.`, - default: defaultPath, + default: defaultPath ? absolute(defaultPath) : undefined, parser: absolute, }); +}; const config = (defaultConfig: string) => option({ @@ -78,8 +90,6 @@ const config = (defaultConfig: string) => default: defaultConfig, }); -const absolute = (path: string) => resolve(process.cwd(), path); - export const options = { quiet, strict, diff --git a/src/program/types.ts b/src/program/types.ts index 24b1558e..8992d072 100644 --- a/src/program/types.ts +++ b/src/program/types.ts @@ -1,5 +1,5 @@ import type {Hook, HookMap} from 'tapable'; -import type {Command} from '~/config'; +import type {Command, ExtendedOption} from '~/config'; import type {Logger} from '~/logger'; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -24,13 +24,15 @@ export interface ICallable { * 3. Program can be subprogram. This can be detected by non empty param passed to `apply` method. * But anyway program should be independent unit. * 4. Optional 'action' method - is a main place for hooks call. - * For compatibility with Commander.Command->action methos result shoul be void. + * For compatibility with Commander.Command->action method result should be void. * 5. Complex hook calls should be designed as external private methods named as 'hookMethodName' * (example: hookConfig) */ export interface IProgram extends ICallable { command: Command; + options: Readonly; + parent?: IParent; action?: (props: Args) => Promise | void; diff --git a/src/resolvers/md2html.ts b/src/resolvers/md2html.ts index cd2a1c18..0c9d572c 100644 --- a/src/resolvers/md2html.ts +++ b/src/resolvers/md2html.ts @@ -99,12 +99,7 @@ const getFileProps = async (options: ResolverOptions) => { }, lang, langs, - search: search - ? { - ...(search === true ? {provider: 'local'} : search), - ...SearchService.config(lang), - } - : undefined, + search: search.enabled ? SearchService.config(lang) : undefined, analytics, }; }; diff --git a/src/services/argv.ts b/src/services/argv.ts index 4941a615..8a6b6adb 100644 --- a/src/services/argv.ts +++ b/src/services/argv.ts @@ -10,14 +10,7 @@ function getConfig() { // eslint-disable-next-line @typescript-eslint/no-explicit-any function init(argv: any) { - _argv = { - ...argv, - ignore: Array.isArray(argv.ignore) ? argv.ignore : [], - } as YfmArgv; - - if (argv.vars) { - _argv.vars = JSON.parse(argv.vars); - } + _argv = argv as YfmArgv; try { const ignorefile = readFileSync(join(_argv.rootInput, '.yfmignore'), 'utf8'); diff --git a/src/services/search.ts b/src/services/search.ts index cafd028c..9f4a0aa9 100644 --- a/src/services/search.ts +++ b/src/services/search.ts @@ -22,15 +22,13 @@ function init() { function isSearchEnabled() { const {search} = ArgvService.getConfig(); - return Boolean(search); + return Boolean(search.enabled); } function isLocalSearchEnabled() { const {search} = ArgvService.getConfig(); - return ( - isSearchEnabled() && (search === true || search!.provider === 'local' || !search!.provider) - ); + return isSearchEnabled() && search.provider === 'local'; } function add(path: string, info: DocInnerProps) { @@ -130,6 +128,7 @@ function config(lang: string) { const short = (link: string) => link.replace(output, '').replace(/^\/?/, ''); return { + provider: 'local', api: short(apiLink()), link: short(pageLink(lang)), resources: { diff --git a/src/steps/processAssets.ts b/src/steps/processAssets.ts index 5050adbc..90dada29 100644 --- a/src/steps/processAssets.ts +++ b/src/steps/processAssets.ts @@ -1,8 +1,9 @@ +import type {Run} from '~/commands/build'; + import walkSync from 'walk-sync'; import {load} from 'js-yaml'; import {readFileSync} from 'fs'; -import shell from 'shelljs'; -import {join, resolve, sep} from 'path'; +import {join, relative} from 'path'; import {ArgvService, TocService} from '../services'; import {checkPathExists, copyFiles, findAllValuesByKeys} from '../utils'; @@ -10,12 +11,7 @@ import {checkPathExists, copyFiles, findAllValuesByKeys} from '../utils'; import {DocLeadingPageData, LINK_KEYS} from '@diplodoc/client/ssr'; import {isLocalUrl} from '@diplodoc/transform/lib/utils'; -import { - ASSETS_FOLDER, - LINT_CONFIG_FILENAME, - REDIRECTS_FILENAME, - YFM_CONFIG_FILENAME, -} from '../constants'; +import {ASSETS_FOLDER} from '../constants'; import {Resources} from '../models'; import {resolveRelativePath} from '@diplodoc/transform/lib/utilsFS'; @@ -28,7 +24,7 @@ import {resolveRelativePath} from '@diplodoc/transform/lib/utilsFS'; */ type Props = { - args: string[]; + run: Run; outputBundlePath: string; outputFormat: string; tmpOutputFolder: string; @@ -36,13 +32,13 @@ type Props = { /* * Processes assets files (everything except .md files) */ -export function processAssets({args, outputFormat, outputBundlePath, tmpOutputFolder}: Props) { +export function processAssets({run, outputFormat, outputBundlePath, tmpOutputFolder}: Props) { switch (outputFormat) { case 'html': processAssetsHtmlRun({outputBundlePath}); break; case 'md': - processAssetsMdRun({args, tmpOutputFolder}); + processAssetsMdRun({run, tmpOutputFolder}); break; } } @@ -66,16 +62,8 @@ function processAssetsHtmlRun({outputBundlePath}) { copyFiles(ASSETS_FOLDER, outputBundlePath, bundleAssetFilePath); } -function processAssetsMdRun({args, tmpOutputFolder}) { - const {input: inputFolderPath, allowCustomResources, resources} = ArgvService.getConfig(); - - const pathToConfig = args.config || join(args.input, YFM_CONFIG_FILENAME); - const pathToRedirects = join(args.input, REDIRECTS_FILENAME); - const pathToLintConfig = join(args.input, LINT_CONFIG_FILENAME); - - shell.cp(resolve(pathToConfig), tmpOutputFolder); - shell.cp(resolve(pathToRedirects), tmpOutputFolder); - shell.cp(resolve(pathToLintConfig), tmpOutputFolder); +function processAssetsMdRun({run, tmpOutputFolder}: {run: Run; tmpOutputFolder: string}) { + const {allowCustomResources, resources} = run.config; if (resources && allowCustomResources) { const resourcePaths: string[] = []; @@ -90,17 +78,15 @@ function processAssetsMdRun({args, tmpOutputFolder}) { }); //copy resources - copyFiles(args.input, tmpOutputFolder, resourcePaths); + copyFiles(run.originalInput, tmpOutputFolder, resourcePaths); } const tocYamlFiles = TocService.getNavigationPaths().reduce((acc, file) => { if (file.endsWith('.yaml')) { - const resolvedPathToFile = resolve(inputFolderPath, file); - - acc.push(resolvedPathToFile); + acc.push(join(run.input, file)); } return acc; - }, []); + }, [] as AbsolutePath[]); tocYamlFiles.forEach((yamlFile) => { const content = load(readFileSync(yamlFile, 'utf8')); @@ -118,16 +104,13 @@ function processAssetsMdRun({args, tmpOutputFolder}) { if (linkHasMediaExt && isLocalUrl(link) && checkPathExists(link, yamlFile)) { const linkAbsolutePath = resolveRelativePath(yamlFile, link); - const linkRootPath = linkAbsolutePath.replace(`${inputFolderPath}${sep}`, ''); + const linkRootPath = relative(run.input, linkAbsolutePath); acc.push(linkRootPath); } return acc; - }, - - [], - ); + }, [] as RelativePath[]); - copyFiles(args.input, tmpOutputFolder, localMediaLinks); + copyFiles(run.originalInput, tmpOutputFolder, localMediaLinks); }); } diff --git a/src/validator.ts b/src/validator.ts deleted file mode 100644 index f0289244..00000000 --- a/src/validator.ts +++ /dev/null @@ -1,158 +0,0 @@ -import {Arguments} from 'yargs'; -import {join, resolve} from 'path'; -import {readFileSync} from 'fs'; -import {load} from 'js-yaml'; -import merge from 'lodash/merge'; -import log from '@diplodoc/transform/lib/log'; -import {LINT_CONFIG_FILENAME, REDIRECTS_FILENAME, YFM_CONFIG_FILENAME} from './constants'; -import {ConnectorValidatorProps} from './vcs-connector/connector-models'; - -function notEmptyStringValidator(value: unknown): Boolean { - if (typeof value === 'string') { - return Boolean(value); - } - - return false; -} - -function requiredValueValidator(value: unknown): Boolean { - return Boolean(value); -} - -const validators: Record = { - storageEndpoint: { - errorMessage: 'Endpoint of S3 storage must be provided when publishes.', - validateFn: notEmptyStringValidator, - }, - storageBucket: { - errorMessage: 'Bucket name of S3 storage must be provided when publishes.', - validateFn: notEmptyStringValidator, - }, - storageKeyId: { - errorMessage: 'Key Id of S3 storage must be provided when publishes.', - validateFn: notEmptyStringValidator, - defaultValue: process.env.YFM_STORAGE_KEY_ID, - }, - storageSecretKey: { - errorMessage: 'Secret key of S3 storage must be provided when publishes.', - validateFn: notEmptyStringValidator, - defaultValue: process.env.YFM_STORAGE_SECRET_KEY, - }, - storageRegion: { - errorMessage: 'Region of S3 storage must be provided when publishes.', - validateFn: notEmptyStringValidator, - defaultValue: 'eu-central-1', - }, -}; - -interface Redirect { - from: string; - to: string; -} - -interface RedirectsConfig { - common: Redirect[]; - [lang: string]: Redirect[]; -} - -function validateRedirects(redirectsConfig: RedirectsConfig, pathToRedirects: string) { - const redirects: Redirect[] = Object.keys(redirectsConfig).reduce( - (res, redirectSectionName) => { - const sectionRedirects = redirectsConfig[redirectSectionName]; - res.push(...sectionRedirects); - return res; - }, - [] as Redirect[], - ); - - const getContext = (from: string, to: string) => ` [Context: \n- from: ${from}\n- to: ${to} ]`; - const formatMessage = (message: string, pathname: string, from: string, to: string) => - `${pathname}: ${message} ${getContext(from, to)}`; - - redirects.forEach((redirect) => { - const {from, to} = redirect; - - if (!from || !to) { - throw new Error( - formatMessage('One of the two parameters is missing', pathToRedirects, from, to), - ); - } - - if (from === to) { - throw new Error( - formatMessage('Parameters must be different', pathToRedirects, from, to), - ); - } - }); -} - -export function argvValidator(argv: Arguments): Boolean { - try { - // Combine passed argv and properties from configuration file. - const pathToConfig = argv.config - ? String(argv.config) - : join(String(argv.input), YFM_CONFIG_FILENAME); - const content = readFileSync(resolve(pathToConfig), 'utf8'); - Object.assign(argv, load(content) || {}); - } catch (error) { - if (error.name === 'YAMLException') { - log.error(`Error to parse ${YFM_CONFIG_FILENAME}: ${error.message}`); - } - } - - let lintConfig: unknown = {}; - try { - const pathToConfig = join(String(argv.input), LINT_CONFIG_FILENAME); - const content = readFileSync(resolve(pathToConfig), 'utf8'); - - lintConfig = load(content) || {}; - } catch (error) { - if (error.name === 'YAMLException') { - log.error(`Error to parse ${LINT_CONFIG_FILENAME}: ${error.message}`); - } - } finally { - const preparedLintConfig = merge(lintConfig, { - 'log-levels': { - MD033: argv.allowHTML ? 'disabled' : 'error', - }, - }); - - Object.assign(argv, {lintConfig: preparedLintConfig}); - } - - try { - const pathToRedirects = join(String(argv.input), REDIRECTS_FILENAME); - const redirectsContent = readFileSync(resolve(pathToRedirects), 'utf8'); - const redirects = load(redirectsContent); - - validateRedirects(redirects as RedirectsConfig, pathToRedirects); - } catch (error) { - if (error.name === 'YAMLException') { - log.error(`Error to parse ${REDIRECTS_FILENAME}: ${error.message}`); - } - - if (error.code !== 'ENOENT') { - throw error; - } - } - - if (argv.publish) { - for (const [field, validator] of Object.entries(validators)) { - const value = argv[field] ?? validator.defaultValue; - - if (!validator) { - continue; - } - - const validateFn = validator.validateFn ?? requiredValueValidator; - - if (!validateFn(value)) { - throw new Error(validator.errorMessage); - } - - argv[field] = value; - } - } - - return true; -} From a73e60f23e065decfdf1d994dc62d74e8ba20dd8 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 12:44:01 +0300 Subject: [PATCH 11/18] fix: Enable new unit tests --- .github/workflows/tests.yml | 4 +- package-lock.json | 133 ++---------------------------------- package.json | 6 +- tsconfig.json | 3 +- vitest.config.mjs | 2 +- 5 files changed, 13 insertions(+), 135 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 480664ac..321d0bd5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -26,12 +26,14 @@ jobs: cache: 'npm' - name: Install packages for project run: npm ci + - name: Run unit tests + run: npm run test - run: npm run build - name: Install packages for tests run: | cd tests npm ci - - name: Run tests + - name: Run integration tests run: | cd tests npm run test diff --git a/package-lock.json b/package-lock.json index 69a4e5e8..cf58db8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,7 @@ "@diplodoc/translation": "^1.4.3", "katex": "^0.16.9", "shelljs": "0.8.5", - "threads": "1.7.0", - "yargs": "17.7.2" + "threads": "1.7.0" }, "bin": { "docs": "build/index.js", @@ -5491,49 +5490,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -7975,15 +7931,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-east-asian-width": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", @@ -12032,15 +11979,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -14566,6 +14504,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -14583,12 +14522,14 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14598,6 +14539,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -14660,15 +14602,6 @@ "node": ">= 16" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -14685,24 +14618,6 @@ "node": ">= 6" } }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", @@ -14712,44 +14627,6 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 3e0e4f6b..893b7055 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "src" ], "scripts": { - "build": "node scripts/build.cli.js", + "build": "npm run build:clean && node scripts/build.cli.js", + "build:clean": "rm -rf build assets coverage", "lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"", "lint:fix": "npm run lint -- --fix", "prepublishOnly": "npm run lint && npm run build", @@ -57,8 +58,7 @@ "@diplodoc/translation": "^1.4.3", "katex": "^0.16.9", "shelljs": "0.8.5", - "threads": "1.7.0", - "yargs": "17.7.2" + "threads": "1.7.0" }, "devDependencies": { "@aws-sdk/client-s3": "^3.525.0", diff --git a/tsconfig.json b/tsconfig.json index 77b9d088..3bc49dd1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,13 +4,12 @@ "lib": ["ES2019"], "target": "ES2019", "outDir": "build", - "module": "preserve", + "module": "es2022", "moduleResolution": "bundler", "paths": { "~/*": ["./src/*"] } }, "include": ["src"], - "exclude": ["node_modules"], "types": ["node"] } diff --git a/vitest.config.mjs b/vitest.config.mjs index 8176b495..0bc0ab79 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -11,7 +11,7 @@ export default defineConfig({ enabled: true, provider: 'v8', include: [ - 'src/cmd', + 'src/commands', 'src/program', 'src/config', 'src/logger', From b22310c99549ebc0034bde4d9ee844e4cfd169f8 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 13:20:47 +0300 Subject: [PATCH 12/18] chore: Update package-lock --- package-lock.json | 2198 +-------------------------------------------- 1 file changed, 6 insertions(+), 2192 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf58db8b..cee4945d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,8 +77,6 @@ }, "node_modules/@ampproject/remapping": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -90,8 +88,6 @@ }, "node_modules/@apidevtools/json-schema-ref-parser": { "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz", - "integrity": "sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==", "dev": true, "license": "MIT", "dependencies": { @@ -102,8 +98,6 @@ }, "node_modules/@apidevtools/json-schema-ref-parser/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { @@ -112,8 +106,6 @@ }, "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -126,8 +118,6 @@ }, "node_modules/@apidevtools/openapi-schemas": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", - "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", "dev": true, "license": "MIT", "engines": { @@ -136,15 +126,11 @@ }, "node_modules/@apidevtools/swagger-methods": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", "dev": true, "license": "MIT" }, "node_modules/@apidevtools/swagger-parser": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz", - "integrity": "sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==", "dev": true, "license": "MIT", "dependencies": { @@ -162,8 +148,6 @@ }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -177,8 +161,6 @@ }, "node_modules/@aws-crypto/crc32c": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", - "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -189,8 +171,6 @@ }, "node_modules/@aws-crypto/sha1-browser": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", - "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -204,8 +184,6 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -217,8 +195,6 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -231,8 +207,6 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -245,8 +219,6 @@ }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -261,8 +233,6 @@ }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -274,8 +244,6 @@ }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -288,8 +256,6 @@ }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -302,8 +268,6 @@ }, "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -317,8 +281,6 @@ }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -327,8 +289,6 @@ }, "node_modules/@aws-crypto/util": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -339,8 +299,6 @@ }, "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -352,8 +310,6 @@ }, "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -366,8 +322,6 @@ }, "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -380,8 +334,6 @@ }, "node_modules/@aws-sdk/client-s3": { "version": "3.685.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.685.0.tgz", - "integrity": "sha512-ClvMeQHbLhWkpxnVymo4qWS5/yZcPXjorDbSday3joCWYWCSHTO409nWd+jx6eA4MKT/EY/uJ6ZBJRFfByKLuA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -450,8 +402,6 @@ }, "node_modules/@aws-sdk/client-sso": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.682.0.tgz", - "integrity": "sha512-PYH9RFUMYLFl66HSBq4tIx6fHViMLkhJHTYJoJONpBs+Td+NwVJ895AdLtDsBIhMS0YseCbPpuyjUCJgsUrwUw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -500,8 +450,6 @@ }, "node_modules/@aws-sdk/client-sso-oidc": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.682.0.tgz", - "integrity": "sha512-ZPZ7Y/r/w3nx/xpPzGSqSQsB090Xk5aZZOH+WBhTDn/pBEuim09BYXCLzvvxb7R7NnuoQdrTJiwimdJAhHl7ZQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -554,8 +502,6 @@ }, "node_modules/@aws-sdk/client-sts": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.682.0.tgz", - "integrity": "sha512-xKuo4HksZ+F8m9DOfx/ZuWNhaPuqZFPwwy0xqcBT6sWH7OAuBjv/fnpOTzyQhpVTWddlf+ECtMAMrxjxuOExGQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -606,8 +552,6 @@ }, "node_modules/@aws-sdk/core": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.679.0.tgz", - "integrity": "sha512-CS6PWGX8l4v/xyvX8RtXnBisdCa5+URzKd0L6GvHChype9qKUVxO/Gg6N/y43Hvg7MNWJt9FBPNWIxUB+byJwg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -629,8 +573,6 @@ }, "node_modules/@aws-sdk/credential-provider-env": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.679.0.tgz", - "integrity": "sha512-EdlTYbzMm3G7VUNAMxr9S1nC1qUNqhKlAxFU8E7cKsAe8Bp29CD5HAs3POc56AVo9GC4yRIS+/mtlZSmrckzUA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -646,8 +588,6 @@ }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.679.0.tgz", - "integrity": "sha512-ZoKLubW5DqqV1/2a3TSn+9sSKg0T8SsYMt1JeirnuLJF0mCoYFUaWMyvxxKuxPoqvUsaycxKru4GkpJ10ltNBw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -668,8 +608,6 @@ }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.682.0.tgz", - "integrity": "sha512-6eqWeHdK6EegAxqDdiCi215nT3QZPwukgWAYuVxNfJ/5m0/P7fAzF+D5kKVgByUvGJEbq/FEL8Fw7OBe64AA+g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -695,8 +633,6 @@ }, "node_modules/@aws-sdk/credential-provider-node": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.682.0.tgz", - "integrity": "sha512-HSmDqZcBVZrTctHCT9m++vdlDfJ1ARI218qmZa+TZzzOFNpKWy6QyHMEra45GB9GnkkMmV6unoDSPMuN0AqcMg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -719,8 +655,6 @@ }, "node_modules/@aws-sdk/credential-provider-process": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.679.0.tgz", - "integrity": "sha512-u/p4TV8kQ0zJWDdZD4+vdQFTMhkDEJFws040Gm113VHa/Xo1SYOjbpvqeuFoz6VmM0bLvoOWjxB9MxnSQbwKpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -737,8 +671,6 @@ }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.682.0.tgz", - "integrity": "sha512-h7IH1VsWgV6YAJSWWV6y8uaRjGqLY3iBpGZlXuTH/c236NMLaNv+WqCBLeBxkFGUb2WeQ+FUPEJDCD69rgLIkg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -757,8 +689,6 @@ }, "node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.679.0.tgz", - "integrity": "sha512-a74tLccVznXCaBefWPSysUcLXYJiSkeUmQGtalNgJ1vGkE36W5l/8czFiiowdWdKWz7+x6xf0w+Kjkjlj42Ung==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -777,8 +707,6 @@ }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.679.0.tgz", - "integrity": "sha512-5EpiPhhGgnF+uJR4DzWUk6Lx3pOn9oM6JGXxeHsiynfoBfq7vHMleq+uABHHSQS+y7XzbyZ7x8tXNQlliMwOsg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -796,8 +724,6 @@ }, "node_modules/@aws-sdk/middleware-expect-continue": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.679.0.tgz", - "integrity": "sha512-nYsh9PdWrF4EahTRdXHGlNud82RPc508CNGdh1lAGfPU3tNveGfMBX3PcGBtPOse3p9ebNKRWVmUc9eXSjGvHA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -812,8 +738,6 @@ }, "node_modules/@aws-sdk/middleware-flexible-checksums": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.682.0.tgz", - "integrity": "sha512-5u1STth6iZUtAvPDO0NJVYKUX2EYKU7v84MYYaZ3O27HphRjFqDos0keL2KTnHn/KmMD68rM3yiUareWR8hnAQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -835,8 +759,6 @@ }, "node_modules/@aws-sdk/middleware-host-header": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.679.0.tgz", - "integrity": "sha512-y176HuQ8JRY3hGX8rQzHDSbCl9P5Ny9l16z4xmaiLo+Qfte7ee4Yr3yaAKd7GFoJ3/Mhud2XZ37fR015MfYl2w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -851,8 +773,6 @@ }, "node_modules/@aws-sdk/middleware-location-constraint": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.679.0.tgz", - "integrity": "sha512-SA1C1D3XgoKTGxyNsOqd016ONpk46xJLWDgJUd00Zb21Ox5wYCoY6aDRKiaMRW+1VfCJdezs1Do3XLyIU9KxyA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -866,8 +786,6 @@ }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.679.0.tgz", - "integrity": "sha512-0vet8InEj7nvIvGKk+ch7bEF5SyZ7Us9U7YTEgXPrBNStKeRUsgwRm0ijPWWd0a3oz2okaEwXsFl7G/vI0XiEA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -881,8 +799,6 @@ }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.679.0.tgz", - "integrity": "sha512-sQoAZFsQiW/LL3DfKMYwBoGjYDEnMbA9WslWN8xneCmBAwKo6IcSksvYs23PP8XMIoBGe2I2J9BSr654XWygTQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -897,8 +813,6 @@ }, "node_modules/@aws-sdk/middleware-sdk-s3": { "version": "3.685.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.685.0.tgz", - "integrity": "sha512-C4w92b3A99NbghrA2Ssw6y1RbDF3I3Bgzi2Izh0pXgyIoDiX0xs9bUs/FGYLK4uepYr78DAZY8DwEpzjWIXkSA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -923,8 +837,6 @@ }, "node_modules/@aws-sdk/middleware-ssec": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.679.0.tgz", - "integrity": "sha512-4GNUxXbs1M71uFHRiCAZtN0/g23ogI9YjMe5isAuYMHXwDB3MhqF7usKf954mBP6tplvN44vYlbJ84faaLrTtg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -938,8 +850,6 @@ }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.682.0.tgz", - "integrity": "sha512-7TyvYR9HdGH1/Nq0eeApUTM4izB6rExiw87khVYuJwZHr6FmvIL1FsOVFro/4WlXa0lg4LiYOm/8H8dHv+fXTg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -957,8 +867,6 @@ }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.679.0.tgz", - "integrity": "sha512-Ybx54P8Tg6KKq5ck7uwdjiKif7n/8g1x+V0V9uTjBjRWqaIgiqzXwKWoPj6NCNkE7tJNtqI4JrNxp/3S3HvmRw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -975,8 +883,6 @@ }, "node_modules/@aws-sdk/signature-v4-multi-region": { "version": "3.685.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.685.0.tgz", - "integrity": "sha512-IHLwuAZGqfUWVrNqw0ugnBa7iL8uBP4x6A7bfBDXRXWCWjUCed/1/D//0lKDHwpFkV74fGW6KoBacnWSUlXmwA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -993,8 +899,6 @@ }, "node_modules/@aws-sdk/token-providers": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.679.0.tgz", - "integrity": "sha512-1/+Zso/x2jqgutKixYFQEGli0FELTgah6bm7aB+m2FAWH4Hz7+iMUsazg6nSWm714sG9G3h5u42Dmpvi9X6/hA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1013,8 +917,6 @@ }, "node_modules/@aws-sdk/types": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.679.0.tgz", - "integrity": "sha512-NwVq8YvInxQdJ47+zz4fH3BRRLC6lL+WLkvr242PVBbUOLRyK/lkwHlfiKUoeVIMyK5NF+up6TRg71t/8Bny6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1027,8 +929,6 @@ }, "node_modules/@aws-sdk/util-arn-parser": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.679.0.tgz", - "integrity": "sha512-CwzEbU8R8rq9bqUFryO50RFBlkfufV9UfMArHPWlo+lmsC+NlSluHQALoj6Jkq3zf5ppn1CN0c1DDLrEqdQUXg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1040,8 +940,6 @@ }, "node_modules/@aws-sdk/util-endpoints": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.679.0.tgz", - "integrity": "sha512-YL6s4Y/1zC45OvddvgE139fjeWSKKPgLlnfrvhVL7alNyY9n7beR4uhoDpNrt5mI6sn9qiBF17790o+xLAXjjg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1056,8 +954,6 @@ }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.679.0.tgz", - "integrity": "sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1069,8 +965,6 @@ }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.679.0.tgz", - "integrity": "sha512-CusSm2bTBG1kFypcsqU8COhnYc6zltobsqs3nRrvYqYaOqtMnuE46K4XTWpnzKgwDejgZGOE+WYyprtAxrPvmQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1082,8 +976,6 @@ }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.682.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.682.0.tgz", - "integrity": "sha512-so5s+j0gPoTS0HM4HPL+G0ajk0T6cQAg8JXzRgvyiQAxqie+zGCZAV3VuVeMNWMVbzsgZl0pYZaatPFTLG/AxA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1107,8 +999,6 @@ }, "node_modules/@aws-sdk/xml-builder": { "version": "3.679.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.679.0.tgz", - "integrity": "sha512-nPmhVZb39ty5bcQ7mAwtjezBcsBqTYZ9A2D9v/lE92KCLdu5RhSkPH7O71ZqbZx1mUSg9fAOxHPiG79U5VlpLQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1121,8 +1011,6 @@ }, "node_modules/@babel/code-frame": { "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", @@ -1135,8 +1023,6 @@ }, "node_modules/@babel/compat-data": { "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1144,8 +1030,6 @@ }, "node_modules/@babel/core": { "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -1174,8 +1058,6 @@ }, "node_modules/@babel/eslint-parser": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz", - "integrity": "sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==", "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -1192,8 +1074,6 @@ }, "node_modules/@babel/generator": { "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.26.2", @@ -1208,8 +1088,6 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "license": "MIT", "dependencies": { "@babel/types": "^7.25.9" @@ -1220,8 +1098,6 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "license": "MIT", "dependencies": { "@babel/compat-data": "^7.25.9", @@ -1236,8 +1112,6 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", @@ -1249,8 +1123,6 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", @@ -1266,8 +1138,6 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1275,8 +1145,6 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1284,8 +1152,6 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1293,8 +1159,6 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1302,8 +1166,6 @@ }, "node_modules/@babel/helpers": { "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "license": "MIT", "dependencies": { "@babel/template": "^7.25.9", @@ -1315,8 +1177,6 @@ }, "node_modules/@babel/parser": { "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "license": "MIT", "dependencies": { "@babel/types": "^7.26.0" @@ -1330,8 +1190,6 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" @@ -1345,8 +1203,6 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" @@ -1360,8 +1216,6 @@ }, "node_modules/@babel/plugin-transform-react-display-name": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", - "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" @@ -1375,8 +1229,6 @@ }, "node_modules/@babel/plugin-transform-react-jsx": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", - "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", @@ -1394,8 +1246,6 @@ }, "node_modules/@babel/plugin-transform-react-jsx-development": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", - "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", "license": "MIT", "dependencies": { "@babel/plugin-transform-react-jsx": "^7.25.9" @@ -1409,8 +1259,6 @@ }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", - "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", @@ -1425,8 +1273,6 @@ }, "node_modules/@babel/preset-react": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz", - "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", @@ -1445,8 +1291,6 @@ }, "node_modules/@babel/runtime": { "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, "license": "MIT", "dependencies": { @@ -1458,8 +1302,6 @@ }, "node_modules/@babel/template": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.25.9", @@ -1472,8 +1314,6 @@ }, "node_modules/@babel/traverse": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.25.9", @@ -1490,8 +1330,6 @@ }, "node_modules/@babel/types": { "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -1503,28 +1341,20 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, "node_modules/@bem-react/classname": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@bem-react/classname/-/classname-1.6.0.tgz", - "integrity": "sha512-SFBwUHMcb7TFFK5ld88+JhecoEun3/kHZ6KvLDjj3w5hv/tfRV8mtGHA8N42uMctXLF4bPEcr96xwXXcRFuweg==", "dev": true, "license": "MPL-2.0" }, "node_modules/@braintree/sanitize-url": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", - "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", "license": "MIT" }, "node_modules/@cospired/i18n-iso-languages": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@cospired/i18n-iso-languages/-/i18n-iso-languages-4.2.0.tgz", - "integrity": "sha512-vy8cq1176MTxVwB1X9niQjcIYOH29F8Huxtx8hLmT5Uz3l1ztGDGri8KN/4zE7LV2mCT7JrcAoNV/I9yb+lNUw==", "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1532,8 +1362,6 @@ }, "node_modules/@csstools/css-parser-algorithms": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", "funding": [ { "type": "github", @@ -1554,8 +1382,6 @@ }, "node_modules/@csstools/css-tokenizer": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", "funding": [ { "type": "github", @@ -1573,8 +1399,6 @@ }, "node_modules/@csstools/media-query-list-parser": { "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", "funding": [ { "type": "github", @@ -1596,8 +1420,6 @@ }, "node_modules/@csstools/selector-specificity": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", "funding": [ { "type": "github", @@ -1618,8 +1440,6 @@ }, "node_modules/@diplodoc/client": { "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@diplodoc/client/-/client-3.1.8.tgz", - "integrity": "sha512-vaDHtw4m03wc9uGDdiHEbsPYcczwoyH0Xzcg4CjEGB/ud4HqnATXcLExz09JVJU8IIV6zEvT2/ZaL1iB0VoO4w==", "license": "ISC", "dependencies": { "@diplodoc/latex-extension": "^1.3.2", @@ -1635,8 +1455,6 @@ }, "node_modules/@diplodoc/components": { "version": "4.15.5", - "resolved": "https://registry.npmjs.org/@diplodoc/components/-/components-4.15.5.tgz", - "integrity": "sha512-Brwmip7CRmAHTDSzqYILEbxMl0UlqqjcDMvr6Z2478Z4aJY+dEaMqyqtQdns/2fu1voehFNY3DtKqD0gLAl/cQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1671,8 +1489,6 @@ }, "node_modules/@diplodoc/cut-extension": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@diplodoc/cut-extension/-/cut-extension-0.3.2.tgz", - "integrity": "sha512-55AgVEIiy3GHorZRht3dm1AcFWdgCMAn8yGV/8qp8sPQ4LssPPuCrVzCVFMn7o8d3KZbEDt5dDj6kI1KtVaWQg==", "license": "MIT", "peerDependencies": { "@diplodoc/utils": "1.0.0", @@ -1697,8 +1513,6 @@ }, "node_modules/@diplodoc/latex-extension": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@diplodoc/latex-extension/-/latex-extension-1.3.2.tgz", - "integrity": "sha512-cD/+SW/VYRWQmVXntvjf78/huZ5Sj4OrJDljWCfU+NEGosCeDw4B4NNMePEwy9brwjoPX/kXfe80eK+daTeVfw==", "license": "MIT", "peerDependencies": { "katex": "^0.16.9", @@ -1713,8 +1527,6 @@ }, "node_modules/@diplodoc/lint": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@diplodoc/lint/-/lint-1.2.0.tgz", - "integrity": "sha512-SzNhJVepMWeN8lW4wQbl+aBYubFy/CQO3o1EL63dv0UGmPgoEtfvAiXMBzqQJ5+Zb27VVB99j7m43qzVirFWgg==", "license": "MIT", "dependencies": { "@babel/plugin-syntax-import-assertions": "^7.25.6", @@ -1744,8 +1556,6 @@ }, "node_modules/@diplodoc/lint/node_modules/ansi-escapes": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "license": "MIT", "dependencies": { "environment": "^1.0.0" @@ -1759,8 +1569,6 @@ }, "node_modules/@diplodoc/lint/node_modules/ansi-regex": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "license": "MIT", "engines": { "node": ">=12" @@ -1771,8 +1579,6 @@ }, "node_modules/@diplodoc/lint/node_modules/ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "license": "MIT", "engines": { "node": ">=12" @@ -1783,8 +1589,6 @@ }, "node_modules/@diplodoc/lint/node_modules/chalk": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -1795,8 +1599,6 @@ }, "node_modules/@diplodoc/lint/node_modules/cli-cursor": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "license": "MIT", "dependencies": { "restore-cursor": "^5.0.0" @@ -1810,8 +1612,6 @@ }, "node_modules/@diplodoc/lint/node_modules/cli-truncate": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", @@ -1826,14 +1626,10 @@ }, "node_modules/@diplodoc/lint/node_modules/emoji-regex": { "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "license": "MIT" }, "node_modules/@diplodoc/lint/node_modules/eslint-plugin-security": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.1.tgz", - "integrity": "sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==", "license": "Apache-2.0", "dependencies": { "safe-regex": "^2.1.1" @@ -1847,8 +1643,6 @@ }, "node_modules/@diplodoc/lint/node_modules/execa": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -1870,8 +1664,6 @@ }, "node_modules/@diplodoc/lint/node_modules/get-stream": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "license": "MIT", "engines": { "node": ">=16" @@ -1882,8 +1674,6 @@ }, "node_modules/@diplodoc/lint/node_modules/human-signals": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "license": "Apache-2.0", "engines": { "node": ">=16.17.0" @@ -1891,8 +1681,6 @@ }, "node_modules/@diplodoc/lint/node_modules/husky": { "version": "9.1.6", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", - "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "license": "MIT", "bin": { "husky": "bin.js" @@ -1906,8 +1694,6 @@ }, "node_modules/@diplodoc/lint/node_modules/is-fullwidth-code-point": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "license": "MIT", "dependencies": { "get-east-asian-width": "^1.0.0" @@ -1921,8 +1707,6 @@ }, "node_modules/@diplodoc/lint/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -1933,8 +1717,6 @@ }, "node_modules/@diplodoc/lint/node_modules/lilconfig": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "license": "MIT", "engines": { "node": ">=14" @@ -1945,8 +1727,6 @@ }, "node_modules/@diplodoc/lint/node_modules/lint-staged": { "version": "15.2.10", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", - "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", "license": "MIT", "dependencies": { "chalk": "~5.3.0", @@ -1972,8 +1752,6 @@ }, "node_modules/@diplodoc/lint/node_modules/listr2": { "version": "8.2.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", "license": "MIT", "dependencies": { "cli-truncate": "^4.0.0", @@ -1989,8 +1767,6 @@ }, "node_modules/@diplodoc/lint/node_modules/log-update": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "license": "MIT", "dependencies": { "ansi-escapes": "^7.0.0", @@ -2008,8 +1784,6 @@ }, "node_modules/@diplodoc/lint/node_modules/log-update/node_modules/slice-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", @@ -2024,8 +1798,6 @@ }, "node_modules/@diplodoc/lint/node_modules/mimic-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "license": "MIT", "engines": { "node": ">=12" @@ -2036,8 +1808,6 @@ }, "node_modules/@diplodoc/lint/node_modules/npm-run-path": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "license": "MIT", "dependencies": { "path-key": "^4.0.0" @@ -2051,8 +1821,6 @@ }, "node_modules/@diplodoc/lint/node_modules/onetime": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" @@ -2066,8 +1834,6 @@ }, "node_modules/@diplodoc/lint/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "license": "MIT", "engines": { "node": ">=12" @@ -2078,8 +1844,6 @@ }, "node_modules/@diplodoc/lint/node_modules/pidtree": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" @@ -2090,8 +1854,6 @@ }, "node_modules/@diplodoc/lint/node_modules/restore-cursor": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "license": "MIT", "dependencies": { "onetime": "^7.0.0", @@ -2106,8 +1868,6 @@ }, "node_modules/@diplodoc/lint/node_modules/restore-cursor/node_modules/onetime": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "license": "MIT", "dependencies": { "mimic-function": "^5.0.0" @@ -2121,8 +1881,6 @@ }, "node_modules/@diplodoc/lint/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "license": "ISC", "engines": { "node": ">=14" @@ -2133,8 +1891,6 @@ }, "node_modules/@diplodoc/lint/node_modules/string-width": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", @@ -2150,8 +1906,6 @@ }, "node_modules/@diplodoc/lint/node_modules/strip-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -2165,8 +1919,6 @@ }, "node_modules/@diplodoc/lint/node_modules/strip-final-newline": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "license": "MIT", "engines": { "node": ">=12" @@ -2177,8 +1929,6 @@ }, "node_modules/@diplodoc/lint/node_modules/wrap-ansi": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", @@ -2194,8 +1944,6 @@ }, "node_modules/@diplodoc/lint/node_modules/yaml": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -2256,8 +2004,6 @@ }, "node_modules/@diplodoc/prettier-config": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@diplodoc/prettier-config/-/prettier-config-2.0.0.tgz", - "integrity": "sha512-pmhLIPxNFcm6DHFiVopfes7+jUShOM+oo3eJW2LgQjW+fNYzwxhoTInFv7nNHd99ooguzKELvBjZQsBVRuYY5w==", "dev": true, "license": "MIT", "dependencies": { @@ -2281,8 +2027,6 @@ }, "node_modules/@diplodoc/sentenizer": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@diplodoc/sentenizer/-/sentenizer-0.0.8.tgz", - "integrity": "sha512-xiAi5gB49UxZZyVWOKw7sE/ixhCUpV4pmdtMnRtdtrljfNd7GZPghQoKutA/zFwEI2B5g+gyCJ59+rhrL19p7g==", "license": "MIT", "dependencies": { "@types/ramda": "^0.28.13", @@ -2291,8 +2035,6 @@ }, "node_modules/@diplodoc/tabs-extension": { "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@diplodoc/tabs-extension/-/tabs-extension-3.5.1.tgz", - "integrity": "sha512-YfxEiSq6S0E4XBmdgcTrV9Zh6LWjYKi5CixWzfe2NZt7OqT6WqcEXt4q9wSmtDMzlZf5pVYbl+y9+swVWqf9yQ==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -2305,8 +2047,6 @@ }, "node_modules/@diplodoc/transform": { "version": "4.34.0", - "resolved": "https://registry.npmjs.org/@diplodoc/transform/-/transform-4.34.0.tgz", - "integrity": "sha512-X+3iszrotZwKXo6zqcjE5y3ZeHaMHGESEVGavqPKxWV5yGbU0Uv+t5wO7KG5El0drTOIR0vN21L6hh7JXaTx7g==", "license": "MIT", "dependencies": { "@diplodoc/cut-extension": "^0.3.0", @@ -2341,8 +2081,6 @@ }, "node_modules/@diplodoc/transform/node_modules/slugify": { "version": "1.6.5", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", - "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", "license": "MIT", "engines": { "node": ">=8.0.0" @@ -2350,8 +2088,6 @@ }, "node_modules/@diplodoc/translation": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@diplodoc/translation/-/translation-1.4.4.tgz", - "integrity": "sha512-vrT966AjWgHjI7W7mJ/2h+j0i1O/rM6dkEbdawZSBfFenOzBbbcqEeb1zipm+f7SUcSr9wACzlzcD3rF+pGRZw==", "license": "MIT", "dependencies": { "@cospired/i18n-iso-languages": "^4.1.0", @@ -2385,21 +2121,15 @@ }, "node_modules/@diplodoc/translation/node_modules/markdown-it-deflist": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-deflist/-/markdown-it-deflist-3.0.0.tgz", - "integrity": "sha512-OxPmQ/keJZwbubjiQWOvKLHwpV2wZ5I3Smc81OjhwbfJsjdRrvD5aLTQxmZzzePeO0kbGzAo3Krk4QLgA8PWLg==", "license": "MIT" }, "node_modules/@diplodoc/tsconfig": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@diplodoc/tsconfig/-/tsconfig-1.0.2.tgz", - "integrity": "sha512-Yfrj12T3+/+lcitddoMDXQHbEu6jg0CBHzeUoRJJq7GjuwgeIqlb2i1326Gud4IZlC6uaW2GFprB0iJnGWn4DQ==", "dev": true, "license": "MIT" }, "node_modules/@diplodoc/utils": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@diplodoc/utils/-/utils-1.0.0.tgz", - "integrity": "sha512-rGDVyqZyJ4GUjuUIYeMG7w6w5mb1dLF/nkloWEyxqZWy/POO4GiHAG83d4wK6U3gTFGTe+BXabQzdIKZwNVCTw==", "license": "MIT", "peer": true }, @@ -2420,8 +2150,6 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" @@ -2438,8 +2166,6 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2450,8 +2176,6 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -2459,8 +2183,6 @@ }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -2482,8 +2204,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -2498,8 +2218,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -2508,8 +2226,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "license": "MIT", "dependencies": { "type-fest": "^0.20.2" @@ -2523,14 +2239,10 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -2541,8 +2253,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -2553,8 +2263,6 @@ }, "node_modules/@eslint/js": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2562,8 +2270,6 @@ }, "node_modules/@gravity-ui/components": { "version": "3.12.4", - "resolved": "https://registry.npmjs.org/@gravity-ui/components/-/components-3.12.4.tgz", - "integrity": "sha512-p9wdijnxga+mi5A+VgDP+8uxBlnbpviMdK2t7pWSxUL3hFZyTQR471EFA9gRd2cieRmD26M0Rb7nU0U5iu/d/w==", "dev": true, "license": "MIT", "dependencies": { @@ -2583,8 +2289,6 @@ }, "node_modules/@gravity-ui/date-components": { "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@gravity-ui/date-components/-/date-components-2.10.3.tgz", - "integrity": "sha512-hGcXSnDIKA1YDr/6k/xGXJJv/AcA2xi5jFB1nYWakz5umvB11/yqudfSBndFfDbfBINtREPjlYzTIzGqz5TEbg==", "dev": true, "license": "MIT", "dependencies": { @@ -2601,8 +2305,6 @@ }, "node_modules/@gravity-ui/date-utils": { "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@gravity-ui/date-utils/-/date-utils-2.5.5.tgz", - "integrity": "sha512-82IzJwmOaDqrJVa7IXOhWqI60epNx63gseiRhUOMDfAza+ra4tRORfTNa9ofV/lGYW5DVqoWJulMNpzDU0cM2g==", "dev": true, "license": "MIT", "dependencies": { @@ -2612,8 +2314,6 @@ }, "node_modules/@gravity-ui/dynamic-forms": { "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@gravity-ui/dynamic-forms/-/dynamic-forms-4.14.0.tgz", - "integrity": "sha512-bv83s62hJbMAgKyO2g7lHN7ceCF8VlTppj0I8y/14OsUQm718XHvNIkc0GQv6kSZ9iHqNhOfhCH8zp0Qgs1reA==", "dev": true, "license": "MIT", "dependencies": { @@ -2636,8 +2336,6 @@ }, "node_modules/@gravity-ui/eslint-config": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@gravity-ui/eslint-config/-/eslint-config-3.2.0.tgz", - "integrity": "sha512-WlHo3tK2xqAJ2mmcYIHEpe6MBg7n2geygkO6KuP6rxuOvyPM+qUtq7BWI4n0T2XiYtCm5RJWpc4wpyqjtt8dNw==", "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", @@ -2666,15 +2364,11 @@ }, "node_modules/@gravity-ui/i18n": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@gravity-ui/i18n/-/i18n-1.6.0.tgz", - "integrity": "sha512-ftMLGZy7migLEtPkZa8jM6onipIeEOnEg9976RRpg3f39H+Q2bYYAGMjU+NJpWQ90ZDp6ztYLt5WAMEg248tEg==", "dev": true, "license": "MIT" }, "node_modules/@gravity-ui/icons": { "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@gravity-ui/icons/-/icons-2.11.0.tgz", - "integrity": "sha512-kRiemFztlFV4iUcsbdGRM/2ozK6XZYkzOV4hIzSmNDqtXpEoumm7LhzOLCiugN68YQrazzJLksq4Ho8lpjkVrg==", "license": "MIT", "peerDependencies": { "react": "*" @@ -2686,10 +2380,11 @@ } }, "node_modules/@gravity-ui/page-constructor": { - "version": "5.29.1", - "resolved": "https://registry.npmjs.org/@gravity-ui/page-constructor/-/page-constructor-5.29.1.tgz", - "integrity": "sha512-/+Dyd9yzPmx7c/eNC2FlR1zb1XOBm7kGMScq1lkkikTbPwnsYhjf4cVca3+Ejc3tiNrcNNTjcf8c9KIAVlnJaA==", + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@gravity-ui/page-constructor/-/page-constructor-5.30.0.tgz", + "integrity": "sha512-C6XMZYgADerNTZ3oxOEwvvdg5rPX+stEx79Yi1IdlZZlvV6CCSfo+oFhyJ+hyxeQXLxQtJyLrLb2oO3DAbABlw==", "dev": true, + "license": "MIT", "dependencies": { "@bem-react/classname": "^1.6.0", "@gravity-ui/components": "^3.8.0", @@ -2724,8 +2419,6 @@ }, "node_modules/@gravity-ui/page-constructor/node_modules/htmlparser2": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -2744,8 +2437,6 @@ }, "node_modules/@gravity-ui/page-constructor/node_modules/sanitize-html": { "version": "2.12.1", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.12.1.tgz", - "integrity": "sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA==", "dev": true, "license": "MIT", "dependencies": { @@ -2759,8 +2450,6 @@ }, "node_modules/@gravity-ui/prettier-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@gravity-ui/prettier-config/-/prettier-config-1.1.0.tgz", - "integrity": "sha512-Q97lMSOqdAf337qblkq06mLgK9OEEGglPAj8ncs3WnaZ2rBtOxtNsCIubv5U64TZkxaNPzxd7rDL24VIv1sxJg==", "license": "MIT", "peerDependencies": { "prettier": "*" @@ -2768,8 +2457,6 @@ }, "node_modules/@gravity-ui/stylelint-config": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@gravity-ui/stylelint-config/-/stylelint-config-4.0.1.tgz", - "integrity": "sha512-Yn5gnfnLt46e0XqTAt41c7OTEMGVt2Cx7cLv1awTKYo7GLTyWuW3Ir7zx5N0J2QiC/LWfouwglOF+KqwVUkXug==", "license": "MIT", "dependencies": { "postcss-scss": "^4.0.7", @@ -2790,8 +2477,6 @@ }, "node_modules/@gravity-ui/uikit": { "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@gravity-ui/uikit/-/uikit-6.34.0.tgz", - "integrity": "sha512-7hRMubk1U2KNj7qGk3GgsW1mM+v/QSIqJa1BRNuA+udeoWn0V06uNokxkiN4/ksuyGNqT/cC3xQ4rkgayTkLHA==", "dev": true, "license": "MIT", "peer": true, @@ -2820,9 +2505,6 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", @@ -2835,8 +2517,6 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -2845,8 +2525,6 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -2857,8 +2535,6 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -2870,15 +2546,10 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", "engines": { @@ -2887,8 +2558,6 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { @@ -2900,8 +2569,6 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -2914,8 +2581,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2923,8 +2588,6 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2932,14 +2595,10 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2948,15 +2607,11 @@ }, "node_modules/@jsdevtools/ono": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", "dev": true, "license": "MIT" }, "node_modules/@kwsites/file-exists": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", "dev": true, "license": "MIT", "dependencies": { @@ -2965,15 +2620,11 @@ }, "node_modules/@kwsites/promise-deferred": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "dev": true, "license": "MIT" }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" @@ -2981,8 +2632,6 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -2994,8 +2643,6 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", "engines": { "node": ">= 8" @@ -3003,8 +2650,6 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -3016,8 +2661,6 @@ }, "node_modules/@nolyfill/is-core-module": { "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", "license": "MIT", "engines": { "node": ">=12.4.0" @@ -3025,8 +2668,6 @@ }, "node_modules/@octokit/auth-token": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", "dev": true, "license": "MIT", "engines": { @@ -3035,8 +2676,6 @@ }, "node_modules/@octokit/core": { "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", - "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3054,8 +2693,6 @@ }, "node_modules/@octokit/endpoint": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dev": true, "license": "MIT", "dependencies": { @@ -3069,8 +2706,6 @@ }, "node_modules/@octokit/graphql": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", - "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", "dev": true, "license": "MIT", "dependencies": { @@ -3084,15 +2719,11 @@ }, "node_modules/@octokit/openapi-types": { "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", "dev": true, "license": "MIT" }, "node_modules/@octokit/request": { "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dev": true, "license": "MIT", "dependencies": { @@ -3109,8 +2740,6 @@ }, "node_modules/@octokit/request-error": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3124,8 +2753,6 @@ }, "node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, "license": "MIT", "dependencies": { @@ -3134,8 +2761,6 @@ }, "node_modules/@pkgr/core": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" @@ -3146,8 +2771,6 @@ }, "node_modules/@popperjs/core": { "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "dev": true, "license": "MIT", "peer": true, @@ -3158,8 +2781,6 @@ }, "node_modules/@react-spring/animated": { "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz", - "integrity": "sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==", "dev": true, "license": "MIT", "dependencies": { @@ -3172,8 +2793,6 @@ }, "node_modules/@react-spring/core": { "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.5.tgz", - "integrity": "sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==", "dev": true, "license": "MIT", "dependencies": { @@ -3191,15 +2810,11 @@ }, "node_modules/@react-spring/rafz": { "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.5.tgz", - "integrity": "sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==", "dev": true, "license": "MIT" }, "node_modules/@react-spring/shared": { "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.5.tgz", - "integrity": "sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -3212,15 +2827,11 @@ }, "node_modules/@react-spring/types": { "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.5.tgz", - "integrity": "sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==", "dev": true, "license": "MIT" }, "node_modules/@react-spring/web": { "version": "9.7.5", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.5.tgz", - "integrity": "sha512-lmvqGwpe+CSttsWNZVr+Dg62adtKhauGwLyGE/RRyZ8AAMLgb9x3NDMA5RMElXo+IMyTkPp7nxTB8ZQlmhb6JQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3236,8 +2847,6 @@ }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", - "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", "cpu": [ "arm64" ], @@ -3250,14 +2859,10 @@ }, "node_modules/@rtsao/scc": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", "license": "MIT" }, "node_modules/@shellscape/i18n-iso-countries": { "version": "7.5.0-shellscape.v1", - "resolved": "https://registry.npmjs.org/@shellscape/i18n-iso-countries/-/i18n-iso-countries-7.5.0-shellscape.v1.tgz", - "integrity": "sha512-FB7Grjo2ciFWcU6mNl3rf0xRnUnjzu3NlEOMOg9dhrsRm18WMOpWkHbwL21+HXnAVjsxIn8l3MnkiAz/LdmPiQ==", "license": "MIT", "dependencies": { "diacritics": "1.3.0" @@ -3268,15 +2873,11 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true, "license": "MIT" }, "node_modules/@smithy/abort-controller": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.6.tgz", - "integrity": "sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3289,8 +2890,6 @@ }, "node_modules/@smithy/chunked-blob-reader": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz", - "integrity": "sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3299,8 +2898,6 @@ }, "node_modules/@smithy/chunked-blob-reader-native": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz", - "integrity": "sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3310,8 +2907,6 @@ }, "node_modules/@smithy/config-resolver": { "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.10.tgz", - "integrity": "sha512-Uh0Sz9gdUuz538nvkPiyv1DZRX9+D15EKDtnQP5rYVAzM/dnYk3P8cg73jcxyOitPgT3mE3OVj7ky7sibzHWkw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3327,8 +2922,6 @@ }, "node_modules/@smithy/core": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.5.1.tgz", - "integrity": "sha512-DujtuDA7BGEKExJ05W5OdxCoyekcKT3Rhg1ZGeiUWaz2BJIWXjZmsG/DIP4W48GHno7AQwRsaCb8NcBgH3QZpg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3347,8 +2940,6 @@ }, "node_modules/@smithy/credential-provider-imds": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.5.tgz", - "integrity": "sha512-4FTQGAsuwqTzVMmiRVTn0RR9GrbRfkP0wfu/tXWVHd2LgNpTY0uglQpIScXK4NaEyXbB3JmZt8gfVqO50lP8wg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3364,8 +2955,6 @@ }, "node_modules/@smithy/eventstream-codec": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.7.tgz", - "integrity": "sha512-kVSXScIiRN7q+s1x7BrQtZ1Aa9hvvP9FeCqCdBxv37GimIHgBCOnZ5Ip80HLt0DhnAKpiobFdGqTFgbaJNrazA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3377,8 +2966,6 @@ }, "node_modules/@smithy/eventstream-serde-browser": { "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.11.tgz", - "integrity": "sha512-Pd1Wnq3CQ/v2SxRifDUihvpXzirJYbbtXfEnnLV/z0OGCTx/btVX74P86IgrZkjOydOASBGXdPpupYQI+iO/6A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3392,8 +2979,6 @@ }, "node_modules/@smithy/eventstream-serde-config-resolver": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.8.tgz", - "integrity": "sha512-zkFIG2i1BLbfoGQnf1qEeMqX0h5qAznzaZmMVNnvPZz9J5AWBPkOMckZWPedGUPcVITacwIdQXoPcdIQq5FRcg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3406,8 +2991,6 @@ }, "node_modules/@smithy/eventstream-serde-node": { "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.10.tgz", - "integrity": "sha512-hjpU1tIsJ9qpcoZq9zGHBJPBOeBGYt+n8vfhDwnITPhEre6APrvqq/y3XMDEGUT2cWQ4ramNqBPRbx3qn55rhw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3421,8 +3004,6 @@ }, "node_modules/@smithy/eventstream-serde-universal": { "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.10.tgz", - "integrity": "sha512-ewG1GHbbqsFZ4asaq40KmxCmXO+AFSM1b+DcO2C03dyJj/ZH71CiTg853FSE/3SHK9q3jiYQIFjlGSwfxQ9kww==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3436,8 +3017,6 @@ }, "node_modules/@smithy/fetch-http-handler": { "version": "3.2.9", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz", - "integrity": "sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3450,8 +3029,6 @@ }, "node_modules/@smithy/hash-blob-browser": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.7.tgz", - "integrity": "sha512-4yNlxVNJifPM5ThaA5HKnHkn7JhctFUHvcaz6YXxHlYOSIrzI6VKQPTN8Gs1iN5nqq9iFcwIR9THqchUCouIfg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3463,8 +3040,6 @@ }, "node_modules/@smithy/hash-node": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.8.tgz", - "integrity": "sha512-tlNQYbfpWXHimHqrvgo14DrMAgUBua/cNoz9fMYcDmYej7MAmUcjav/QKQbFc3NrcPxeJ7QClER4tWZmfwoPng==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3479,8 +3054,6 @@ }, "node_modules/@smithy/hash-stream-node": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.7.tgz", - "integrity": "sha512-xMAsvJ3hLG63lsBVi1Hl6BBSfhd8/Qnp8fC06kjOpJvyyCEXdwHITa5Kvdsk6gaAXLhbZMhQMIGvgUbfnJDP6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3494,8 +3067,6 @@ }, "node_modules/@smithy/invalid-dependency": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.8.tgz", - "integrity": "sha512-7Qynk6NWtTQhnGTTZwks++nJhQ1O54Mzi7fz4PqZOiYXb4Z1Flpb2yRvdALoggTS8xjtohWUM+RygOtB30YL3Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3505,8 +3076,6 @@ }, "node_modules/@smithy/is-array-buffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3518,8 +3087,6 @@ }, "node_modules/@smithy/md5-js": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.8.tgz", - "integrity": "sha512-LwApfTK0OJ/tCyNUXqnWCKoE2b4rDSr4BJlDAVCkiWYeHESr+y+d5zlAanuLW6fnitVJRD/7d9/kN/ZM9Su4mA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3530,8 +3097,6 @@ }, "node_modules/@smithy/middleware-content-length": { "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.10.tgz", - "integrity": "sha512-T4dIdCs1d/+/qMpwhJ1DzOhxCZjZHbHazEPJWdB4GDi2HjIZllVzeBEcdJUN0fomV8DURsgOyrbEUzg3vzTaOg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3545,8 +3110,6 @@ }, "node_modules/@smithy/middleware-endpoint": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.1.tgz", - "integrity": "sha512-wWO3xYmFm6WRW8VsEJ5oU6h7aosFXfszlz3Dj176pTij6o21oZnzkCLzShfmRaaCHDkBXWBdO0c4sQAvLFP6zA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3565,8 +3128,6 @@ }, "node_modules/@smithy/middleware-retry": { "version": "3.0.25", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.25.tgz", - "integrity": "sha512-m1F70cPaMBML4HiTgCw5I+jFNtjgz5z5UdGnUbG37vw6kh4UvizFYjqJGHvicfgKMkDL6mXwyPp5mhZg02g5sg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3586,8 +3147,6 @@ }, "node_modules/@smithy/middleware-serde": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.8.tgz", - "integrity": "sha512-Xg2jK9Wc/1g/MBMP/EUn2DLspN8LNt+GMe7cgF+Ty3vl+Zvu+VeZU5nmhveU+H8pxyTsjrAkci8NqY6OuvZnjA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3600,8 +3159,6 @@ }, "node_modules/@smithy/middleware-stack": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.8.tgz", - "integrity": "sha512-d7ZuwvYgp1+3682Nx0MD3D/HtkmZd49N3JUndYWQXfRZrYEnCWYc8BHcNmVsPAp9gKvlurdg/mubE6b/rPS9MA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3614,8 +3171,6 @@ }, "node_modules/@smithy/node-config-provider": { "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.9.tgz", - "integrity": "sha512-qRHoah49QJ71eemjuS/WhUXB+mpNtwHRWQr77J/m40ewBVVwvo52kYAmb7iuaECgGTTcYxHS4Wmewfwy++ueew==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3630,8 +3185,6 @@ }, "node_modules/@smithy/node-http-handler": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.5.tgz", - "integrity": "sha512-PkOwPNeKdvX/jCpn0A8n9/TyoxjGZB8WVoJmm9YzsnAgggTj4CrjpRHlTQw7dlLZ320n1mY1y+nTRUDViKi/3w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3647,8 +3200,6 @@ }, "node_modules/@smithy/property-provider": { "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.8.tgz", - "integrity": "sha512-ukNUyo6rHmusG64lmkjFeXemwYuKge1BJ8CtpVKmrxQxc6rhUX0vebcptFA9MmrGsnLhwnnqeH83VTU9hwOpjA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3661,8 +3212,6 @@ }, "node_modules/@smithy/protocol-http": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.5.tgz", - "integrity": "sha512-hsjtwpIemmCkm3ZV5fd/T0bPIugW1gJXwZ/hpuVubt2hEUApIoUTrf6qIdh9MAWlw0vjMrA1ztJLAwtNaZogvg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3675,8 +3224,6 @@ }, "node_modules/@smithy/querystring-builder": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.8.tgz", - "integrity": "sha512-btYxGVqFUARbUrN6VhL9c3dnSviIwBYD9Rz1jHuN1hgh28Fpv2xjU1HeCeDJX68xctz7r4l1PBnFhGg1WBBPuA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3690,8 +3237,6 @@ }, "node_modules/@smithy/querystring-parser": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.8.tgz", - "integrity": "sha512-BtEk3FG7Ks64GAbt+JnKqwuobJNX8VmFLBsKIwWr1D60T426fGrV2L3YS5siOcUhhp6/Y6yhBw1PSPxA5p7qGg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3704,8 +3249,6 @@ }, "node_modules/@smithy/service-error-classification": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.8.tgz", - "integrity": "sha512-uEC/kCCFto83bz5ZzapcrgGqHOh/0r69sZ2ZuHlgoD5kYgXJEThCoTuw/y1Ub3cE7aaKdznb+jD9xRPIfIwD7g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3717,8 +3260,6 @@ }, "node_modules/@smithy/shared-ini-file-loader": { "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.9.tgz", - "integrity": "sha512-/+OsJRNtoRbtsX0UpSgWVxFZLsJHo/4sTr+kBg/J78sr7iC+tHeOvOJrS5hCpVQ6sWBbhWLp1UNiuMyZhE6pmA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3731,8 +3272,6 @@ }, "node_modules/@smithy/signature-v4": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.1.tgz", - "integrity": "sha512-NsV1jF4EvmO5wqmaSzlnTVetemBS3FZHdyc5CExbDljcyJCEEkJr8ANu2JvtNbVg/9MvKAWV44kTrGS+Pi4INg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3751,8 +3290,6 @@ }, "node_modules/@smithy/smithy-client": { "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.4.2.tgz", - "integrity": "sha512-dxw1BDxJiY9/zI3cBqfVrInij6ShjpV4fmGHesGZZUiP9OSE/EVfdwdRz0PgvkEvrZHpsj2htRaHJfftE8giBA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3770,8 +3307,6 @@ }, "node_modules/@smithy/types": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.6.0.tgz", - "integrity": "sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3783,8 +3318,6 @@ }, "node_modules/@smithy/url-parser": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.8.tgz", - "integrity": "sha512-4FdOhwpTW7jtSFWm7SpfLGKIBC9ZaTKG5nBF0wK24aoQKQyDIKUw3+KFWCQ9maMzrgTJIuOvOnsV2lLGW5XjTg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3795,8 +3328,6 @@ }, "node_modules/@smithy/util-base64": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3810,8 +3341,6 @@ }, "node_modules/@smithy/util-body-length-browser": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3820,8 +3349,6 @@ }, "node_modules/@smithy/util-body-length-node": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3833,8 +3360,6 @@ }, "node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3847,8 +3372,6 @@ }, "node_modules/@smithy/util-config-provider": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3860,8 +3383,6 @@ }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "3.0.25", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.25.tgz", - "integrity": "sha512-fRw7zymjIDt6XxIsLwfJfYUfbGoO9CmCJk6rjJ/X5cd20+d2Is7xjU5Kt/AiDt6hX8DAf5dztmfP5O82gR9emA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3877,8 +3398,6 @@ }, "node_modules/@smithy/util-defaults-mode-node": { "version": "3.0.25", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.25.tgz", - "integrity": "sha512-H3BSZdBDiVZGzt8TG51Pd2FvFO0PAx/A0mJ0EH8a13KJ6iUCdYnw/Dk/MdC1kTd0eUuUGisDFaxXVXo4HHFL1g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3896,8 +3415,6 @@ }, "node_modules/@smithy/util-endpoints": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.4.tgz", - "integrity": "sha512-kPt8j4emm7rdMWQyL0F89o92q10gvCUa6sBkBtDJ7nV2+P7wpXczzOfoDJ49CKXe5CCqb8dc1W+ZdLlrKzSAnQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3911,8 +3428,6 @@ }, "node_modules/@smithy/util-hex-encoding": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3924,8 +3439,6 @@ }, "node_modules/@smithy/util-middleware": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.8.tgz", - "integrity": "sha512-p7iYAPaQjoeM+AKABpYWeDdtwQNxasr4aXQEA/OmbOaug9V0odRVDy3Wx4ci8soljE/JXQo+abV0qZpW8NX0yA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3938,8 +3451,6 @@ }, "node_modules/@smithy/util-retry": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.8.tgz", - "integrity": "sha512-TCEhLnY581YJ+g1x0hapPz13JFqzmh/pMWL2KEFASC51qCfw3+Y47MrTmea4bUE5vsdxQ4F6/KFbUeSz22Q1ow==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3953,8 +3464,6 @@ }, "node_modules/@smithy/util-stream": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.2.1.tgz", - "integrity": "sha512-R3ufuzJRxSJbE58K9AEnL/uSZyVdHzud9wLS8tIbXclxKzoe09CRohj2xV8wpx5tj7ZbiJaKYcutMm1eYgz/0A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3973,8 +3482,6 @@ }, "node_modules/@smithy/util-stream/node_modules/@smithy/fetch-http-handler": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.0.0.tgz", - "integrity": "sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3987,8 +3494,6 @@ }, "node_modules/@smithy/util-uri-escape": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4000,8 +3505,6 @@ }, "node_modules/@smithy/util-utf8": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4014,8 +3517,6 @@ }, "node_modules/@smithy/util-waiter": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.7.tgz", - "integrity": "sha512-d5yGlQtmN/z5eoTtIYgkvOw27US2Ous4VycnXatyoImIF9tzlcpnKqQ/V7qhvJmb2p6xZne1NopCLakdTnkBBQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4029,8 +3530,6 @@ }, "node_modules/@trysound/sax": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "license": "ISC", "engines": { "node": ">=10.13.0" @@ -4038,16 +3537,11 @@ }, "node_modules/@types/async": { "version": "3.2.24", - "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.24.tgz", - "integrity": "sha512-8iHVLHsCCOBKjCF2KwFe0p9Z3rfM9mL+sSP8btyR5vTjJRAqpBYD28/ZLgXPf0pjG1VxOvtCV/BgXkQbpSe8Hw==", "dev": true, "license": "MIT" }, "node_modules/@types/chalk": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-2.2.0.tgz", - "integrity": "sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw==", - "deprecated": "This is a stub types definition for chalk (https://github.com/chalk/chalk). chalk provides its own type definitions, so you don't need @types/chalk installed!", "dev": true, "license": "MIT", "dependencies": { @@ -4056,15 +3550,11 @@ }, "node_modules/@types/cookie": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", "dev": true, "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", "license": "MIT", "dependencies": { "@types/d3-time": "*" @@ -4072,20 +3562,14 @@ }, "node_modules/@types/d3-scale-chromatic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", "license": "MIT" }, "node_modules/@types/d3-time": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", "license": "MIT" }, "node_modules/@types/debug": { "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "license": "MIT", "dependencies": { "@types/ms": "*" @@ -4093,15 +3577,11 @@ }, "node_modules/@types/estree": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true, "license": "MIT" }, "node_modules/@types/glob": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", "dev": true, "license": "MIT", "dependencies": { @@ -4111,8 +3591,6 @@ }, "node_modules/@types/hoist-non-react-statics": { "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", "dev": true, "license": "MIT", "peer": true, @@ -4123,48 +3601,34 @@ }, "node_modules/@types/html-escaper": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/html-escaper/-/html-escaper-3.0.2.tgz", - "integrity": "sha512-A8vk09eyYzk8J/lFO4OUMKCmRN0rRzfZf4n3Olwapgox/PtTiU8zPYlL1UEkJ/WeHvV6v9Xnj3o/705PKz9r4Q==", "dev": true, "license": "MIT" }, "node_modules/@types/js-yaml": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, "node_modules/@types/json-stringify-safe": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/json-stringify-safe/-/json-stringify-safe-5.0.3.tgz", - "integrity": "sha512-oNOjRxLfPeYbBSQ60maucaFNqbslVOPU4WWs5t/sHvAh6tyo/CThXSG+E24tEzkgh/fzvxyDrYdOJufgeNy1sQ==", "dev": true, "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "license": "MIT" }, "node_modules/@types/lodash": { "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", "dev": true, "license": "MIT" }, "node_modules/@types/mdast": { "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -4172,34 +3636,24 @@ }, "node_modules/@types/mime-types": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", - "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", "dev": true, "license": "MIT" }, "node_modules/@types/minimatch": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true, "license": "MIT" }, "node_modules/@types/minimist": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "license": "MIT" }, "node_modules/@types/node": { "version": "18.19.64", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.64.tgz", - "integrity": "sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4208,22 +3662,16 @@ }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@types/ramda": { "version": "0.28.25", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.28.25.tgz", - "integrity": "sha512-HrQNqQAGcITpn9HAJFamDxm7iZeeXiP/95pN5OMbNniDjzCCeOHbBKNGmUy8NRi0fhYS+/cXeo91MFC+06gbow==", "license": "MIT", "dependencies": { "ts-toolbelt": "^6.15.1" @@ -4231,8 +3679,6 @@ }, "node_modules/@types/react": { "version": "18.3.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", - "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", "dev": true, "license": "MIT", "peer": true, @@ -4243,8 +3689,6 @@ }, "node_modules/@types/react-redux": { "version": "7.1.34", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", - "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", "dev": true, "license": "MIT", "peer": true, @@ -4257,14 +3701,10 @@ }, "node_modules/@types/semver": { "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "license": "MIT" }, "node_modules/@types/shelljs": { "version": "0.8.15", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.15.tgz", - "integrity": "sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4274,8 +3714,6 @@ }, "node_modules/@types/shelljs/node_modules/@types/glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "license": "MIT", "dependencies": { @@ -4285,8 +3723,6 @@ }, "node_modules/@types/tar-stream": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.3.tgz", - "integrity": "sha512-if3mugZfjVkXOMZdFjIHySxY13r6GXPpyOlsDmLffvyI7tLz9wXE8BFjNivXsvUeyJ1KNlOpfLnag+ISmxgxPw==", "dev": true, "license": "MIT", "dependencies": { @@ -4295,14 +3731,10 @@ }, "node_modules/@types/unist": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "license": "MIT" }, "node_modules/@types/yargs": { "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "license": "MIT", "dependencies": { @@ -4311,15 +3743,11 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", @@ -4353,8 +3781,6 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4365,8 +3791,6 @@ }, "node_modules/@typescript-eslint/parser": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", @@ -4393,8 +3817,6 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.21.0", @@ -4410,8 +3832,6 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "6.21.0", @@ -4437,8 +3857,6 @@ }, "node_modules/@typescript-eslint/types": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" @@ -4450,8 +3868,6 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "6.21.0", @@ -4478,8 +3894,6 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -4493,8 +3907,6 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4505,8 +3917,6 @@ }, "node_modules/@typescript-eslint/utils": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -4530,8 +3940,6 @@ }, "node_modules/@typescript-eslint/utils/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4542,8 +3950,6 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.21.0", @@ -4559,8 +3965,6 @@ }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4571,14 +3975,10 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "license": "ISC" }, "node_modules/@vitest/coverage-v8": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.6.0.tgz", - "integrity": "sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==", "dev": true, "license": "MIT", "dependencies": { @@ -4605,8 +4005,6 @@ }, "node_modules/@vitest/expect": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4620,8 +4018,6 @@ }, "node_modules/@vitest/runner": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", "dev": true, "license": "MIT", "dependencies": { @@ -4635,8 +4031,6 @@ }, "node_modules/@vitest/runner/node_modules/p-limit": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4651,8 +4045,6 @@ }, "node_modules/@vitest/runner/node_modules/yocto-queue": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "license": "MIT", "engines": { @@ -4664,8 +4056,6 @@ }, "node_modules/@vitest/snapshot": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4679,8 +4069,6 @@ }, "node_modules/@vitest/spy": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dev": true, "license": "MIT", "dependencies": { @@ -4692,8 +4080,6 @@ }, "node_modules/@vitest/utils": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dev": true, "license": "MIT", "dependencies": { @@ -4708,8 +4094,6 @@ }, "node_modules/acorn": { "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -4720,8 +4104,6 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -4729,8 +4111,6 @@ }, "node_modules/acorn-walk": { "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", "dependencies": { @@ -4742,8 +4122,6 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "license": "MIT", "dependencies": { @@ -4756,8 +4134,6 @@ }, "node_modules/ajv": { "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -4772,8 +4148,6 @@ }, "node_modules/ajv-draft-04": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -4787,8 +4161,6 @@ }, "node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "license": "MIT", "dependencies": { @@ -4800,8 +4172,6 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4816,8 +4186,6 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" @@ -4825,8 +4193,6 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4840,14 +4206,10 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "license": "Apache-2.0", "engines": { "node": ">= 0.4" @@ -4855,8 +4217,6 @@ }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.5", @@ -4871,8 +4231,6 @@ }, "node_modules/array-includes": { "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -4891,8 +4249,6 @@ }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "license": "MIT", "engines": { "node": ">=8" @@ -4900,8 +4256,6 @@ }, "node_modules/array.prototype.findlast": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -4920,8 +4274,6 @@ }, "node_modules/array.prototype.findlastindex": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -4940,8 +4292,6 @@ }, "node_modules/array.prototype.flat": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -4958,8 +4308,6 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -4976,8 +4324,6 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -4992,8 +4338,6 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", @@ -5014,8 +4358,6 @@ }, "node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5023,8 +4365,6 @@ }, "node_modules/assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, "license": "MIT", "engines": { @@ -5033,14 +4373,10 @@ }, "node_modules/ast-types-flow": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "license": "MIT" }, "node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "license": "MIT", "engines": { "node": ">=8" @@ -5048,22 +4384,16 @@ }, "node_modules/async": { "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, "node_modules/atob": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "license": "(MIT OR Apache-2.0)", "bin": { "atob": "bin/atob.js" @@ -5074,8 +4404,6 @@ }, "node_modules/available-typed-arrays": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -5089,8 +4417,6 @@ }, "node_modules/axe-core": { "version": "4.10.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", - "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", "license": "MPL-2.0", "engines": { "node": ">=4" @@ -5098,8 +4424,6 @@ }, "node_modules/axios": { "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5110,8 +4434,6 @@ }, "node_modules/axobject-query": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "license": "Apache-2.0", "engines": { "node": ">= 0.4" @@ -5119,43 +4441,31 @@ }, "node_modules/b4a": { "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", "dev": true, "license": "Apache-2.0" }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, "node_modules/bare-events": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", "dev": true, "license": "Apache-2.0", "optional": true }, "node_modules/before-after-hook": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/bem-cn": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bem-cn/-/bem-cn-3.0.1.tgz", - "integrity": "sha512-kWC76a09vSk6cJXDYsH1erjxdBf856HTxl0IHOvYItSmBC6wQCsRCf9bmKR0hmeUDcUP5XPMr8MNXDgKbKJi0A==", "dev": true, "license": "MIT" }, "node_modules/bem-cn-lite": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bem-cn-lite/-/bem-cn-lite-4.1.0.tgz", - "integrity": "sha512-0IEVRYK2MQKQO00P3sY3hNv7vH8P+Z8mR46qFcaiwsQAWp0MuMWpLSuUUhZEjKD2HzTGXMqMsFysWEeeJa1drQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5164,29 +4474,21 @@ }, "node_modules/blueimp-md5": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", "dev": true, "license": "MIT", "peer": true }, "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, "node_modules/bowser": { "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true, "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -5194,8 +4496,6 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -5206,8 +4506,6 @@ }, "node_modules/browserslist": { "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "funding": [ { "type": "opencollective", @@ -5238,8 +4536,6 @@ }, "node_modules/cac": { "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "license": "MIT", "engines": { @@ -5248,8 +4544,6 @@ }, "node_modules/call-bind": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -5267,15 +4561,11 @@ }, "node_modules/call-me-maybe": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true, "license": "MIT" }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", "engines": { "node": ">=6" @@ -5283,8 +4573,6 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "license": "MIT", "engines": { "node": ">=10" @@ -5295,8 +4583,6 @@ }, "node_modules/camelcase-keys": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "license": "MIT", "dependencies": { "camelcase": "^6.3.0", @@ -5313,8 +4599,6 @@ }, "node_modules/camelcase-keys/node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -5325,8 +4609,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001677", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", - "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", "funding": [ { "type": "opencollective", @@ -5345,8 +4627,6 @@ }, "node_modules/chai": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "license": "MIT", "dependencies": { @@ -5364,8 +4644,6 @@ }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -5380,8 +4658,6 @@ }, "node_modules/character-entities": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "license": "MIT", "funding": { "type": "github", @@ -5390,8 +4666,6 @@ }, "node_modules/check-error": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "license": "MIT", "dependencies": { @@ -5403,8 +4677,6 @@ }, "node_modules/cheerio": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", @@ -5428,8 +4700,6 @@ }, "node_modules/cheerio-select": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -5445,15 +4715,11 @@ }, "node_modules/classnames": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", "dev": true, "license": "MIT" }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "license": "MIT", "engines": { @@ -5462,8 +4728,6 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", "dependencies": { @@ -5475,8 +4739,6 @@ }, "node_modules/cli-truncate": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, "license": "MIT", "dependencies": { @@ -5492,8 +4754,6 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5504,26 +4764,18 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/colord": { "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { @@ -5535,8 +4787,6 @@ }, "node_modules/commander": { "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", "engines": { "node": ">=18" @@ -5544,42 +4794,30 @@ }, "node_modules/compute-scroll-into-view": { "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", "dev": true, "license": "MIT", "peer": true }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, "node_modules/confbox": { "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", "dev": true, "license": "MIT" }, "node_modules/consolidated-events": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz", - "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==", "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { @@ -5588,8 +4826,6 @@ }, "node_modules/copy-to-clipboard": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", "dev": true, "license": "MIT", "peer": true, @@ -5599,8 +4835,6 @@ }, "node_modules/cose-base": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", "license": "MIT", "dependencies": { "layout-base": "^1.0.0" @@ -5608,8 +4842,6 @@ }, "node_modules/cosmiconfig": { "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", @@ -5634,8 +4866,6 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -5648,8 +4878,6 @@ }, "node_modules/csp-header": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/csp-header/-/csp-header-5.2.1.tgz", - "integrity": "sha512-qOJNu39JZkPrbrAM40a1tQCePEPYVIoI6nMDhX4RA07QjU8efS+zyd/zE83XJu85KKazH9NjKlvvlswFMteMgg==", "dev": true, "license": "WTFPL", "engines": { @@ -5658,8 +4886,6 @@ }, "node_modules/css": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "license": "MIT", "dependencies": { "inherits": "^2.0.4", @@ -5669,8 +4895,6 @@ }, "node_modules/css-box-model": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", - "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", "dev": true, "license": "MIT", "peer": true, @@ -5680,8 +4904,6 @@ }, "node_modules/css-functions-list": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", - "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "license": "MIT", "engines": { "node": ">=12 || >=16" @@ -5689,8 +4911,6 @@ }, "node_modules/css-select": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -5705,8 +4925,6 @@ }, "node_modules/css-tree": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "license": "MIT", "dependencies": { "mdn-data": "2.0.30", @@ -5718,8 +4936,6 @@ }, "node_modules/css-what": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -5730,8 +4946,6 @@ }, "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -5742,14 +4956,10 @@ }, "node_modules/cssfilter": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", "license": "MIT" }, "node_modules/csso": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "license": "MIT", "dependencies": { "css-tree": "~2.2.0" @@ -5761,8 +4971,6 @@ }, "node_modules/csso/node_modules/css-tree": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "license": "MIT", "dependencies": { "mdn-data": "2.0.28", @@ -5775,21 +4983,15 @@ }, "node_modules/csso/node_modules/mdn-data": { "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, "node_modules/csstype": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true, "license": "MIT" }, "node_modules/cytoscape": { "version": "3.30.3", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.3.tgz", - "integrity": "sha512-HncJ9gGJbVtw7YXtIs3+6YAFSSiKsom0amWc33Z7QbylbY2JGMrA0yz4EwrdTScZxnwclXeEZHzO5pxoy0ZE4g==", "license": "MIT", "engines": { "node": ">=0.10" @@ -5797,8 +4999,6 @@ }, "node_modules/cytoscape-cose-bilkent": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", "license": "MIT", "dependencies": { "cose-base": "^1.0.0" @@ -5809,8 +5009,6 @@ }, "node_modules/d3": { "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", "license": "ISC", "dependencies": { "d3-array": "3", @@ -5850,8 +5048,6 @@ }, "node_modules/d3-array": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "license": "ISC", "dependencies": { "internmap": "1 - 2" @@ -5862,8 +5058,6 @@ }, "node_modules/d3-axis": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", "license": "ISC", "engines": { "node": ">=12" @@ -5871,8 +5065,6 @@ }, "node_modules/d3-brush": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -5887,8 +5079,6 @@ }, "node_modules/d3-chord": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", "license": "ISC", "dependencies": { "d3-path": "1 - 3" @@ -5899,8 +5089,6 @@ }, "node_modules/d3-color": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "license": "ISC", "engines": { "node": ">=12" @@ -5908,8 +5096,6 @@ }, "node_modules/d3-contour": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", "license": "ISC", "dependencies": { "d3-array": "^3.2.0" @@ -5920,8 +5106,6 @@ }, "node_modules/d3-delaunay": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", "license": "ISC", "dependencies": { "delaunator": "5" @@ -5932,8 +5116,6 @@ }, "node_modules/d3-dispatch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "license": "ISC", "engines": { "node": ">=12" @@ -5941,8 +5123,6 @@ }, "node_modules/d3-drag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -5954,8 +5134,6 @@ }, "node_modules/d3-dsv": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "license": "ISC", "dependencies": { "commander": "7", @@ -5979,8 +5157,6 @@ }, "node_modules/d3-dsv/node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { "node": ">= 10" @@ -5988,8 +5164,6 @@ }, "node_modules/d3-ease": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "license": "BSD-3-Clause", "engines": { "node": ">=12" @@ -5997,8 +5171,6 @@ }, "node_modules/d3-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" @@ -6009,8 +5181,6 @@ }, "node_modules/d3-force": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -6023,8 +5193,6 @@ }, "node_modules/d3-format": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "license": "ISC", "engines": { "node": ">=12" @@ -6032,8 +5200,6 @@ }, "node_modules/d3-geo": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" @@ -6044,8 +5210,6 @@ }, "node_modules/d3-hierarchy": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "license": "ISC", "engines": { "node": ">=12" @@ -6053,8 +5217,6 @@ }, "node_modules/d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "license": "ISC", "dependencies": { "d3-color": "1 - 3" @@ -6065,8 +5227,6 @@ }, "node_modules/d3-path": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", "license": "ISC", "engines": { "node": ">=12" @@ -6074,8 +5234,6 @@ }, "node_modules/d3-polygon": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", "license": "ISC", "engines": { "node": ">=12" @@ -6083,8 +5241,6 @@ }, "node_modules/d3-quadtree": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "license": "ISC", "engines": { "node": ">=12" @@ -6092,8 +5248,6 @@ }, "node_modules/d3-random": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", "license": "ISC", "engines": { "node": ">=12" @@ -6101,8 +5255,6 @@ }, "node_modules/d3-sankey": { "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", "license": "BSD-3-Clause", "dependencies": { "d3-array": "1 - 2", @@ -6111,8 +5263,6 @@ }, "node_modules/d3-sankey/node_modules/d3-array": { "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", "license": "BSD-3-Clause", "dependencies": { "internmap": "^1.0.0" @@ -6120,14 +5270,10 @@ }, "node_modules/d3-sankey/node_modules/d3-path": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", "license": "BSD-3-Clause" }, "node_modules/d3-sankey/node_modules/d3-shape": { "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" @@ -6135,14 +5281,10 @@ }, "node_modules/d3-sankey/node_modules/internmap": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", "license": "ISC" }, "node_modules/d3-scale": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", @@ -6157,8 +5299,6 @@ }, "node_modules/d3-scale-chromatic": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", "license": "ISC", "dependencies": { "d3-color": "1 - 3", @@ -6170,8 +5310,6 @@ }, "node_modules/d3-selection": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", "engines": { "node": ">=12" @@ -6179,8 +5317,6 @@ }, "node_modules/d3-shape": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "license": "ISC", "dependencies": { "d3-path": "^3.1.0" @@ -6191,8 +5327,6 @@ }, "node_modules/d3-time": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "license": "ISC", "dependencies": { "d3-array": "2 - 3" @@ -6203,8 +5337,6 @@ }, "node_modules/d3-time-format": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "license": "ISC", "dependencies": { "d3-time": "1 - 3" @@ -6215,8 +5347,6 @@ }, "node_modules/d3-timer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "license": "ISC", "engines": { "node": ">=12" @@ -6224,8 +5354,6 @@ }, "node_modules/d3-transition": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "license": "ISC", "dependencies": { "d3-color": "1 - 3", @@ -6243,8 +5371,6 @@ }, "node_modules/d3-zoom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -6259,8 +5385,6 @@ }, "node_modules/dagre-d3-es": { "version": "7.0.10", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", - "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", "license": "MIT", "dependencies": { "d3": "^7.8.2", @@ -6269,14 +5393,10 @@ }, "node_modules/damerau-levenshtein": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "license": "BSD-2-Clause" }, "node_modules/data-view-buffer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.6", @@ -6292,8 +5412,6 @@ }, "node_modules/data-view-byte-length": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -6309,8 +5427,6 @@ }, "node_modules/data-view-byte-offset": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.6", @@ -6326,14 +5442,10 @@ }, "node_modules/dayjs": { "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", "license": "MIT" }, "node_modules/debug": { "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -6349,8 +5461,6 @@ }, "node_modules/decamelize": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "license": "MIT", "engines": { "node": ">=10" @@ -6361,8 +5471,6 @@ }, "node_modules/decamelize-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "license": "MIT", "dependencies": { "decamelize": "^1.1.0", @@ -6377,8 +5485,6 @@ }, "node_modules/decamelize-keys/node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6386,8 +5492,6 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6395,8 +5499,6 @@ }, "node_modules/decode-named-character-reference": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -6408,8 +5510,6 @@ }, "node_modules/decode-uri-component": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "license": "MIT", "engines": { "node": ">=0.10" @@ -6417,8 +5517,6 @@ }, "node_modules/deep-eql": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", "dependencies": { @@ -6430,14 +5528,10 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6445,8 +5539,6 @@ }, "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -6462,8 +5554,6 @@ }, "node_modules/define-properties": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -6479,8 +5569,6 @@ }, "node_modules/delaunator": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" @@ -6488,8 +5576,6 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { @@ -6498,15 +5584,11 @@ }, "node_modules/deprecation": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true, "license": "ISC" }, "node_modules/dequal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", "engines": { "node": ">=6" @@ -6514,14 +5596,10 @@ }, "node_modules/diacritics": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", - "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==", "license": "MIT" }, "node_modules/diff": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -6529,8 +5607,6 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { @@ -6539,8 +5615,6 @@ }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "license": "MIT", "dependencies": { "path-type": "^4.0.0" @@ -6551,8 +5625,6 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -6563,8 +5635,6 @@ }, "node_modules/dom-helpers": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dev": true, "license": "MIT", "dependencies": { @@ -6574,8 +5644,6 @@ }, "node_modules/dom-serializer": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", @@ -6588,8 +5656,6 @@ }, "node_modules/dom7": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz", - "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6598,8 +5664,6 @@ }, "node_modules/domelementtype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", @@ -6610,8 +5674,6 @@ }, "node_modules/domhandler": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" @@ -6625,14 +5687,10 @@ }, "node_modules/dompurify": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", - "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/domutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -6645,8 +5703,6 @@ }, "node_modules/dot-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "license": "MIT", "dependencies": { @@ -6656,33 +5712,23 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.5.50", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz", - "integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==", "license": "ISC" }, "node_modules/elkjs": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", - "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", "license": "EPL-2.0" }, "node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/encoding-sniffer": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", - "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", "license": "MIT", "dependencies": { "iconv-lite": "^0.6.3", @@ -6694,8 +5740,6 @@ }, "node_modules/enhanced-resolve": { "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -6707,22 +5751,16 @@ }, "node_modules/enquire.js": { "version": "2.1.6", - "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", - "integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==", "dev": true, "license": "MIT" }, "node_modules/ensure-posix-path": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz", - "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==", "dev": true, "license": "ISC" }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -6733,8 +5771,6 @@ }, "node_modules/environment": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "license": "MIT", "engines": { "node": ">=18" @@ -6745,8 +5781,6 @@ }, "node_modules/error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -6754,8 +5788,6 @@ }, "node_modules/es-abstract": { "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", @@ -6814,8 +5846,6 @@ }, "node_modules/es-define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" @@ -6826,8 +5856,6 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -6835,8 +5863,6 @@ }, "node_modules/es-iterator-helpers": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", - "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -6861,8 +5887,6 @@ }, "node_modules/es-object-atoms": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -6873,8 +5897,6 @@ }, "node_modules/es-set-tostringtag": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", @@ -6887,8 +5909,6 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "license": "MIT", "dependencies": { "hasown": "^2.0.0" @@ -6896,8 +5916,6 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "license": "MIT", "dependencies": { "is-callable": "^1.1.4", @@ -6951,8 +5969,6 @@ }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { "node": ">=6" @@ -6960,8 +5976,6 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "license": "MIT", "engines": { "node": ">=10" @@ -6972,9 +5986,6 @@ }, "node_modules/eslint": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -7028,8 +6039,6 @@ }, "node_modules/eslint-config-prettier": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" @@ -7040,8 +6049,6 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "license": "MIT", "dependencies": { "debug": "^3.2.7", @@ -7051,8 +6058,6 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -7060,8 +6065,6 @@ }, "node_modules/eslint-import-resolver-typescript": { "version": "3.6.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", - "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", "license": "ISC", "dependencies": { "@nolyfill/is-core-module": "1.0.39", @@ -7095,8 +6098,6 @@ }, "node_modules/eslint-module-utils": { "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "license": "MIT", "dependencies": { "debug": "^3.2.7" @@ -7112,8 +6113,6 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -7121,8 +6120,6 @@ }, "node_modules/eslint-plugin-import": { "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", @@ -7154,8 +6151,6 @@ }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7164,8 +6159,6 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -7173,8 +6166,6 @@ }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -7185,8 +6176,6 @@ }, "node_modules/eslint-plugin-import/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -7197,8 +6186,6 @@ }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "license": "MIT", "dependencies": { "aria-query": "^5.3.2", @@ -7226,8 +6213,6 @@ }, "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7236,8 +6221,6 @@ }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -7248,8 +6231,6 @@ }, "node_modules/eslint-plugin-prettier": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", @@ -7278,8 +6259,6 @@ }, "node_modules/eslint-plugin-react": { "version": "7.37.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", - "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", "license": "MIT", "dependencies": { "array-includes": "^3.1.8", @@ -7310,8 +6289,6 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "license": "MIT", "engines": { "node": ">=10" @@ -7322,8 +6299,6 @@ }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7332,8 +6307,6 @@ }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -7344,8 +6317,6 @@ }, "node_modules/eslint-plugin-react/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -7356,8 +6327,6 @@ }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", @@ -7380,8 +6349,6 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -7393,8 +6360,6 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -7402,8 +6367,6 @@ }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "license": "Apache-2.0", "engines": { "node": ">=10" @@ -7411,8 +6374,6 @@ }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -7427,8 +6388,6 @@ }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7437,8 +6396,6 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -7453,8 +6410,6 @@ }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -7465,8 +6420,6 @@ }, "node_modules/eslint/node_modules/globals": { "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "license": "MIT", "dependencies": { "type-fest": "^0.20.2" @@ -7480,14 +6433,10 @@ }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -7498,8 +6447,6 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -7510,8 +6457,6 @@ }, "node_modules/esm": { "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", "license": "MIT", "optional": true, "engines": { @@ -7520,8 +6465,6 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", @@ -7537,8 +6480,6 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -7549,8 +6490,6 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -7562,8 +6501,6 @@ }, "node_modules/esquery": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -7574,8 +6511,6 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -7586,8 +6521,6 @@ }, "node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -7595,8 +6528,6 @@ }, "node_modules/estree-walker": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", "dependencies": { @@ -7605,8 +6536,6 @@ }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -7614,14 +6543,10 @@ }, "node_modules/eventemitter3": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, "node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { @@ -7644,27 +6569,19 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -7679,8 +6596,6 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -7691,26 +6606,18 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", "funding": [ { "type": "github", @@ -7731,8 +6638,6 @@ }, "node_modules/fastest-levenshtein": { "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "license": "MIT", "engines": { "node": ">= 4.9.1" @@ -7740,8 +6645,6 @@ }, "node_modules/fastq": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -7749,8 +6652,6 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -7761,8 +6662,6 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -7773,8 +6672,6 @@ }, "node_modules/final-form": { "version": "4.20.10", - "resolved": "https://registry.npmjs.org/final-form/-/final-form-4.20.10.tgz", - "integrity": "sha512-TL48Pi1oNHeMOHrKv1bCJUrWZDcD3DIG6AGYVNOnyZPr7Bd/pStN0pL+lfzF5BNoj/FclaoiaLenk4XUIFVYng==", "dev": true, "license": "MIT", "dependencies": { @@ -7790,8 +6687,6 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -7806,8 +6701,6 @@ }, "node_modules/flat-cache": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "license": "MIT", "dependencies": { "flatted": "^3.2.9", @@ -7820,14 +6713,10 @@ }, "node_modules/flatted": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "license": "ISC" }, "node_modules/focus-trap": { "version": "7.6.0", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.0.tgz", - "integrity": "sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==", "dev": true, "license": "MIT", "peer": true, @@ -7837,8 +6726,6 @@ }, "node_modules/follow-redirects": { "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -7858,8 +6745,6 @@ }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "license": "MIT", "dependencies": { "is-callable": "^1.1.3" @@ -7867,8 +6752,6 @@ }, "node_modules/form-data": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "license": "MIT", "dependencies": { @@ -7882,14 +6765,10 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7897,8 +6776,6 @@ }, "node_modules/function.prototype.name": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -7915,8 +6792,6 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7924,8 +6799,6 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -7933,8 +6806,6 @@ }, "node_modules/get-east-asian-width": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "license": "MIT", "engines": { "node": ">=18" @@ -7945,8 +6816,6 @@ }, "node_modules/get-func-name": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", "engines": { @@ -7955,8 +6824,6 @@ }, "node_modules/get-intrinsic": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -7974,14 +6841,10 @@ }, "node_modules/get-root-node-polyfill": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-root-node-polyfill/-/get-root-node-polyfill-1.0.0.tgz", - "integrity": "sha512-AzucsG1DdepagLF8tkxfjUqn3cCQ63MgH/tBWwPSy0BIDt8iLFZYDwnTxA08d+zdgL8l2dkPdZDe+Qkd+RMl9Q==", "license": "MIT" }, "node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", "engines": { @@ -7993,8 +6856,6 @@ }, "node_modules/get-symbol-description": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.5", @@ -8010,8 +6871,6 @@ }, "node_modules/get-tsconfig": { "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -8022,15 +6881,11 @@ }, "node_modules/github-buttons": { "version": "2.23.0", - "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.23.0.tgz", - "integrity": "sha512-2REUOV3ue6NmT0QThhfzfYmeSoYpCG73+tL7Ir2C7P+gshRerI05WuIQuhDkE2Zlg5Wc39hc2DHj+pE23mGJvw==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/github-slugger": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", - "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", "license": "ISC" }, "node_modules/glob": { @@ -8053,8 +6908,6 @@ }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -8076,8 +6929,6 @@ }, "node_modules/global-modules": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" @@ -8088,8 +6939,6 @@ }, "node_modules/global-prefix": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "license": "MIT", "dependencies": { "ini": "^1.3.5", @@ -8102,8 +6951,6 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -8114,8 +6961,6 @@ }, "node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "license": "MIT", "engines": { "node": ">=4" @@ -8123,8 +6968,6 @@ }, "node_modules/globalthis": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "license": "MIT", "dependencies": { "define-properties": "^1.2.1", @@ -8139,8 +6982,6 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "license": "MIT", "dependencies": { "array-union": "^2.1.0", @@ -8159,21 +7000,15 @@ }, "node_modules/globjoin": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "license": "MIT" }, "node_modules/globrex": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true, "license": "MIT" }, "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" @@ -8184,20 +7019,14 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "license": "MIT" }, "node_modules/hard-rejection": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "license": "MIT", "engines": { "node": ">=6" @@ -8205,8 +7034,6 @@ }, "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8214,8 +7041,6 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -8223,8 +7048,6 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -8235,8 +7058,6 @@ }, "node_modules/has-proto": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8247,8 +7068,6 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8259,8 +7078,6 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -8274,8 +7091,6 @@ }, "node_modules/hasown": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -8286,8 +7101,6 @@ }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "license": "MIT", "bin": { "he": "bin/he" @@ -8295,8 +7108,6 @@ }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dev": true, "license": "BSD-3-Clause", "peer": true, @@ -8306,16 +7117,12 @@ }, "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, "license": "MIT", "peer": true }, "node_modules/hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -8326,8 +7133,6 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -8338,29 +7143,21 @@ }, "node_modules/hosted-git-info/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, "node_modules/hotkeys-js": { "version": "3.9.4", - "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.9.4.tgz", - "integrity": "sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q==", "dev": true, "license": "MIT", "peer": true }, "node_modules/html-escaper": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", "dev": true, "license": "MIT" }, "node_modules/html-parse-stringify": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", - "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", "dev": true, "license": "MIT", "peer": true, @@ -8370,8 +7167,6 @@ }, "node_modules/html-tags": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "license": "MIT", "engines": { "node": ">=8" @@ -8382,8 +7177,6 @@ }, "node_modules/htmlparser2": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -8401,15 +7194,11 @@ }, "node_modules/http-status-codes": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", - "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", "dev": true, "license": "MIT" }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -8418,8 +7207,6 @@ }, "node_modules/husky": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, "license": "MIT", "bin": { @@ -8434,8 +7221,6 @@ }, "node_modules/i18next": { "version": "19.9.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz", - "integrity": "sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg==", "dev": true, "license": "MIT", "peer": true, @@ -8445,8 +7230,6 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -8457,8 +7240,6 @@ }, "node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { "node": ">= 4" @@ -8466,8 +7247,6 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -8482,8 +7261,6 @@ }, "node_modules/import-lazy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "license": "MIT", "engines": { "node": ">=8" @@ -8491,8 +7268,6 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", "engines": { "node": ">=0.8.19" @@ -8500,8 +7275,6 @@ }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", "engines": { @@ -8510,9 +7283,6 @@ }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -8521,20 +7291,14 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, "node_modules/internal-slot": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -8547,8 +7311,6 @@ }, "node_modules/internmap": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "license": "ISC", "engines": { "node": ">=12" @@ -8556,8 +7318,6 @@ }, "node_modules/interpret": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -8565,8 +7325,6 @@ }, "node_modules/is-array-buffer": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -8581,14 +7339,10 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "license": "MIT" }, "node_modules/is-async-function": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -8602,8 +7356,6 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" @@ -8614,8 +7366,6 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -8630,8 +7380,6 @@ }, "node_modules/is-bun-module": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", - "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", "license": "MIT", "dependencies": { "semver": "^7.6.3" @@ -8639,8 +7387,6 @@ }, "node_modules/is-bun-module/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8651,8 +7397,6 @@ }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8663,8 +7407,6 @@ }, "node_modules/is-core-module": { "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -8678,8 +7420,6 @@ }, "node_modules/is-data-view": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" @@ -8693,8 +7433,6 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -8708,8 +7446,6 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8717,8 +7453,6 @@ }, "node_modules/is-finalizationregistry": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -8729,8 +7463,6 @@ }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "license": "MIT", "engines": { "node": ">=12" @@ -8741,8 +7473,6 @@ }, "node_modules/is-generator-function": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -8756,8 +7486,6 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -8768,8 +7496,6 @@ }, "node_modules/is-map": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8780,8 +7506,6 @@ }, "node_modules/is-negative-zero": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8792,8 +7516,6 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", "engines": { "node": ">=0.12.0" @@ -8801,8 +7523,6 @@ }, "node_modules/is-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -8816,8 +7536,6 @@ }, "node_modules/is-observable": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-2.1.0.tgz", - "integrity": "sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==", "license": "MIT", "engines": { "node": ">=8" @@ -8828,8 +7546,6 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -8837,8 +7553,6 @@ }, "node_modules/is-plain-obj": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8846,8 +7560,6 @@ }, "node_modules/is-plain-object": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -8855,8 +7567,6 @@ }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -8871,8 +7581,6 @@ }, "node_modules/is-set": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8883,8 +7591,6 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7" @@ -8898,8 +7604,6 @@ }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { @@ -8911,8 +7615,6 @@ }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -8926,8 +7628,6 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" @@ -8941,8 +7641,6 @@ }, "node_modules/is-typed-array": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" @@ -8956,8 +7654,6 @@ }, "node_modules/is-weakmap": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -8968,8 +7664,6 @@ }, "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -8980,8 +7674,6 @@ }, "node_modules/is-weakset": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -8996,20 +7688,14 @@ }, "node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -9018,8 +7704,6 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9033,8 +7717,6 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9048,8 +7730,6 @@ }, "node_modules/istanbul-reports": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9062,15 +7742,11 @@ }, "node_modules/istanbul-reports/node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/iterator.prototype": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", "license": "MIT", "dependencies": { "define-properties": "^1.2.1", @@ -9085,14 +7761,10 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -9103,8 +7775,6 @@ }, "node_modules/js-yaml-source-map": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/js-yaml-source-map/-/js-yaml-source-map-0.2.2.tgz", - "integrity": "sha512-z45Aww8oXJh9GuWUnwmvHsAkB7I/oWrkoHU554UQ8Ik4dyhVrk/nwClTI435feU7QIy7E0XaW8jHvZ4QxaAjog==", "dev": true, "license": "MIT", "peerDependencies": { @@ -9113,8 +7783,6 @@ }, "node_modules/jsesc": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -9125,45 +7793,31 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true, "license": "ISC" }, "node_modules/json2mq": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", "dev": true, "license": "MIT", "dependencies": { @@ -9172,8 +7826,6 @@ }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -9184,8 +7836,6 @@ }, "node_modules/jsx-ast-utils": { "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "license": "MIT", "dependencies": { "array-includes": "^3.1.6", @@ -9199,8 +7849,6 @@ }, "node_modules/katex": { "version": "0.16.11", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", - "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -9215,8 +7863,6 @@ }, "node_modules/katex/node_modules/commander": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "license": "MIT", "engines": { "node": ">= 12" @@ -9224,22 +7870,16 @@ }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/khroma": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + "version": "2.1.0" }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9247,8 +7887,6 @@ }, "node_modules/kleur": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "license": "MIT", "engines": { "node": ">=6" @@ -9256,28 +7894,20 @@ }, "node_modules/known-css-properties": { "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", "license": "MIT" }, "node_modules/langs": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/langs/-/langs-2.0.0.tgz", - "integrity": "sha512-v4pxOBEQVN1WBTfB1crhTtxzNLZU9HPWgadlwzWKISJtt6Ku/CnpBrwVy+jFv8StjxsPfwPFzO0CMwdZLJ0/BA==", "dev": true, "license": "MIT", "peer": true }, "node_modules/language-subtag-registry": { "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "license": "MIT", "dependencies": { "language-subtag-registry": "^0.3.20" @@ -9288,14 +7918,10 @@ }, "node_modules/layout-base": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", "license": "MIT" }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -9307,8 +7933,6 @@ }, "node_modules/lilconfig": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", "dev": true, "license": "MIT", "engines": { @@ -9317,14 +7941,10 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, "node_modules/linkify-it": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", "license": "MIT", "dependencies": { "uc.micro": "^1.0.1" @@ -9332,8 +7952,6 @@ }, "node_modules/lint-staged": { "version": "12.5.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.5.0.tgz", - "integrity": "sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==", "dev": true, "license": "MIT", "dependencies": { @@ -9364,8 +7982,6 @@ }, "node_modules/lint-staged/node_modules/commander": { "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "license": "MIT", "engines": { @@ -9374,8 +7990,6 @@ }, "node_modules/lint-staged/node_modules/supports-color": { "version": "9.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", "dev": true, "license": "MIT", "engines": { @@ -9387,8 +8001,6 @@ }, "node_modules/listr2": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", "dev": true, "license": "MIT", "dependencies": { @@ -9415,8 +8027,6 @@ }, "node_modules/listr2/node_modules/cli-truncate": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "license": "MIT", "dependencies": { @@ -9432,15 +8042,11 @@ }, "node_modules/listr2/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/listr2/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -9449,8 +8055,6 @@ }, "node_modules/listr2/node_modules/slice-ansi": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9464,8 +8068,6 @@ }, "node_modules/listr2/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -9479,15 +8081,11 @@ }, "node_modules/load-script": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==", "dev": true, "license": "MIT" }, "node_modules/local-pkg": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, "license": "MIT", "dependencies": { @@ -9503,8 +8101,6 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -9518,39 +8114,27 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "license": "MIT" }, "node_modules/log-update": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "license": "MIT", "dependencies": { @@ -9568,15 +8152,11 @@ }, "node_modules/log-update/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/log-update/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -9585,8 +8165,6 @@ }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9603,8 +8181,6 @@ }, "node_modules/log-update/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -9618,8 +8194,6 @@ }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", "dependencies": { @@ -9633,8 +8207,6 @@ }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -9645,8 +8217,6 @@ }, "node_modules/loupe": { "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "license": "MIT", "dependencies": { @@ -9655,8 +8225,6 @@ }, "node_modules/lower-case": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, "license": "MIT", "dependencies": { @@ -9665,8 +8233,6 @@ }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -9674,22 +8240,16 @@ }, "node_modules/lunr": { "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true, "license": "MIT" }, "node_modules/lunr-languages": { "version": "1.14.0", - "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz", - "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==", "dev": true, "license": "MPL-1.1" }, "node_modules/magic-string": { "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "dev": true, "license": "MIT", "dependencies": { @@ -9698,8 +8258,6 @@ }, "node_modules/magicast": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", - "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9710,8 +8268,6 @@ }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { @@ -9726,8 +8282,6 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", "bin": { @@ -9739,8 +8293,6 @@ }, "node_modules/map-obj": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "license": "MIT", "engines": { "node": ">=8" @@ -9751,16 +8303,12 @@ }, "node_modules/mark.ts": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/mark.ts/-/mark.ts-1.0.5.tgz", - "integrity": "sha512-wi27jiU8LDo2ApTTzpqFLG8HBYYVe5L4btQuDeJX4/DNCY5sN+AsbXgmRZW4vByAit9U5nK9l9UPT/vbS8Gz0w==", "dev": true, "license": "ISC", "peer": true }, "node_modules/markdown-it": { "version": "13.0.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", - "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", "license": "MIT", "dependencies": { "argparse": "^2.0.1", @@ -9775,8 +8323,6 @@ }, "node_modules/markdown-it-attrs": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.2.0.tgz", - "integrity": "sha512-m7svtUBythvcGFFZAv9VjMEvs8UbHri2sojJ3juJumoOzv8sdkx9a7W3KxiHbXxAbvL3Xauak8TMwCnvigVPKw==", "license": "MIT", "engines": { "node": ">=6" @@ -9787,14 +8333,10 @@ }, "node_modules/markdown-it-deflist": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/markdown-it-deflist/-/markdown-it-deflist-2.1.0.tgz", - "integrity": "sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg==", "license": "MIT" }, "node_modules/markdown-it-meta": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/markdown-it-meta/-/markdown-it-meta-0.0.1.tgz", - "integrity": "sha512-sCQG7mHJM3i4l6MztgzxE8t3aTQB5CSCO0wq8k6CEaqud40eryWXqPesq5AyztbYgwnxJcNIsmFsKDRkrl6Zuw==", "license": "MIT", "dependencies": { "js-yaml": "^3.8.1" @@ -9802,8 +8344,6 @@ }, "node_modules/markdown-it-meta/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" @@ -9811,8 +8351,6 @@ }, "node_modules/markdown-it-meta/node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -9824,14 +8362,10 @@ }, "node_modules/markdown-it-sup": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz", - "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==", "license": "MIT" }, "node_modules/markdown-it/node_modules/entities": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -9842,8 +8376,6 @@ }, "node_modules/markdownlint": { "version": "0.32.1", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.32.1.tgz", - "integrity": "sha512-3sx9xpi4xlHlokGyHO9k0g3gJbNY4DI6oNEeEYq5gQ4W7UkiJ90VDAnuDl2U+yyXOUa6BX+0gf69ZlTUGIBp6A==", "license": "MIT", "dependencies": { "markdown-it": "13.0.2", @@ -9858,8 +8390,6 @@ }, "node_modules/markdownlint-micromark": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.7.tgz", - "integrity": "sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==", "license": "MIT", "engines": { "node": ">=16" @@ -9867,8 +8397,6 @@ }, "node_modules/markdownlint-rule-helpers": { "version": "0.17.2", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.17.2.tgz", - "integrity": "sha512-XaeoW2NYSlWxMCZM2B3H7YTG6nlaLfkEZWMBhr4hSPlq9MuY2sy83+Xr89jXOqZMZYjvi5nBCGoFh7hHoPKZmA==", "license": "MIT", "engines": { "node": ">=12" @@ -9876,8 +8404,6 @@ }, "node_modules/matcher-collection": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz", - "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", "dev": true, "license": "ISC", "dependencies": { @@ -9890,15 +8416,11 @@ }, "node_modules/matcher-collection/node_modules/@types/minimatch": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true, "license": "MIT" }, "node_modules/matcher-collection/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -9908,8 +8430,6 @@ }, "node_modules/matcher-collection/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -9921,8 +8441,6 @@ }, "node_modules/mathml-tag-names": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "license": "MIT", "funding": { "type": "github", @@ -9931,8 +8449,6 @@ }, "node_modules/mdast-util-from-markdown": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -9955,8 +8471,6 @@ }, "node_modules/mdast-util-to-string": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0" @@ -9968,27 +8482,19 @@ }, "node_modules/mdn-data": { "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "license": "CC0-1.0" }, "node_modules/mdurl": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "license": "MIT" }, "node_modules/memoize-one": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", "dev": true, "license": "MIT" }, "node_modules/meow": { "version": "10.1.5", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", - "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "license": "MIT", "dependencies": { "@types/minimist": "^1.2.2", @@ -10013,8 +8519,6 @@ }, "node_modules/meow/node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -10025,14 +8529,10 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { "node": ">= 8" @@ -10040,8 +8540,6 @@ }, "node_modules/mermaid": { "version": "10.9.3", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.3.tgz", - "integrity": "sha512-V80X1isSEvAewIL3xhmz/rVmc27CVljcsbWxkxlWJWY/1kQa4XOABqpDl2qQLGKzpKm6WbTfUEKImBlUfFYArw==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^6.0.1", @@ -10068,8 +8566,6 @@ }, "node_modules/micromark": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", "funding": [ { "type": "GitHub Sponsors", @@ -10103,8 +8599,6 @@ }, "node_modules/micromark-core-commonmark": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", "funding": [ { "type": "GitHub Sponsors", @@ -10137,8 +8631,6 @@ }, "node_modules/micromark-factory-destination": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", "funding": [ { "type": "GitHub Sponsors", @@ -10158,8 +8650,6 @@ }, "node_modules/micromark-factory-label": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", "funding": [ { "type": "GitHub Sponsors", @@ -10180,8 +8670,6 @@ }, "node_modules/micromark-factory-space": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", "funding": [ { "type": "GitHub Sponsors", @@ -10200,8 +8688,6 @@ }, "node_modules/micromark-factory-title": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", "funding": [ { "type": "GitHub Sponsors", @@ -10222,8 +8708,6 @@ }, "node_modules/micromark-factory-whitespace": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", "funding": [ { "type": "GitHub Sponsors", @@ -10244,8 +8728,6 @@ }, "node_modules/micromark-util-character": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", "funding": [ { "type": "GitHub Sponsors", @@ -10264,8 +8746,6 @@ }, "node_modules/micromark-util-chunked": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", "funding": [ { "type": "GitHub Sponsors", @@ -10283,8 +8763,6 @@ }, "node_modules/micromark-util-classify-character": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", "funding": [ { "type": "GitHub Sponsors", @@ -10304,8 +8782,6 @@ }, "node_modules/micromark-util-combine-extensions": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", "funding": [ { "type": "GitHub Sponsors", @@ -10324,8 +8800,6 @@ }, "node_modules/micromark-util-decode-numeric-character-reference": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", "funding": [ { "type": "GitHub Sponsors", @@ -10343,8 +8817,6 @@ }, "node_modules/micromark-util-decode-string": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", "funding": [ { "type": "GitHub Sponsors", @@ -10365,8 +8837,6 @@ }, "node_modules/micromark-util-encode": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", "funding": [ { "type": "GitHub Sponsors", @@ -10381,8 +8851,6 @@ }, "node_modules/micromark-util-html-tag-name": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", "funding": [ { "type": "GitHub Sponsors", @@ -10397,8 +8865,6 @@ }, "node_modules/micromark-util-normalize-identifier": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", "funding": [ { "type": "GitHub Sponsors", @@ -10416,8 +8882,6 @@ }, "node_modules/micromark-util-resolve-all": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", "funding": [ { "type": "GitHub Sponsors", @@ -10435,8 +8899,6 @@ }, "node_modules/micromark-util-sanitize-uri": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", "funding": [ { "type": "GitHub Sponsors", @@ -10456,8 +8918,6 @@ }, "node_modules/micromark-util-subtokenize": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", "funding": [ { "type": "GitHub Sponsors", @@ -10478,8 +8938,6 @@ }, "node_modules/micromark-util-symbol": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", "funding": [ { "type": "GitHub Sponsors", @@ -10494,8 +8952,6 @@ }, "node_modules/micromark-util-types": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", "funding": [ { "type": "GitHub Sponsors", @@ -10510,8 +8966,6 @@ }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -10523,8 +8977,6 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -10533,8 +8985,6 @@ }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -10546,8 +8996,6 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -10556,8 +9004,6 @@ }, "node_modules/mimic-function": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "license": "MIT", "engines": { "node": ">=18" @@ -10568,8 +9014,6 @@ }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "license": "MIT", "engines": { "node": ">=4" @@ -10591,8 +9035,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10600,8 +9042,6 @@ }, "node_modules/minimist-options": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "license": "MIT", "dependencies": { "arrify": "^1.0.1", @@ -10614,8 +9054,6 @@ }, "node_modules/mlly": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz", - "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==", "dev": true, "license": "MIT", "dependencies": { @@ -10627,15 +9065,11 @@ }, "node_modules/monaco-editor": { "version": "0.38.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.38.0.tgz", - "integrity": "sha512-11Fkh6yzEmwx7O0YoLxeae0qEGFwmyPRlVxpg7oF9czOOCB/iCjdJrG5I67da5WiXK3YJCxoz9TJFE8Tfq/v9A==", "dev": true, "license": "MIT" }, "node_modules/mri": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "license": "MIT", "engines": { "node": ">=4" @@ -10643,14 +9077,10 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -10667,14 +9097,10 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "license": "MIT" }, "node_modules/no-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "license": "MIT", "dependencies": { @@ -10684,8 +9110,6 @@ }, "node_modules/node-fetch": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "license": "MIT", "dependencies": { @@ -10705,8 +9129,6 @@ }, "node_modules/node-html-parser": { "version": "6.1.13", - "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", - "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -10715,20 +9137,14 @@ }, "node_modules/node-releases": { "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "license": "MIT" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", "license": "MIT" }, "node_modules/normalize-package-data": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", @@ -10742,8 +9158,6 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10754,8 +9168,6 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10763,8 +9175,6 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { @@ -10776,8 +9186,6 @@ }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" @@ -10788,8 +9196,6 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10797,8 +9203,6 @@ }, "node_modules/object-inspect": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10809,8 +9213,6 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -10818,8 +9220,6 @@ }, "node_modules/object.assign": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.5", @@ -10836,8 +9236,6 @@ }, "node_modules/object.entries": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -10850,8 +9248,6 @@ }, "node_modules/object.fromentries": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -10868,8 +9264,6 @@ }, "node_modules/object.groupby": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -10882,8 +9276,6 @@ }, "node_modules/object.values": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -10899,14 +9291,10 @@ }, "node_modules/observable-fns": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/observable-fns/-/observable-fns-0.6.1.tgz", - "integrity": "sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==", "license": "MIT" }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "license": "ISC", "dependencies": { "wrappy": "1" @@ -10914,8 +9302,6 @@ }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -10930,14 +9316,10 @@ }, "node_modules/openapi-types": { "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", "license": "MIT" }, "node_modules/optionator": { "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "license": "MIT", "dependencies": { "deep-is": "^0.1.3", @@ -10953,8 +9335,6 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -10968,8 +9348,6 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -10983,8 +9361,6 @@ }, "node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10999,8 +9375,6 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -11011,8 +9385,6 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -11029,14 +9401,10 @@ }, "node_modules/parse-srcset": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", "license": "MIT" }, "node_modules/parse5": { "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "license": "MIT", "dependencies": { "entities": "^4.5.0" @@ -11047,8 +9415,6 @@ }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "license": "MIT", "dependencies": { "domhandler": "^5.0.3", @@ -11060,8 +9426,6 @@ }, "node_modules/parse5-parser-stream": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", "license": "MIT", "dependencies": { "parse5": "^7.0.0" @@ -11072,8 +9436,6 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "license": "MIT", "engines": { "node": ">=8" @@ -11081,8 +9443,6 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11090,8 +9450,6 @@ }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { "node": ">=8" @@ -11099,14 +9457,10 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "license": "MIT", "engines": { "node": ">=8" @@ -11114,15 +9468,11 @@ }, "node_modules/pathe": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, "license": "MIT", "engines": { @@ -11131,14 +9481,10 @@ }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -11149,8 +9495,6 @@ }, "node_modules/pidtree": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", - "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", "dev": true, "license": "MIT", "bin": { @@ -11162,8 +9506,6 @@ }, "node_modules/pkg-types": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", - "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", "dev": true, "license": "MIT", "dependencies": { @@ -11174,8 +9516,6 @@ }, "node_modules/possible-typed-array-names": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -11183,8 +9523,6 @@ }, "node_modules/postcss": { "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -11211,20 +9549,14 @@ }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "license": "MIT" }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", "license": "MIT" }, "node_modules/postcss-safe-parser": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "license": "MIT", "engines": { "node": ">=12.0" @@ -11239,8 +9571,6 @@ }, "node_modules/postcss-scss": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "funding": [ { "type": "opencollective", @@ -11265,8 +9595,6 @@ }, "node_modules/postcss-selector-parser": { "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -11278,8 +9606,6 @@ }, "node_modules/postcss-sorting": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", - "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", "license": "MIT", "peerDependencies": { "postcss": "^8.4.20" @@ -11287,14 +9613,10 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -11302,8 +9624,6 @@ }, "node_modules/prettier": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -11317,8 +9637,6 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" @@ -11329,8 +9647,6 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11344,8 +9660,6 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { @@ -11357,8 +9671,6 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -11368,21 +9680,15 @@ }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, "node_modules/proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true, "license": "MIT" }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", "engines": { "node": ">=6" @@ -11390,8 +9696,6 @@ }, "node_modules/qs": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" @@ -11405,8 +9709,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -11425,15 +9727,11 @@ }, "node_modules/queue-tick": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", "dev": true, "license": "MIT" }, "node_modules/quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "license": "MIT", "engines": { "node": ">=10" @@ -11444,16 +9742,12 @@ }, "node_modules/raf-schd": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", - "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", "dev": true, "license": "MIT", "peer": true }, "node_modules/ramda": { "version": "0.28.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", - "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==", "license": "MIT", "funding": { "type": "opencollective", @@ -11462,8 +9756,6 @@ }, "node_modules/rc-slider": { "version": "10.6.2", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.6.2.tgz", - "integrity": "sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw==", "dev": true, "license": "MIT", "peer": true, @@ -11482,8 +9774,6 @@ }, "node_modules/rc-util": { "version": "5.43.0", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.43.0.tgz", - "integrity": "sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==", "dev": true, "license": "MIT", "peer": true, @@ -11498,8 +9788,6 @@ }, "node_modules/react": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", "peer": true, "dependencies": { @@ -11511,9 +9799,6 @@ }, "node_modules/react-beautiful-dnd": { "version": "13.1.1", - "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", - "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", - "deprecated": "react-beautiful-dnd is now deprecated. Context and options: https://github.com/atlassian/react-beautiful-dnd/issues/2672", "dev": true, "license": "Apache-2.0", "peer": true, @@ -11533,8 +9818,6 @@ }, "node_modules/react-copy-to-clipboard": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", - "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", "dev": true, "license": "MIT", "peer": true, @@ -11548,8 +9831,6 @@ }, "node_modules/react-dom": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dev": true, "license": "MIT", "peer": true, @@ -11563,15 +9844,11 @@ }, "node_modules/react-fast-compare": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", "dev": true, "license": "MIT" }, "node_modules/react-final-form": { "version": "6.5.9", - "resolved": "https://registry.npmjs.org/react-final-form/-/react-final-form-6.5.9.tgz", - "integrity": "sha512-x3XYvozolECp3nIjly+4QqxdjSSWfcnpGEL5K8OBT6xmGrq5kBqbA6+/tOqoom9NwqIPPbxPNsOViFlbKgowbA==", "dev": true, "license": "MIT", "dependencies": { @@ -11588,16 +9865,12 @@ }, "node_modules/react-gtm-module": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/react-gtm-module/-/react-gtm-module-2.0.11.tgz", - "integrity": "sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw==", "dev": true, "license": "MIT", "peer": true }, "node_modules/react-hotkeys-hook": { "version": "3.4.7", - "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz", - "integrity": "sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ==", "dev": true, "license": "MIT", "peer": true, @@ -11611,8 +9884,6 @@ }, "node_modules/react-i18next": { "version": "11.15.6", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.15.6.tgz", - "integrity": "sha512-OUWcFdNgIA9swVx3JGIreuquglAinpRwB/HYrCprTN+s9BQDt9LSiY7x5DGc2JzVpwqtpoTV7oRUTOxEPNyUPw==", "dev": true, "license": "MIT", "peer": true, @@ -11636,23 +9907,17 @@ }, "node_modules/react-i18next/node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT", "peer": true }, "node_modules/react-is": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, "node_modules/react-monaco-editor": { "version": "0.53.0", - "resolved": "https://registry.npmjs.org/react-monaco-editor/-/react-monaco-editor-0.53.0.tgz", - "integrity": "sha512-ZITzsauH4CsicCGddtpgjRACaKNTVEL2hnjYFx8QMuc8zmsgfgq7D2GcF8OQsa2URIdGm/Zl7YwY2fmWpvqs/g==", "dev": true, "license": "MIT", "dependencies": { @@ -11666,8 +9931,6 @@ }, "node_modules/react-player": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.16.0.tgz", - "integrity": "sha512-mAIPHfioD7yxO0GNYVFD1303QFtI3lyyQZLY229UEAp/a10cSW+hPcakg0Keq8uWJxT2OiT/4Gt+Lc9bD6bJmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11683,8 +9946,6 @@ }, "node_modules/react-popper": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", - "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", "dev": true, "license": "MIT", "peer": true, @@ -11700,8 +9961,6 @@ }, "node_modules/react-redux": { "version": "7.2.9", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", - "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", "dev": true, "license": "MIT", "peer": true, @@ -11727,16 +9986,12 @@ }, "node_modules/react-redux/node_modules/react-is": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, "license": "MIT", "peer": true }, "node_modules/react-slick": { "version": "0.29.0", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.29.0.tgz", - "integrity": "sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==", "dev": true, "license": "MIT", "dependencies": { @@ -11753,8 +10008,6 @@ }, "node_modules/react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -11770,8 +10023,6 @@ }, "node_modules/react-virtualized-auto-sizer": { "version": "1.0.24", - "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.24.tgz", - "integrity": "sha512-3kCn7N9NEb3FlvJrSHWGQ4iVl+ydQObq2fHMn12i5wbtm74zHOPhz/i64OL3c1S1vi9i2GXtZqNqUJTQ+BnNfg==", "dev": true, "license": "MIT", "peer": true, @@ -11782,8 +10033,6 @@ }, "node_modules/react-waypoint": { "version": "10.3.0", - "resolved": "https://registry.npmjs.org/react-waypoint/-/react-waypoint-10.3.0.tgz", - "integrity": "sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11798,8 +10047,6 @@ }, "node_modules/react-window": { "version": "1.8.10", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.10.tgz", - "integrity": "sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==", "dev": true, "license": "MIT", "peer": true, @@ -11817,8 +10064,6 @@ }, "node_modules/read-pkg": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", @@ -11835,8 +10080,6 @@ }, "node_modules/read-pkg-up": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "license": "MIT", "dependencies": { "find-up": "^5.0.0", @@ -11852,8 +10095,6 @@ }, "node_modules/read-pkg-up/node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -11864,8 +10105,6 @@ }, "node_modules/read-pkg/node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -11876,8 +10115,6 @@ }, "node_modules/rechoir": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dependencies": { "resolve": "^1.1.6" }, @@ -11887,8 +10124,6 @@ }, "node_modules/redent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "license": "MIT", "dependencies": { "indent-string": "^5.0.0", @@ -11903,8 +10138,6 @@ }, "node_modules/redent/node_modules/indent-string": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "license": "MIT", "engines": { "node": ">=12" @@ -11915,8 +10148,6 @@ }, "node_modules/redux": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "dev": true, "license": "MIT", "peer": true, @@ -11926,8 +10157,6 @@ }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -11947,15 +10176,11 @@ }, "node_modules/regenerator-runtime": { "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true, "license": "MIT" }, "node_modules/regexp-tree": { "version": "0.1.27", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", - "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "license": "MIT", "bin": { "regexp-tree": "bin/regexp-tree" @@ -11963,8 +10188,6 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -11981,8 +10204,6 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11990,15 +10211,11 @@ }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", "dev": true, "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", @@ -12014,8 +10231,6 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", "engines": { "node": ">=4" @@ -12023,8 +10238,6 @@ }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" @@ -12032,8 +10245,6 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", "dependencies": { @@ -12046,8 +10257,6 @@ }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -12056,15 +10265,10 @@ }, "node_modules/rfdc": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -12078,8 +10282,6 @@ }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -12088,9 +10290,6 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -12109,8 +10308,6 @@ }, "node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -12121,14 +10318,10 @@ }, "node_modules/robust-predicates": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", "license": "Unlicense" }, "node_modules/rollup": { "version": "4.24.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", - "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", "dev": true, "license": "MIT", "dependencies": { @@ -12165,8 +10358,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -12188,14 +10379,10 @@ }, "node_modules/rw": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "license": "BSD-3-Clause" }, "node_modules/rxjs": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -12204,8 +10391,6 @@ }, "node_modules/sade": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", "license": "MIT", "dependencies": { "mri": "^1.1.0" @@ -12216,8 +10401,6 @@ }, "node_modules/safe-array-concat": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12234,8 +10417,6 @@ }, "node_modules/safe-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", "license": "MIT", "dependencies": { "regexp-tree": "~0.1.1" @@ -12243,8 +10424,6 @@ }, "node_modules/safe-regex-test": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.6", @@ -12260,14 +10439,10 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/sanitize-html": { "version": "2.13.1", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.13.1.tgz", - "integrity": "sha512-ZXtKq89oue4RP7abL9wp/9URJcqQNABB5GGJ2acW1sdO8JTVl92f4ygD7Yc9Ze09VAZhnt2zegeU0tbNsdcLYg==", "license": "MIT", "dependencies": { "deepmerge": "^4.2.2", @@ -12280,8 +10455,6 @@ }, "node_modules/sanitize-html/node_modules/htmlparser2": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -12299,8 +10472,6 @@ }, "node_modules/scheduler": { "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dev": true, "license": "MIT", "peer": true, @@ -12310,8 +10481,6 @@ }, "node_modules/scroll-into-view-if-needed": { "version": "2.2.29", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", - "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", "dev": true, "license": "MIT", "peer": true, @@ -12321,8 +10490,6 @@ }, "node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -12330,8 +10497,6 @@ }, "node_modules/set-function-length": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -12347,8 +10512,6 @@ }, "node_modules/set-function-name": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -12362,8 +10525,6 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -12374,8 +10535,6 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { "node": ">=8" @@ -12383,8 +10542,6 @@ }, "node_modules/shelljs": { "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", @@ -12400,8 +10557,6 @@ }, "node_modules/shelljs/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -12410,9 +10565,6 @@ }, "node_modules/shelljs/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -12431,8 +10583,6 @@ }, "node_modules/shelljs/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -12443,8 +10593,6 @@ }, "node_modules/side-channel": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12461,22 +10609,16 @@ }, "node_modules/siginfo": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC" }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/simple-git": { "version": "3.22.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.22.0.tgz", - "integrity": "sha512-6JujwSs0ac82jkGjMHiCnTifvf1crOiY/+tfs/Pqih6iow7VrpNKRRNdWm6RtaXpvvv/JGNYhlUtLhGFqHF+Yw==", "dev": true, "license": "MIT", "dependencies": { @@ -12491,8 +10633,6 @@ }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "license": "MIT", "engines": { "node": ">=8" @@ -12500,8 +10640,6 @@ }, "node_modules/slice-ansi": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", @@ -12516,8 +10654,6 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "license": "MIT", "engines": { "node": ">=12" @@ -12528,8 +10664,6 @@ }, "node_modules/slugify": { "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", "dev": true, "license": "MIT", "engines": { @@ -12538,8 +10672,6 @@ }, "node_modules/snake-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", "dev": true, "license": "MIT", "dependencies": { @@ -12549,8 +10681,6 @@ }, "node_modules/snakecase-keys": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.5.0.tgz", - "integrity": "sha512-r3kRtnoPu3FxGJ3fny6PKNnU3pteb29o6qAa0ugzhSseKNWRkw1dw8nIjXMyyKaU9vQxxVIE62Mb3bKbdrgpiw==", "dev": true, "license": "MIT", "dependencies": { @@ -12564,8 +10694,6 @@ }, "node_modules/snakecase-keys/node_modules/type-fest": { "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -12577,8 +10705,6 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -12586,8 +10712,6 @@ }, "node_modules/source-map-js": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -12595,9 +10719,6 @@ }, "node_modules/source-map-resolve": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "license": "MIT", "dependencies": { "atob": "^2.1.2", @@ -12606,8 +10727,6 @@ }, "node_modules/spdx-correct": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -12616,14 +10735,10 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", @@ -12632,41 +10747,29 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "license": "CC0-1.0" }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "license": "BSD-3-Clause" }, "node_modules/ssr-window": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz", - "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==", "dev": true, "license": "MIT" }, "node_modules/stackback": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, "license": "MIT" }, "node_modules/std-env": { "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "dev": true, "license": "MIT" }, "node_modules/streamx": { "version": "2.20.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", - "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, "license": "MIT", "dependencies": { @@ -12680,8 +10783,6 @@ }, "node_modules/string-argv": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "license": "MIT", "engines": { "node": ">=0.6.19" @@ -12689,15 +10790,11 @@ }, "node_modules/string-convert": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==", "dev": true, "license": "MIT" }, "node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { @@ -12714,8 +10811,6 @@ }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { @@ -12727,8 +10822,6 @@ }, "node_modules/string-width/node_modules/strip-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12743,8 +10836,6 @@ }, "node_modules/string.prototype.includes": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12757,8 +10848,6 @@ }, "node_modules/string.prototype.matchall": { "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12783,8 +10872,6 @@ }, "node_modules/string.prototype.repeat": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "license": "MIT", "dependencies": { "define-properties": "^1.1.3", @@ -12793,8 +10880,6 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12811,8 +10896,6 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12825,8 +10908,6 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12842,8 +10923,6 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -12854,8 +10933,6 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "license": "MIT", "engines": { "node": ">=4" @@ -12863,8 +10940,6 @@ }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", "engines": { @@ -12873,8 +10948,6 @@ }, "node_modules/strip-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "license": "MIT", "dependencies": { "min-indent": "^1.0.1" @@ -12888,8 +10961,6 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "license": "MIT", "engines": { "node": ">=8" @@ -12900,8 +10971,6 @@ }, "node_modules/strip-literal": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, "license": "MIT", "dependencies": { @@ -12913,27 +10982,19 @@ }, "node_modules/strip-literal/node_modules/js-tokens": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", "dev": true, "license": "MIT" }, "node_modules/strnum": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "license": "MIT" }, "node_modules/style-search": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "license": "ISC" }, "node_modules/stylelint": { "version": "15.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", - "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^2.3.1", @@ -12990,8 +11051,6 @@ }, "node_modules/stylelint-order": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz", - "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==", "license": "MIT", "dependencies": { "postcss": "^8.4.32", @@ -13003,8 +11062,6 @@ }, "node_modules/stylelint-prettier": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-4.1.0.tgz", - "integrity": "sha512-dd653q/d1IfvsSQshz1uAMe+XDm6hfM/7XiFH0htYY8Lse/s5ERTg7SURQehZPwVvm/rs7AsFhda9EQ2E9TS0g==", "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" @@ -13019,8 +11076,6 @@ }, "node_modules/stylelint-scss": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz", - "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==", "license": "MIT", "dependencies": { "known-css-properties": "^0.29.0", @@ -13035,20 +11090,14 @@ }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "license": "MIT" }, "node_modules/stylelint/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/stylelint/node_modules/file-entry-cache": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", - "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", "license": "MIT", "dependencies": { "flat-cache": "^3.2.0" @@ -13059,8 +11108,6 @@ }, "node_modules/stylelint/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -13068,8 +11115,6 @@ }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "license": "MIT", "engines": { "node": ">=8" @@ -13077,8 +11122,6 @@ }, "node_modules/stylelint/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -13091,14 +11134,10 @@ }, "node_modules/stylis": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==", "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -13109,8 +11148,6 @@ }, "node_modules/supports-hyperlinks": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0", @@ -13125,8 +11162,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -13136,14 +11171,10 @@ } }, "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + "version": "1.0.0" }, "node_modules/svgo": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", @@ -13167,8 +11198,6 @@ }, "node_modules/svgo/node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { "node": ">= 10" @@ -13176,8 +11205,6 @@ }, "node_modules/swiper": { "version": "6.8.4", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-6.8.4.tgz", - "integrity": "sha512-O+buF9Q+sMA0H7luMS8R59hCaJKlpo8PXhQ6ZYu6Rn2v9OsFd4d1jmrv14QvxtQpKAvL/ZiovEeANI/uDGet7g==", "dev": true, "funding": [ { @@ -13201,8 +11228,6 @@ }, "node_modules/synckit": { "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", @@ -13217,16 +11242,12 @@ }, "node_modules/tabbable": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", "dev": true, "license": "MIT", "peer": true }, "node_modules/table": { "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", @@ -13241,14 +11262,10 @@ }, "node_modules/table/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/table/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -13256,8 +11273,6 @@ }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -13273,8 +11288,6 @@ }, "node_modules/table/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -13287,8 +11300,6 @@ }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "license": "MIT", "engines": { "node": ">=6" @@ -13306,8 +11317,6 @@ }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { @@ -13321,8 +11330,6 @@ }, "node_modules/test-exclude/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -13332,9 +11339,6 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -13354,8 +11358,6 @@ }, "node_modules/test-exclude/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -13367,21 +11369,15 @@ }, "node_modules/text-decoder": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", - "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "license": "MIT" }, "node_modules/threads": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/threads/-/threads-1.7.0.tgz", - "integrity": "sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==", "license": "MIT", "dependencies": { "callsites": "^3.1.0", @@ -13398,23 +11394,17 @@ }, "node_modules/through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true, "license": "MIT" }, "node_modules/tiny-invariant": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", "dev": true, "license": "MIT", "peer": true }, "node_modules/tiny-worker": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.3.0.tgz", - "integrity": "sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==", "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -13423,15 +11413,11 @@ }, "node_modules/tinybench": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "dev": true, "license": "MIT" }, "node_modules/tinypool": { "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true, "license": "MIT", "engines": { @@ -13440,8 +11426,6 @@ }, "node_modules/tinyspy": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true, "license": "MIT", "engines": { @@ -13450,8 +11434,6 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -13462,23 +11444,17 @@ }, "node_modules/toggle-selection": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", "dev": true, "license": "MIT", "peer": true }, "node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, "license": "MIT" }, "node_modules/trim-newlines": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "license": "MIT", "engines": { "node": ">=12" @@ -13489,8 +11465,6 @@ }, "node_modules/ts-api-utils": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", "license": "MIT", "engines": { "node": ">=16" @@ -13501,8 +11475,6 @@ }, "node_modules/ts-dedent": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", "license": "MIT", "engines": { "node": ">=6.10" @@ -13510,14 +11482,10 @@ }, "node_modules/ts-toolbelt": { "version": "6.15.5", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz", - "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==", "license": "Apache-2.0" }, "node_modules/tsconfck": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.4.tgz", - "integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==", "dev": true, "license": "MIT", "bin": { @@ -13537,8 +11505,6 @@ }, "node_modules/tsconfig-paths": { "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", @@ -13549,8 +11515,6 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "license": "MIT", "dependencies": { "minimist": "^1.2.0" @@ -13561,14 +11525,10 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -13579,8 +11539,6 @@ }, "node_modules/type-detect": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "license": "MIT", "engines": { @@ -13589,8 +11547,6 @@ }, "node_modules/type-fest": { "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -13602,8 +11558,6 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -13616,8 +11570,6 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -13635,8 +11587,6 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -13655,8 +11605,6 @@ }, "node_modules/typed-array-length": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -13675,8 +11623,6 @@ }, "node_modules/typescript": { "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -13688,8 +11634,6 @@ }, "node_modules/typograf": { "version": "6.15.1", - "resolved": "https://registry.npmjs.org/typograf/-/typograf-6.15.1.tgz", - "integrity": "sha512-G1IIJlh4ycW+rvTspdgZKQoj/fKpmwif6MUhrmn3LY50W8njRnBqdFIJcfDqbmDg+RmmP51R9jdjjMwBYA5P0Q==", "dev": true, "license": "MIT", "engines": { @@ -13698,21 +11642,15 @@ }, "node_modules/uc.micro": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "license": "MIT" }, "node_modules/ufo": { "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", "dev": true, "license": "MIT" }, "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -13726,8 +11664,6 @@ }, "node_modules/undici": { "version": "6.20.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", - "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", "license": "MIT", "engines": { "node": ">=18.17" @@ -13735,15 +11671,11 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true, "license": "MIT" }, "node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -13755,8 +11687,6 @@ }, "node_modules/universal-cookie": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-7.2.2.tgz", - "integrity": "sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13766,15 +11696,11 @@ }, "node_modules/universal-user-agent": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true, "license": "ISC" }, "node_modules/update-browserslist-db": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -13803,8 +11729,6 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -13812,8 +11736,6 @@ }, "node_modules/url": { "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "license": "MIT", "dependencies": { "punycode": "^1.4.1", @@ -13825,14 +11747,10 @@ }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "license": "MIT" }, "node_modules/use-memo-one": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", - "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", "dev": true, "license": "MIT", "peer": true, @@ -13842,14 +11760,10 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/utility-types": { "version": "3.11.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", - "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", "dev": true, "license": "MIT", "engines": { @@ -13858,8 +11772,6 @@ }, "node_modules/uuid": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -13871,8 +11783,6 @@ }, "node_modules/uvu": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "license": "MIT", "dependencies": { "dequal": "^2.0.0", @@ -13889,8 +11799,6 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", @@ -13899,8 +11807,6 @@ }, "node_modules/vite": { "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13959,8 +11865,6 @@ }, "node_modules/vite-node": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", - "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", "dev": true, "license": "MIT", "dependencies": { @@ -13982,8 +11886,6 @@ }, "node_modules/vite-tsconfig-paths": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", - "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dev": true, "license": "MIT", "dependencies": { @@ -14002,8 +11904,6 @@ }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -14019,8 +11919,6 @@ }, "node_modules/vite/node_modules/esbuild": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -14058,8 +11956,6 @@ }, "node_modules/vitest": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", - "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", "dev": true, "license": "MIT", "dependencies": { @@ -14124,8 +12020,6 @@ }, "node_modules/vitest/node_modules/execa": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "license": "MIT", "dependencies": { @@ -14148,8 +12042,6 @@ }, "node_modules/vitest/node_modules/get-stream": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "license": "MIT", "engines": { @@ -14161,8 +12053,6 @@ }, "node_modules/vitest/node_modules/human-signals": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -14171,8 +12061,6 @@ }, "node_modules/vitest/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "license": "MIT", "engines": { @@ -14184,8 +12072,6 @@ }, "node_modules/vitest/node_modules/mimic-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "license": "MIT", "engines": { @@ -14197,8 +12083,6 @@ }, "node_modules/vitest/node_modules/npm-run-path": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14213,8 +12097,6 @@ }, "node_modules/vitest/node_modules/onetime": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14229,8 +12111,6 @@ }, "node_modules/vitest/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", "engines": { @@ -14242,8 +12122,6 @@ }, "node_modules/vitest/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -14255,8 +12133,6 @@ }, "node_modules/vitest/node_modules/strip-final-newline": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "license": "MIT", "engines": { @@ -14268,8 +12144,6 @@ }, "node_modules/void-elements": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "dev": true, "license": "MIT", "peer": true, @@ -14279,8 +12153,6 @@ }, "node_modules/walk-sync": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-3.0.0.tgz", - "integrity": "sha512-41TvKmDGVpm2iuH7o+DAOt06yyu/cSHpX3uzAwetzASvlNtVddgIjXIb2DfB/Wa20B1Jo86+1Dv1CraSU7hWdw==", "dev": true, "license": "MIT", "dependencies": { @@ -14295,15 +12167,11 @@ }, "node_modules/walk-sync/node_modules/@types/minimatch": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true, "license": "MIT" }, "node_modules/walk-sync/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -14313,8 +12181,6 @@ }, "node_modules/walk-sync/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -14326,8 +12192,6 @@ }, "node_modules/warning": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "dev": true, "license": "MIT", "peer": true, @@ -14337,21 +12201,15 @@ }, "node_modules/web-worker": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", - "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", "license": "Apache-2.0" }, "node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/whatwg-encoding": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" @@ -14362,8 +12220,6 @@ }, "node_modules/whatwg-mimetype": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "license": "MIT", "engines": { "node": ">=18" @@ -14371,8 +12227,6 @@ }, "node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", "dependencies": { @@ -14382,8 +12236,6 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -14397,8 +12249,6 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", @@ -14413,8 +12263,6 @@ }, "node_modules/which-builtin-type": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", "license": "MIT", "dependencies": { "function.prototype.name": "^1.1.6", @@ -14439,8 +12287,6 @@ }, "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -14457,8 +12303,6 @@ }, "node_modules/which-typed-array": { "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -14476,8 +12320,6 @@ }, "node_modules/why-is-node-running": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "dependencies": { @@ -14493,8 +12335,6 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14502,8 +12342,6 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -14520,15 +12358,11 @@ }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -14537,8 +12371,6 @@ }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -14552,14 +12384,10 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/write-file-atomic": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -14571,8 +12399,6 @@ }, "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "license": "ISC", "engines": { "node": ">=14" @@ -14583,8 +12409,6 @@ }, "node_modules/xml-formatter": { "version": "3.6.3", - "resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-3.6.3.tgz", - "integrity": "sha512-++x1TlRO1FRlQ82AZ4WnoCSufaI/PT/sycn4K8nRl4gnrNC1uYY2VV/67aALZ2m0Q4Q/BLj/L69K360Itw9NNg==", "license": "MIT", "dependencies": { "xml-parser-xo": "^4.1.2" @@ -14595,8 +12419,6 @@ }, "node_modules/xml-parser-xo": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-4.1.2.tgz", - "integrity": "sha512-Z/DRB0ZAKj5vAQg++XsfQQKfT73Vfj5n5lKIVXobBDQEva6NHWUTxOA6OohJmEcpoy8AEqBmSGkXXAnFwt5qAA==", "license": "MIT", "engines": { "node": ">= 16" @@ -14604,14 +12426,10 @@ }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, "license": "ISC", "engines": { @@ -14620,8 +12438,6 @@ }, "node_modules/yargs-parser": { "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "license": "ISC", "engines": { "node": ">=10" @@ -14629,8 +12445,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "license": "MIT", "engines": { "node": ">=10" From 1778e37546475c1e7ec45dc2e5cf1e0c410fb541 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 13:29:01 +0300 Subject: [PATCH 13/18] chore: Fix tests --- src/commands/build/index.spec.ts | 4 ++-- src/commands/translate/index.spec.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/commands/build/index.spec.ts b/src/commands/build/index.spec.ts index 6ab53216..45b90235 100644 --- a/src/commands/build/index.spec.ts +++ b/src/commands/build/index.spec.ts @@ -17,13 +17,13 @@ describe('Build command', () => { describe('input', () => { test('should be absolute', '--input ./input', { - input: expect.stringMatching(/^\/.*?\/input$/), + input: expect.stringMatching(/^(\/|[A-Z]:\\).*?(\/|\\)input$/), }); }); describe('output', () => { test('should be absolute', '--output ./output', { - output: expect.stringMatching(/^\/.*?\/output$/), + output: expect.stringMatching(/^(\/|[A-Z]:\\).*?(\/|\\)output$/), }); }); diff --git a/src/commands/translate/index.spec.ts b/src/commands/translate/index.spec.ts index ada1eac0..024bf4ac 100644 --- a/src/commands/translate/index.spec.ts +++ b/src/commands/translate/index.spec.ts @@ -317,8 +317,8 @@ describe('Translate command', () => { expect(instance.provider?.translate).toBeCalledWith( expect.anything(), expect.objectContaining({ - input: expect.stringMatching(/^\//), - output: expect.stringMatching(/^\//), + input: expect.stringMatching(/^(\/|[A-Z]:\\).*?/), + output: expect.stringMatching(/^(\/|[A-Z]:\\).*?/), }), ); }); From 6ebbae6296018c7ff4682245f46d81d213f013a9 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Tue, 12 Nov 2024 15:53:32 +0300 Subject: [PATCH 14/18] fix: Fix post build logs processing --- src/commands/build/index.ts | 15 ++------------- src/index.ts | 2 +- src/program/base.ts | 11 ++++++++--- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/commands/build/index.ts b/src/commands/build/index.ts index bf08189d..73f979a6 100644 --- a/src/commands/build/index.ts +++ b/src/commands/build/index.ts @@ -12,6 +12,7 @@ import {Lang, Stage, YFM_CONFIG_FILENAME} from '~/constants'; import {Command, Config, configPath, defined, valuable} from '~/config'; import {OutputFormat, options} from './config'; import {Run} from './run'; +import {handler} from './handler'; import { Templating, @@ -273,8 +274,6 @@ export class Build run.logger.pipe(this.logger); - // console.log(run.config); - shell.mkdir('-p', run.originalOutput); // Create temporary input/output folders @@ -283,7 +282,7 @@ export class Build await this.hooks.BeforeAnyRun.promise(run); await this.hooks.BeforeRun.for(this.config.outputFormat).promise(run); - await Promise.all([this.handler(run), this.hooks.Run.promise(run)]); + await Promise.all([handler(run), this.hooks.Run.promise(run)]); await this.hooks.AfterRun.for(this.config.outputFormat).promise(run); await this.hooks.AfterAnyRun.promise(run); @@ -296,14 +295,4 @@ export class Build shell.rm('-rf', run.input, run.output); } - - /** - * Loads handler in async mode to not initialise all deps on startup. - */ - private async handler(run: Run) { - // @ts-ignore - const {handler} = await import('./handler'); - - return handler(run); - } } diff --git a/src/index.ts b/src/index.ts index 8fbded19..12fed307 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,7 +25,7 @@ if (require.main === module) { if (message) { // eslint-disable-next-line no-console - console.error(error.stack || error.message || error); + console.error(error.message || error); } } diff --git a/src/program/base.ts b/src/program/base.ts index 90292d5a..29364bbd 100644 --- a/src/program/base.ts +++ b/src/program/base.ts @@ -4,6 +4,7 @@ import {AsyncSeriesWaterfallHook, Hook, HookMap, SyncHook} from 'tapable'; import {isAbsolute, resolve} from 'node:path'; import {once} from 'lodash'; import {Logger} from '~/logger'; +import log from '@diplodoc/transform/lib/log'; import { resolveConfig, scope as scopeConfig, @@ -151,9 +152,13 @@ export const BaseProgram = < } private async post() { - const {error, warn} = this.logger; - if (error.count || (this.config.strict && warn.count)) { - throw new HandledError('There is some errors.'); + if (this.logger.error.count || (this.config.strict && this.logger.warn.count)) { + throw new HandledError('There is some processing errors.'); + } + + const {error, warn} = log.get(); + if (error.length || (this.config.strict && warn.length)) { + throw new HandledError('There is some processing errors.'); } } From 5919bdb0f7f3fc33f27248dcc443568faab49da7 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Thu, 14 Nov 2024 19:23:34 +0300 Subject: [PATCH 15/18] fix: Fix context config prototype to ballow serialization --- src/config/index.ts | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/config/index.ts b/src/config/index.ts index ca43c219..6a6df7fc 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -147,17 +147,22 @@ type ConfigUtils = { export type Config = T & ConfigUtils; export function withConfigUtils(path: string | null, config: T): Config { - return { - ...config, - resolve: (subpath: string): AbsolutePath => { - if (path === null) { - return resolve(subpath) as AbsolutePath; - } - - return resolve(dirname(path), subpath) as AbsolutePath; + return Object.create(config, { + resolve: { + enumerable: false, + value: (subpath: string): AbsolutePath => { + if (path === null) { + return resolve(subpath) as AbsolutePath; + } + + return resolve(dirname(path), subpath) as AbsolutePath; + }, }, - [configPath]: path === null ? path : resolve(path), - }; + [configPath]: { + enumerable: false, + value: path === null ? path : resolve(path), + } + }); } export async function resolveConfig( From 7dddf7dc4ae7bc9e1feed19d60185e79793928ae Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Thu, 14 Nov 2024 19:26:02 +0300 Subject: [PATCH 16/18] fix: Fix global log processing to handle errors --- src/logger/index.ts | 40 ++++++++++++++++++++++++++++++++++++---- src/program/base.ts | 3 ++- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/logger/index.ts b/src/logger/index.ts index 2f8c31ab..fe1383e5 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -64,6 +64,18 @@ const colors = { [LogLevel.ERROR]: red, }; + +/** + * Logger has three logging channels: info, warning, and error. + * There are also many topics that use one of these channels. + * + * By default, the logger has three topics named after the logging channels. + * New topics should always use one of defined channel. + * + * Loggers are also pipeable. + * In this mode, only the channel is passed along. + * Topics processing from the parent logger are ignored. + */ export class Logger implements LogConsumer { [INFO] = writer(this, LogLevel.INFO); @@ -71,11 +83,11 @@ export class Logger implements LogConsumer { [ERROR] = writer(this, LogLevel.ERROR); - [LogLevel.INFO] = this.topic(LogLevel.INFO, 'INFO'); + info = this.topic(LogLevel.INFO, 'INFO'); - [LogLevel.WARN] = this.topic(LogLevel.WARN, 'WARN'); + warn = this.topic(LogLevel.WARN, 'WARN'); - [LogLevel.ERROR] = this.topic(LogLevel.ERROR, 'ERR'); + error = this.topic(LogLevel.ERROR, 'ERR'); private options: LoggerOptions = { colors: true, @@ -103,6 +115,13 @@ export class Logger implements LogConsumer { return this; } + /** + * Pipe local log channels to parent log channels. + * This doesn't pipe topics processing. + * So if child and parent has the same topic with name 'proc', + * only local topic will be applied to message. + * Message will be decorated by local topic and will be passed to parent as raw string. + */ pipe(consumer: LogConsumer) { if (this.consumer && this.consumer !== consumer) { throw new Error('This log already piped to another consumer.'); @@ -119,8 +138,13 @@ export class Logger implements LogConsumer { return this; } + /** + * Defines new write decorator to one of defined log channeld. + * Each decorator adds colored prefix to messages and apply preconfigured filters. + */ topic(level: LogLevels, prefix: string, color?: Color) { - const _writer = this[Symbol.for(level) as keyof LogConsumer]; + const channel = Symbol.for(level) as keyof LogConsumer; + const _writer = this[channel]; const _color = color || colors[level]; const topic = (...messages: unknown[]) => { @@ -169,6 +193,14 @@ export class Logger implements LogConsumer { return this; } + stat(): Record { + return { + [LogLevel.INFO]: this[INFO].count, + [LogLevel.WARN]: this[WARN].count, + [LogLevel.ERROR]: this[ERROR].count, + } + } + [Write](level: LogLevels, message: string) { if (this.options.quiet) { return; diff --git a/src/program/base.ts b/src/program/base.ts index 29364bbd..1d0ba523 100644 --- a/src/program/base.ts +++ b/src/program/base.ts @@ -152,7 +152,8 @@ export const BaseProgram = < } private async post() { - if (this.logger.error.count || (this.config.strict && this.logger.warn.count)) { + const stat = this.logger.stat(); + if (stat.error || (this.config.strict && stat.warn)) { throw new HandledError('There is some processing errors.'); } From fa1c5f0d2a014561de4a8781fd16e0f25170e619 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Thu, 14 Nov 2024 21:15:09 +0300 Subject: [PATCH 17/18] chore: Small impovments --- src/commands/build/config.ts | 3 +-- src/commands/build/handler.ts | 32 ++++++++-------------------- src/commands/build/index.ts | 3 +-- src/commands/build/run.ts | 2 +- src/steps/processAssets.ts | 40 +++++++++++------------------------ 5 files changed, 24 insertions(+), 56 deletions(-) diff --git a/src/commands/build/config.ts b/src/commands/build/config.ts index a09a1b48..804bf9e5 100644 --- a/src/commands/build/config.ts +++ b/src/commands/build/config.ts @@ -26,8 +26,7 @@ const outputFormat = option({ const langs = option({ flags: '--lang, --langs ', - desc: 'Allow loading custom resources into statically generated pages.', - // parser: toArray, + desc: 'Configure langs supported by build', }); const vars = option({ diff --git a/src/commands/build/handler.ts b/src/commands/build/handler.ts index fbf995a2..ac03cc30 100644 --- a/src/commands/build/handler.ts +++ b/src/commands/build/handler.ts @@ -3,12 +3,10 @@ import type {Run} from './run'; import 'threads/register'; import glob from 'glob'; -import {join} from 'path'; import shell from 'shelljs'; import OpenapiIncluder from '@diplodoc/openapi-extension/includer'; -import {BUNDLE_FOLDER} from '~/constants'; import {ArgvService, Includers, SearchService} from '~/services'; import { initLinterWorkers, @@ -24,9 +22,6 @@ import {prepareMapFile} from '~/steps/processMapFile'; import {copyFiles} from '~/utils'; export async function handler(run: Run) { - const tmpInputFolder = run.input; - const tmpOutputFolder = run.output; - if (typeof VERSION !== 'undefined') { console.log(`Using v${VERSION} version`); } @@ -39,14 +34,12 @@ export async function handler(run: Run) { Includers.init([OpenapiIncluder]); const { - output: outputFolderPath, - outputFormat, lintDisabled, buildDisabled, addMapFile, } = ArgvService.getConfig(); - preparingTemporaryFolders(); + preparingTemporaryFolders(run); await processServiceFiles(); processExcludedFiles(); @@ -55,7 +48,7 @@ export async function handler(run: Run) { prepareMapFile(); } - const outputBundlePath = join(outputFolderPath, BUNDLE_FOLDER); + const outputBundlePath = run.bundlePath; if (!lintDisabled) { /* Initialize workers in advance to avoid a timeout failure due to not receiving a message from them */ @@ -71,12 +64,7 @@ export async function handler(run: Run) { if (!buildDisabled) { // process additional files - processAssets({ - run, - outputFormat, - outputBundlePath, - tmpOutputFolder, - }); + processAssets(run); await processChangelogs(); @@ -85,23 +73,21 @@ export async function handler(run: Run) { } catch (error) { run.logger.error(error); } finally { - processLogs(tmpInputFolder); + processLogs(run.input); } } -function preparingTemporaryFolders() { - const args = ArgvService.getConfig(); - +function preparingTemporaryFolders(run: Run) { copyFiles( - args.rootInput, - args.input, + run.originalInput, + run.input, glob.sync('**', { - cwd: args.rootInput, + cwd: run.originalInput, nodir: true, follow: true, ignore: ['node_modules/**', '*/node_modules/**'], }), ); - shell.chmod('-R', 'u+w', args.input); + shell.chmod('-R', 'u+w', run.input); } diff --git a/src/commands/build/index.ts b/src/commands/build/index.ts index 73f979a6..b3923c75 100644 --- a/src/commands/build/index.ts +++ b/src/commands/build/index.ts @@ -274,8 +274,6 @@ export class Build run.logger.pipe(this.logger); - shell.mkdir('-p', run.originalOutput); - // Create temporary input/output folders shell.rm('-rf', run.input, run.output); shell.mkdir('-p', run.input, run.output); @@ -287,6 +285,7 @@ export class Build await this.hooks.AfterAnyRun.promise(run); // Copy all generated files to user' output folder + shell.mkdir('-p', run.originalOutput); shell.cp('-r', join(run.output, '*'), run.originalOutput); if (glob.sync('.*', {cwd: run.output}).length) { diff --git a/src/commands/build/run.ts b/src/commands/build/run.ts index 06a909d7..327bfff5 100644 --- a/src/commands/build/run.ts +++ b/src/commands/build/run.ts @@ -32,7 +32,7 @@ export class Run { readonly config: BuildConfig; get bundlePath() { - return join(this.originalOutput, BUNDLE_FOLDER); + return join(this.output, BUNDLE_FOLDER); } get configPath() { diff --git a/src/steps/processAssets.ts b/src/steps/processAssets.ts index 90dada29..1d547031 100644 --- a/src/steps/processAssets.ts +++ b/src/steps/processAssets.ts @@ -5,7 +5,7 @@ import {load} from 'js-yaml'; import {readFileSync} from 'fs'; import {join, relative} from 'path'; -import {ArgvService, TocService} from '../services'; +import {TocService} from '../services'; import {checkPathExists, copyFiles, findAllValuesByKeys} from '../utils'; import {DocLeadingPageData, LINK_KEYS} from '@diplodoc/client/ssr'; @@ -15,54 +15,38 @@ import {ASSETS_FOLDER} from '../constants'; import {Resources} from '../models'; import {resolveRelativePath} from '@diplodoc/transform/lib/utilsFS'; -/** - * @param {Array} args - * @param {string} outputBundlePath - * @param {string} outputFormat - * @param {string} tmpOutputFolder - * @return {void} - */ - -type Props = { - run: Run; - outputBundlePath: string; - outputFormat: string; - tmpOutputFolder: string; -}; /* * Processes assets files (everything except .md files) */ -export function processAssets({run, outputFormat, outputBundlePath, tmpOutputFolder}: Props) { - switch (outputFormat) { +export function processAssets(run: Run) { + switch (run.config.outputFormat) { case 'html': - processAssetsHtmlRun({outputBundlePath}); + processAssetsHtmlRun(run); break; case 'md': - processAssetsMdRun({run, tmpOutputFolder}); + processAssetsMdRun(run); break; } } -function processAssetsHtmlRun({outputBundlePath}) { - const {input: inputFolderPath, output: outputFolderPath} = ArgvService.getConfig(); - - const documentationAssetFilePath: string[] = walkSync(inputFolderPath, { +function processAssetsHtmlRun(run: Run) { + const documentationAssetFilePath: string[] = walkSync(run.input, { directories: false, includeBasePath: false, ignore: ['**/*.yaml', '**/*.md'], }); - copyFiles(inputFolderPath, outputFolderPath, documentationAssetFilePath); + copyFiles(run.input, run.output, documentationAssetFilePath); const bundleAssetFilePath: string[] = walkSync(ASSETS_FOLDER, { directories: false, includeBasePath: false, }); - copyFiles(ASSETS_FOLDER, outputBundlePath, bundleAssetFilePath); + copyFiles(ASSETS_FOLDER, run.bundlePath, bundleAssetFilePath); } -function processAssetsMdRun({run, tmpOutputFolder}: {run: Run; tmpOutputFolder: string}) { +function processAssetsMdRun(run: Run) { const {allowCustomResources, resources} = run.config; if (resources && allowCustomResources) { @@ -78,7 +62,7 @@ function processAssetsMdRun({run, tmpOutputFolder}: {run: Run; tmpOutputFolder: }); //copy resources - copyFiles(run.originalInput, tmpOutputFolder, resourcePaths); + copyFiles(run.originalInput, run.output, resourcePaths); } const tocYamlFiles = TocService.getNavigationPaths().reduce((acc, file) => { @@ -111,6 +95,6 @@ function processAssetsMdRun({run, tmpOutputFolder}: {run: Run; tmpOutputFolder: return acc; }, [] as RelativePath[]); - copyFiles(run.originalInput, tmpOutputFolder, localMediaLinks); + copyFiles(run.originalInput, run.output, localMediaLinks); }); } From 473bb9a1f4e719ea6f287c99aecf7461e5c49945 Mon Sep 17 00:00:00 2001 From: 3y3 <3y3@ya.ru> Date: Fri, 15 Nov 2024 12:14:49 +0300 Subject: [PATCH 18/18] wip --- package.json | 4 +- src/commands/build/loaders/presets-loader.ts | 0 src/commands/build/loaders/toc-loader.ts | 0 src/commands/build/loaders/yaml-loader.ts | 0 src/globals.d.ts | 9 + src/vfile/globals.d.ts | 9 + src/vfile/index.ts | 3 + src/vfile/loader-runner/LoaderClass.ts | 74 +++++++ src/vfile/loader-runner/LoaderContext.ts | 137 +++++++++++++ src/vfile/loader-runner/README.md | 9 + src/vfile/loader-runner/index.ts | 7 + src/vfile/loader-runner/loader.ts | 48 +++++ src/vfile/loader-runner/runLoaders.ts | 193 +++++++++++++++++++ src/vfile/loader-runner/runSyncOrAsync.ts | 88 +++++++++ src/vfile/loader-runner/utils.ts | 39 ++++ src/vfile/vfile/ExtendedContext.ts | 183 ++++++++++++++++++ src/vfile/vfile/index.ts | 149 ++++++++++++++ src/vfile/vfile/resolveLoaders.ts | 49 +++++ 18 files changed, 1000 insertions(+), 1 deletion(-) create mode 100644 src/commands/build/loaders/presets-loader.ts create mode 100644 src/commands/build/loaders/toc-loader.ts create mode 100644 src/commands/build/loaders/yaml-loader.ts create mode 100644 src/vfile/globals.d.ts create mode 100644 src/vfile/index.ts create mode 100644 src/vfile/loader-runner/LoaderClass.ts create mode 100644 src/vfile/loader-runner/LoaderContext.ts create mode 100644 src/vfile/loader-runner/README.md create mode 100644 src/vfile/loader-runner/index.ts create mode 100644 src/vfile/loader-runner/loader.ts create mode 100644 src/vfile/loader-runner/runLoaders.ts create mode 100644 src/vfile/loader-runner/runSyncOrAsync.ts create mode 100644 src/vfile/loader-runner/utils.ts create mode 100644 src/vfile/vfile/ExtendedContext.ts create mode 100644 src/vfile/vfile/index.ts create mode 100644 src/vfile/vfile/resolveLoaders.ts diff --git a/package.json b/package.json index 893b7055..e8bb0391 100644 --- a/package.json +++ b/package.json @@ -56,9 +56,11 @@ "dependencies": { "@diplodoc/client": "^3.1.8", "@diplodoc/translation": "^1.4.3", + "@types/vfile": "^4.0.0", "katex": "^0.16.9", "shelljs": "0.8.5", - "threads": "1.7.0" + "threads": "1.7.0", + "vfile": "^4.2.1" }, "devDependencies": { "@aws-sdk/client-s3": "^3.525.0", diff --git a/src/commands/build/loaders/presets-loader.ts b/src/commands/build/loaders/presets-loader.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/commands/build/loaders/toc-loader.ts b/src/commands/build/loaders/toc-loader.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/commands/build/loaders/yaml-loader.ts b/src/commands/build/loaders/yaml-loader.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/globals.d.ts b/src/globals.d.ts index 474aaea4..03efeb68 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -1,8 +1,17 @@ declare const VERSION: string; +type Action = (...args: any[]) => any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any type Hash = Record; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type NodeCallback = (error?: Error | null, result?: R) => void; + +type SourceMap = { + version: string; +}; + type DeepPartial = { [P in keyof T]?: T[P] extends {} ? DeepPartial : T[P]; }; diff --git a/src/vfile/globals.d.ts b/src/vfile/globals.d.ts new file mode 100644 index 00000000..ae223282 --- /dev/null +++ b/src/vfile/globals.d.ts @@ -0,0 +1,9 @@ +type Action = (...args: any[]) => any; + +type Hash = Record; + +type NodeCallback = (error?: Error | null, result?: R) => void; + +type SourceMap = { + version: string; +}; \ No newline at end of file diff --git a/src/vfile/index.ts b/src/vfile/index.ts new file mode 100644 index 00000000..160df250 --- /dev/null +++ b/src/vfile/index.ts @@ -0,0 +1,3 @@ +export type { LoaderOptions } from './loader-runner'; + +export { VFile } from './vfile'; \ No newline at end of file diff --git a/src/vfile/loader-runner/LoaderClass.ts b/src/vfile/loader-runner/LoaderClass.ts new file mode 100644 index 00000000..057abffc --- /dev/null +++ b/src/vfile/loader-runner/LoaderClass.ts @@ -0,0 +1,74 @@ +import type { LoaderContext } from './LoaderContext'; +import { parsePathQueryFragment } from './utils'; + +export type LoaderOptions = { + loader: string; + fragment?: string; + type?: 'module' | 'common'; + options?: string | { ident: LoaderOptions['ident'] } | null; + ident?: string; +} + +export class Loader { + // @ts-ignore + path: string; + // @ts-ignore + query: string; + // @ts-ignore + fragment: string; + options: undefined | LoaderOptions['options']; + ident: undefined | string; + normal: undefined | ((this: LoaderContext, source: string | Buffer, map: any, meta: Hash) => any) = undefined; + pitch: undefined | ((this: LoaderContext, remaining: string, previous: string, data: Record) => any) = undefined; + raw: boolean | undefined = false; + data: null | Hash = null; + type: 'module' | 'common' = 'common'; + pitchExecuted: boolean = false; + normalExecuted: boolean = false; + + constructor(loader: string | LoaderOptions) { + this.request = loader; + + if (Object.preventExtensions) { + Object.preventExtensions(this); + } + } + + get request(): string { + return this.path.replace(/#/g, '\0#') + this.query.replace(/#/g, '\0#') + this.fragment; + } + + set request(value: string | LoaderOptions) { + if (typeof value === 'string') { + const splittedRequest = parsePathQueryFragment(value); + + this.path = splittedRequest.path; + this.query = splittedRequest.query; + this.fragment = splittedRequest.fragment; + this.options = undefined; + this.ident = undefined; + } else { + if (!value.loader) { + throw new Error('request should be a string or object with loader and options (' + JSON.stringify(value) + ')'); + } + + this.path = value.loader; + this.fragment = value.fragment || ''; + this.type = value.type || 'common'; + this.options = value.options; + this.ident = value.ident; + + if (this.options === null || this.options === undefined) { + this.query = ''; + } else if (typeof this.options === 'string') { + this.query = '?' + this.options; + } else if (this.ident) { + this.query = '??' + this.ident; + } else if (typeof this.options === 'object' && this.options.ident) { + this.query = '??' + this.options.ident; + } else { + this.query = '?' + JSON.stringify(this.options); + } + } + } +} \ No newline at end of file diff --git a/src/vfile/loader-runner/LoaderContext.ts b/src/vfile/loader-runner/LoaderContext.ts new file mode 100644 index 00000000..ce703cab --- /dev/null +++ b/src/vfile/loader-runner/LoaderContext.ts @@ -0,0 +1,137 @@ +import type { Loader } from './LoaderClass'; +import { dirname } from 'path'; +import { parsePathQueryFragment } from './utils'; +import { loader, LoaderData } from './loader'; +import { MultiResultCallback } from './runLoaders'; + +function get(box: any, path: string) { + if (box && typeof box === 'object') { + return box[path]; + } +} + +export class LoaderContext { + + readonly fileDependencies: string[] = []; + + readonly missingDependencies: string[] = []; + + requestCacheable = true; + + resourcePath = ''; + + resourceQuery = ''; + + resourceFragment = ''; + + context: string; + + loaderIndex = 0; + + loaders: Loader[]; + + async: null | (() => void) = null; + + callback: null | MultiResultCallback = null; + + constructor(resource: undefined | string, loaders: LoaderData[]) { + this.resource = resource; + + this.context = dirname(this.resourcePath); + this.loaders = loaders.map(loader); + } + + get resource() { + if (this.resourcePath === undefined) { + return undefined; + } + + return [ + this.resourcePath.replace(/#/g, '\0#'), + this.resourceQuery?.replace(/#/g, '\0#') || '', + this.resourceFragment || '' + ].join(''); + } + + set resource(value) { + const splittedResource = value && parsePathQueryFragment(value); + + this.resourcePath = get(splittedResource, 'path'); + this.resourceQuery = get(splittedResource, 'query'); + this.resourceFragment = get(splittedResource, 'fragment'); + } + + get request() { + return this.loaders + .map(loader => loader.request) + .concat(this.resource || '') + .join('!'); + } + + get remainingRequest() { + if (this.loaderIndex >= this.loaders.length - 1 && !this.resource) { + return ''; + } + + return this.loaders + .slice(this.loaderIndex + 1) + .map(loader => loader.request) + .concat(this.resource || '') + .join('!'); + } + + get currentRequest() { + return this.loaders + .slice(this.loaderIndex) + .map(loader => loader.request) + .concat(this.resource || '') + .join('!'); + } + + get previousRequest() { + return this.loaders + .slice(0, this.loaderIndex) + .map(loader => loader.request) + .join('!'); + } + + get query() { + const entry = this.loaders[this.loaderIndex]; + + return entry.options && typeof entry.options === 'object' + ? entry.options + : entry.query; + } + + get data() { + return this.loaders[this.loaderIndex].data; + } + + cacheable(flag: any) { + if (flag === false) { + this.requestCacheable = false; + } + } + + addDependency(file: string) { + this.fileDependencies.push(file); + } + + addMissingDependency(context: string) { + this.missingDependencies.push(context); + } + + getDependencies() { + return this.fileDependencies.slice(); + } + + getMissingDependencies() { + return this.missingDependencies.slice(); + } + + clearDependencies() { + this.fileDependencies.length = 0; + this.missingDependencies.length = 0; + this.requestCacheable = true; + } +} \ No newline at end of file diff --git a/src/vfile/loader-runner/README.md b/src/vfile/loader-runner/README.md new file mode 100644 index 00000000..d7d7c6b2 --- /dev/null +++ b/src/vfile/loader-runner/README.md @@ -0,0 +1,9 @@ +### About this directory + +There is stored reimplemented [loader-runner](https://www.npmjs.com/package/loader-runner) with some principal changes. + +### Changes +- Abstracted from file system. Original package looks modules directly on file system. +In this version we expect, what modules already loaded im memory. +- Loader context is trimmed. Removed useless for `yfm` architecrure methods and fields (`addContextDependency` etc.) +- Cosmetic. Splitted on small files. Rewritten on TS. \ No newline at end of file diff --git a/src/vfile/loader-runner/index.ts b/src/vfile/loader-runner/index.ts new file mode 100644 index 00000000..d7c041d8 --- /dev/null +++ b/src/vfile/loader-runner/index.ts @@ -0,0 +1,7 @@ +export type { LoaderData } from './loader'; + +export type { LoaderOptions } from './LoaderClass'; + +export { runLoaders } from './runLoaders'; + +export { LoaderContext } from './LoaderContext'; \ No newline at end of file diff --git a/src/vfile/loader-runner/loader.ts b/src/vfile/loader-runner/loader.ts new file mode 100644 index 00000000..d1b9b3db --- /dev/null +++ b/src/vfile/loader-runner/loader.ts @@ -0,0 +1,48 @@ +import { Loader, LoaderOptions } from './LoaderClass'; + +class LoadingLoaderError extends Error { + constructor(message: string) { + super(message); + this.name = 'LoaderRunnerError'; + Error.captureStackTrace(this, this.constructor); + } +} + +export type LoaderData = [ LoaderOptions, Hash ]; + +export function loader(options: LoaderOptions, module: Hash): Loader +export function loader(options: LoaderData, module: any): Loader +export function loader(options: any, module: any): Loader { + if (Array.isArray(options)) { + ([ options, module ] = options); + } + + return fill(new Loader(options), module); +} + +type LoaderModule = { + default?: Loader['normal']; + pitch?: Loader['pitch']; + raw?: Loader['raw']; +}; +type Module = Extract & LoaderModule | LoaderModule; + +function fill(loader: Loader, module: Module) { + if (typeof module !== 'function' && typeof module !== 'object') { + throw new LoadingLoaderError( + 'Module \'' + loader.path + '\' is not a loader (export function or es6 module)' + ); + } + + loader.normal = typeof module === 'function' ? module : module.default; + loader.pitch = module.pitch; + loader.raw = module.raw; + + if (typeof loader.normal !== 'function' && typeof loader.pitch !== 'function') { + throw new LoadingLoaderError( + 'Module \'' + loader.path + '\' is not a loader (must have normal or pitch function)' + ); + } + + return loader; +} \ No newline at end of file diff --git a/src/vfile/loader-runner/runLoaders.ts b/src/vfile/loader-runner/runLoaders.ts new file mode 100644 index 00000000..1c27dbc5 --- /dev/null +++ b/src/vfile/loader-runner/runLoaders.ts @@ -0,0 +1,193 @@ +import type { LoaderData } from './loader'; +import { LoaderContext } from './LoaderContext'; +import { dirname } from 'path'; +import { runSyncOrAsync } from './runSyncOrAsync'; +import { pargs, utf8BufferToString, parsePathQueryFragment } from './utils'; + +export type MultiResultCallback = (error?: Error | null, ...results: R) => void; + +function convertArgs(args: any[], raw: boolean | undefined) { + if (!raw && Buffer.isBuffer(args[0])) { + args[0] = utf8BufferToString(args[0]); + } else if (raw && typeof args[0] === 'string') { + args[0] = Buffer.from(args[0], 'utf-8'); + } +} + +type LifecycleOptions = { + resourceBuffer: string | Buffer | null, + processResource: ( + context: LoaderContext, + resource: string, + callback: NodeCallback + ) => void +} + +async function iteratePitchingLoaders( + options: LifecycleOptions, + loaderContext: LoaderContext +): Promise { + // abort after last loader + if (loaderContext.loaderIndex >= loaderContext.loaders.length) { + return processResource(options, loaderContext); + } + + const currentLoaderObject = loaderContext.loaders[loaderContext.loaderIndex]; + + // iterate + if (currentLoaderObject.pitchExecuted) { + loaderContext.loaderIndex++; + return iteratePitchingLoaders(options, loaderContext); + } + + currentLoaderObject.pitchExecuted = true; + + const fn = currentLoaderObject.pitch; + if (!fn) { + return iteratePitchingLoaders(options, loaderContext); + } + + const runArgs = [ + loaderContext.remainingRequest, + loaderContext.previousRequest, + currentLoaderObject.data = {} + ]; + const args = await pargs(runSyncOrAsync, fn, loaderContext, runArgs); + const hasArg = args.some(function(value) { + return value !== undefined; + }); + + // Determine whether to continue the pitching process based on + // argument values (as opposed to argument presence) in order + // to support synchronous and asynchronous usages. + if (hasArg) { + loaderContext.loaderIndex--; + + return iterateNormalLoaders(options, loaderContext, args as NormalLoaderResults); + } else { + return iteratePitchingLoaders(options, loaderContext); + } +} + +async function processResource( + options: LifecycleOptions, + loaderContext: LoaderContext +): Promise { + // set loader index to last loader + loaderContext.loaderIndex = loaderContext.loaders.length - 1; + + const resourcePath = loaderContext.resourcePath; + if (resourcePath) { + const args = await pargs(options.processResource, loaderContext, resourcePath) as [ string | Buffer ]; + + options.resourceBuffer = args[0]; + + return iterateNormalLoaders(options, loaderContext, args); + } else { + // @ts-ignore + return iterateNormalLoaders(options, loaderContext, [ null ]); + } +} + +type NormalLoaderResults = + [ string | Buffer ] | + [ string | Buffer, SourceMap ] | + [ string | Buffer, SourceMap | undefined, any ]; + +async function iterateNormalLoaders( + options: LifecycleOptions, + loaderContext: LoaderContext, + args: NormalLoaderResults +): Promise { + if (loaderContext.loaderIndex < 0) { + return args; + } + + const currentLoaderObject = loaderContext.loaders[loaderContext.loaderIndex]; + + // iterate + if (currentLoaderObject.normalExecuted) { + loaderContext.loaderIndex--; + return iterateNormalLoaders(options, loaderContext, args); + } + + const fn = currentLoaderObject.normal; + currentLoaderObject.normalExecuted = true; + + if (!fn) { + return iterateNormalLoaders(options, loaderContext, args); + } + + convertArgs(args, currentLoaderObject.raw); + + const results = await pargs(runSyncOrAsync, fn, loaderContext, args) as NormalLoaderResults; + + return iterateNormalLoaders( + options, + loaderContext, + results + ); +} + +export function getContext(resource: string) { + const path = parsePathQueryFragment(resource).path; + + return dirname(path); +} + +export type Options = { + resource?: string; + loaders?: LoaderData[]; + context?: Record; + readResource: ( + path: string, + callback: NodeCallback + ) => void; + processResource?: LifecycleOptions['processResource'] +} + +function fromContext(context: LoaderContext) { + return { + cacheable: context.requestCacheable, + fileDependencies: context.getDependencies(), + missingDependencies: context.getMissingDependencies() + }; +} + +type Result = ReturnType & { + result?: NormalLoaderResults; +}; + +export async function runLoaders(options: Options): Promise<[ Error | null, Result ]> { + const { + resource = '', + loaders = [], + context: extras = {}, + readResource, + processResource = (context, resource, callback) => { + context.addDependency(resource); + readResource(resource, callback); + } + } = options; + + const context = Object.assign(extras, new LoaderContext(resource, loaders)) as LoaderContext; + + // finish loader context + if (Object.preventExtensions) { + Object.preventExtensions(context); + } + + try { + const results = await iteratePitchingLoaders({ + resourceBuffer: null, + processResource + }, context); + + return [ null, { + ...fromContext(context), + result: results, + } ]; + } catch (error) { + return [ error as Error, fromContext(context) ]; + } +} diff --git a/src/vfile/loader-runner/runSyncOrAsync.ts b/src/vfile/loader-runner/runSyncOrAsync.ts new file mode 100644 index 00000000..493e236e --- /dev/null +++ b/src/vfile/loader-runner/runSyncOrAsync.ts @@ -0,0 +1,88 @@ +import type { LoaderContext } from './LoaderContext'; +import type { MultiResultCallback } from './runLoaders'; + +export function runSyncOrAsync( + fn: (this: LoaderContext, ...args: any[]) => any, + context: LoaderContext, + args: any[], + callback: MultiResultCallback +): void { + let isSync = true; + let isDone = false; + let isError = false; // internal error + let reportedError = false; + + context.async = function async() { + if (isDone) { + if (reportedError) { + return; + } + + throw new Error('async(): The callback was already called.'); + } + + isSync = false; + + return innerCallback; + }; + + const innerCallback = context.callback = function(...args) { + if (isDone) { + if (reportedError) { + return; + } + + throw new Error('callback(): The callback was already called.'); + } + + isDone = true; + isSync = false; + + try { + callback.apply(null, args); + } catch (e) { + isError = true; + throw e; + } + }; + + try { + const result = (function LOADER_EXECUTION() { + return fn.apply(context, args); + }()); + + if (isSync) { + isDone = true; + + if (result === undefined) { + return callback(); + } + + if (result && typeof result === 'object' && typeof result.then === 'function') { + return result.then(function(r: string | Buffer) { + callback(null, r); + }, callback); + } + + return callback(null, result); + } + } catch (e) { + if (isError) { + throw e; + } + + if (isDone) { + // loader is already "done", so we cannot use the callback function + // for better debugging we print the error on the console + // @ts-ignore + console.error(e && typeof e === 'object' && 'stack' in e ? e.stack : e); + + return; + } + + isDone = true; + reportedError = true; + callback(e as Error); + } + +} \ No newline at end of file diff --git a/src/vfile/loader-runner/utils.ts b/src/vfile/loader-runner/utils.ts new file mode 100644 index 00000000..f2e8db81 --- /dev/null +++ b/src/vfile/loader-runner/utils.ts @@ -0,0 +1,39 @@ +type Head = T extends [ ...infer Head, any ] ? Head : never; + +type HeadParams = Head>; + +export function pargs( + action: A, + ...args: HeadParams +): Promise { + return new Promise((resolve, reject) => { + action(...args, function(err?: null | Error, ...results: any[]) { + if (err) { + reject(err); + } else { + resolve(results); + } + }); + }); +} + +export function utf8BufferToString(buf: Buffer) { + const str = buf.toString('utf-8'); + if (str.charCodeAt(0) === 0xFEFF) { + return str.slice(1); + } else { + return str; + } +} + +const PATH_QUERY_FRAGMENT_REGEXP = /^((?:\0.|[^?#\0])*)(\?(?:\0.|[^#\0])*)?(#.*)?$/; + +export function parsePathQueryFragment(str: string) { + const match = PATH_QUERY_FRAGMENT_REGEXP.exec(str) as RegExpExecArray; + + return { + path: match[1].replace(/\0(.)/g, '$1'), + query: match[2] ? match[2].replace(/\0(.)/g, '$1') : '', + fragment: match[3] || '' + }; +} \ No newline at end of file diff --git a/src/vfile/vfile/ExtendedContext.ts b/src/vfile/vfile/ExtendedContext.ts new file mode 100644 index 00000000..27f59c3a --- /dev/null +++ b/src/vfile/vfile/ExtendedContext.ts @@ -0,0 +1,183 @@ +import type { NormalModule, MinimalFileSystem, VFile } from '.'; + +import { resolve } from 'node:path'; +import { URLSearchParams } from 'node:url'; +import { LoaderContext, LoaderData } from '../loader-runner'; + +export interface Position { + /** + * Place of the first character of the parsed source region. + */ + start: Point; + + /** + * Place of the first character after the parsed source region. + */ + end: Point; + + /** + * Start column at each index (plus start line) in the source region, + * for elements that span multiple lines. + */ + indent?: number[] | undefined; +} + +/** + * One place in a source file. + */ +export interface Point { + /** + * Line in a source file (1-indexed integer). + */ + line: number; + + /** + * Column in a source file (1-indexed integer). + */ + column: number; + /** + * Character in a source file (0-indexed integer). + */ + offset?: number | undefined; +} + +function getCurrentLoader(loaderContext: LoaderContext, index = loaderContext.loaderIndex) { + if ( + loaderContext.loaders && + loaderContext.loaders.length && + index < loaderContext.loaders.length && + index >= 0 && + loaderContext.loaders[index] + ) { + return loaderContext.loaders[index]; + } + + return null; +} + +export class ExtendedContext extends LoaderContext { + + readonly fs: MinimalFileSystem; + + readonly rootContext: string; + + readonly _module: NormalModule; + + constructor( + private readonly file: VFile, + loaders: LoaderData[], + ) { + super(resolve(file.cwd, file.request), loaders); + + this.rootContext = file.cwd; + this.fs = file.fs; + + this._module = file.module; + } + + getOptions(): Hash { + const loader = getCurrentLoader(this); + + if (!loader) { + return {}; + } + + let options: Hash | string = loader.options as any; + + if (typeof options === 'string') { + if (options.startsWith('{') && options.endsWith('}')) { + try { + options = JSON.parse(options); + } catch (e) { + // @ts-ignore + throw new Error(`Cannot parse string options: ${ e.message }`); + } + } else { + const query = new URLSearchParams(options); + + options = {}; + for (const [ key, value ] of query) { + options[key] = value; + } + } + } + + if (options === null || options === undefined) { + options = {}; + } + + return options as Hash; + } + + emitWarning(warning: string, place?: Position | Point, origin?: string): void { + this.file.info(warning, place, origin); + } + + emitError(error: string, place?: Position | Point, origin?: string): void { + this.file.fail(error, place, origin); + } + + emitFile(name: string, content: string | Buffer, _sourceMap: any, _assetInfo: any): void { + this.file.assets.set(name, { name, content }); + } + + loadModule( + request: string, + callback: (error: Error | null, source?: string | Buffer, map?: SourceMap | undefined, module?: NormalModule) => void + ): void { + (async () => { + const file = this.file.from({ + request: resolve(this.context, request), + cwd: this.file.cwd, + issuer: this.file + }); + + if (isCircular(file)) { + throw new ReferenceError(`Circular reference! Stack: \n\t->${ refStack(file).join('\n\t-> ') }`); + } + + file.contents = await this.fs.readFile(file.path); + + try { + const result = await file.process(); + const { fileDependencies, missingDependencies } = file.meta; + + for (const dep of fileDependencies as string[]) { + this.addDependency(dep); + } + + for (const dep of missingDependencies as string[]) { + this.addMissingDependency(dep); + } + + callback(null, result.toString(), file.map, file.module); + } catch (error) { + return callback(error as Error); + } + })().catch(callback); + } +} + +function isCircular(issuer: VFile | undefined): boolean { + const paths = new Set(); + while (issuer) { + if (paths.has(issuer.path)) { + return true; + } + + paths.add(issuer.path); + issuer = issuer.issuer; + } + + return false; +} + +function refStack(issuer: VFile | undefined): string[] { + const stack = []; + while (issuer) { + stack.unshift(issuer.request); + issuer = issuer.issuer; + } + + return stack; +} \ No newline at end of file diff --git a/src/vfile/vfile/index.ts b/src/vfile/vfile/index.ts new file mode 100644 index 00000000..fbbea4f3 --- /dev/null +++ b/src/vfile/vfile/index.ts @@ -0,0 +1,149 @@ +import type { LoaderData, LoaderOptions } from '../loader-runner'; + +import {resolve} from 'node:path'; +import {readFile, stat} from 'node:fs/promises'; +import vfile, { VFile as BaseVFile, VFileOptions as VFileBaseOptions } from 'vfile'; + +import { parsePathQueryFragment } from '../loader-runner/utils'; +import { ExtendedContext } from './ExtendedContext'; +import { resolveLoaders } from './resolveLoaders'; +import { runLoaders } from '../loader-runner'; + +interface VFileConstructor { + new(...args: Parameters): BaseVFile; +} + +export interface MinimalFileSystem { + readFile: typeof readFile; + stat: typeof stat; +} + +export interface VFileOptions extends VFileBaseOptions { + request: string; + issuer?: VFile; + fs?: MinimalFileSystem; + loaders?: (string | LoaderOptions)[]; +} + +export class VFile extends (vfile as (BaseVFile & VFileConstructor)) { + + readonly issuer: VFile | undefined; + + readonly fs = {readFile, stat}; + + readonly module = new NormalModule(); + + readonly loaders: (string | LoaderOptions)[] = []; + + readonly assets: Map = new Map(); + + readonly meta: Hash = {}; + + readonly path: string = ''; + + readonly query: string = ''; + + readonly fragment: string = ''; + + map: SourceMap | undefined; + + private processed: T | null = null; + + private resolvedLoaders: LoaderData[] | null = null; + + constructor(options: VFileOptions) { + // eslint-disable-next-line constructor-super + super({ ...options, ...parsePathQueryFragment(options.request) }); + + this.issuer = options.issuer; + + if ('request' in options) { + this.request = options.request; + } + + if (typeof options === 'object' && 'fs' in options) { + this.fs = options.fs || this.fs; + } + + if (typeof options === 'object' && 'loaders' in options) { + this.loaders = options.loaders || this.loaders; + } + } + + get request(): string { + return (this.path as string).replace(/#/g, '\0#') + this.query.replace(/#/g, '\0#') + this.fragment; + } + + set request(value: string) { + const { path, query, fragment } = parsePathQueryFragment(value); + + Object.assign(this, { path, query, fragment }); + } + + from(options: VFileOptions): VFile { + const file = new VFile(options); + + if (!options.loaders) { + const loaders = Object.getOwnPropertyDescriptor(this, 'loaders') as PropertyDescriptor; + Object.defineProperty(file, 'loaders', loaders); + } + + if (!options.fs) { + const fs = Object.getOwnPropertyDescriptor(this, 'fs') as PropertyDescriptor; + Object.defineProperty(file, 'fs', fs); + } + + return file; + } + + async load() { + this.contents = this.contents || await this.fs.readFile(this.path, 'utf8'); + + return this.contents; + } + + async process(): Promise { + if (this.processed !== null) { + return this.processed; + } + + const content = await this.load(); + const loaders = this.resolvedLoaders = this.resolvedLoaders || await resolveLoaders(this.loaders); + const context = new ExtendedContext(this, loaders); + + const [ error, result ] = await runLoaders({ + resource: resolve(this.cwd, this.request), + + loaders: loaders, + + context: context, + + readResource(_path, callback) { + callback(null, content as string); + } + }); + + this.meta.fileDependencies = [...new Set(result.fileDependencies)]; + this.meta.missingDependencies = [...new Set(result.missingDependencies)]; + + if (result.result) { + const [ source, map, meta ] = result.result; + + if (typeof meta === 'object') { + Object.keys(meta).forEach(key => { + this.meta[key] = meta[key]; + }); + } + + this.map = map; + this.processed = source as T; + + return this.processed; + } else { + throw error; + } + } +} + +export class NormalModule { +} diff --git a/src/vfile/vfile/resolveLoaders.ts b/src/vfile/vfile/resolveLoaders.ts new file mode 100644 index 00000000..8683c1ce --- /dev/null +++ b/src/vfile/vfile/resolveLoaders.ts @@ -0,0 +1,49 @@ +import type { LoaderData, LoaderOptions } from '../core'; +import { pathToFileURL } from 'url'; + +export async function resolveLoaders(loaders: (LoaderOptions | string)[]): Promise { + const result:LoaderData[] = []; + + for (const loader of loaders) { + const loaderType = typeof loader === 'object' && loader.type || 'common'; + const loaderPath = typeof loader === 'object' ? loader.loader : loader; + const loaderOptions = typeof loader === 'object' ? {...loader} : {}; + + result.push([await include(loaderPath, loaderType), loaderOptions]); + } + + return result; +} + +async function include(loader: string, type: string): Promise { + if (type === 'module') { + const loaderUrl = pathToFileURL(loader).toString(); + + return eval(`import(${ JSON.stringify(loaderUrl) })`); + } else { + try { + return require(loader); + } catch (error) { + // it is possible for node to choke on a require if the FD descriptor + // limit has been reached. give it a chance to recover. + // @ts-ignore + if (error instanceof Error && error.code === 'EMFILE') { + return await immediate(() => require(loader)); + } else { + throw error; + } + } + } +} + +function immediate(action: () => (any | Promise)): Promise> { + return new Promise((resolve, reject) => { + setImmediate(async () => { + try { + resolve(await action()); + } catch (error) { + reject(error); + } + }); + }); +} \ No newline at end of file