From 431236f55ddfc9d1f23cd36b67e9ad5d2113ee05 Mon Sep 17 00:00:00 2001 From: David Heidrich Date: Thu, 31 Aug 2023 18:03:44 +0200 Subject: [PATCH] feat: switch to eslint, adjusted types to be more conformant to the current logic, cleanup, added better type support for batched queries --- .eslintrc | 26 + package.json | 20 +- src/__tests__/defaults.tsx | 2 +- src/__tests__/index.tsx | 25 +- src/__tests__/skip.ts | 4 +- src/__tests__/static-render.tsx | 1 + src/__tests__/static.ts | 24 +- src/examples/defaults.tsx | 2 +- src/examples/index.tsx | 2 +- src/index.tsx | 3 +- src/lib/__tests__/serializers.ts | 1 - src/lib/__tests__/utils.ts | 1 - src/lib/adapters/historyjs/index.tsx | 19 +- src/lib/adapters/nextjs-app-router/index.tsx | 14 +- src/lib/adapters/nextjs/index.tsx | 21 +- src/lib/adapters/static/index.tsx | 11 +- src/lib/middleware.ts | 301 +++--- src/lib/serializers.ts | 7 +- src/lib/store.ts | 82 +- src/lib/utils.ts | 114 +-- tslint.json | 33 - yarn.lock | 942 +++++++++++++++++-- 22 files changed, 1270 insertions(+), 385 deletions(-) create mode 100644 .eslintrc delete mode 100644 tslint.json diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..1cfd3d8e --- /dev/null +++ b/.eslintrc @@ -0,0 +1,26 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "extends": [ + "eslint:recommended", + "plugin:import/recommended", + "plugin:@typescript-eslint/recommended", + "prettier", + "plugin:react-hooks/recommended", + "plugin:react-perf/recommended" + ], + "env": { + "node": true, + "es6": true + }, + "settings": { + "import/parsers": { + "@typescript-eslint/parser": [ + ".ts" + ] + }, + "import/resolver": { + "typescript": {} + } + } +} diff --git a/package.json b/package.json index c12c7955..9ad89899 100644 --- a/package.json +++ b/package.json @@ -91,9 +91,9 @@ "build:cjs": "tsc -p tsconfig.cjs.json", "fix": "run-s fix:*", "fix:prettier": "prettier \"**/*.{ts,tsx,md}\" --write", - "fix:tslint": "tslint --fix --project .", + "fix:eslint": "eslint src --fix", "test": "run-s build test:*", - "test:lint": "tslint --project . && prettier \"src/**/*.{ts,tsx}\" --list-different", + "test:lint": "eslint src && prettier \"src/**/*.{ts,tsx}\" --list-different", "test:unit": "jest --coverage", "cov:send": "codecov", "watch": "run-s clean build:main && run-p \"build:main -- -w\" \"test:unit -- --watch\"", @@ -116,7 +116,8 @@ "next": ">=11", "react": ">=16.8", "react-dom": ">=16.8", - "zustand": ">=4.4.0" + "zustand": ">=4.4.0", + "type-fest": ">=4" }, "peerDependenciesMeta": { "next": { @@ -127,6 +128,12 @@ } }, "devDependencies": { + "eslint-plugin-import": "^2.28.1", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-react-perf": "^3.3.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-import-resolver-typescript": "^3.6.0", + "type-fest": "^4.3.1", "@babel/core": "^7.20.12", "@bitjson/npm-scripts-info": "^1.0.0", "@storybook/addon-actions": "^6.5.15", @@ -170,9 +177,10 @@ "trash-cli": "^5.0.0", "ts-jest": "^29.0.5", "ts-loader": "^9.4.2", - "tslint": "^6.1.3", - "tslint-config-prettier": "^1.18.0", - "tslint-immutable": "^6.0.1", + "eslint": "^8.48.0", + "eslint-plugin-react": "^7.33.2", + "@typescript-eslint/parser": "^6.5.0", + "@typescript-eslint/eslint-plugin": "^6.5.0", "typedoc": "^0.23.24", "typescript": "^4.9.4", "webpack": "^5.75.0", diff --git a/src/__tests__/defaults.tsx b/src/__tests__/defaults.tsx index 79521f7d..322fb3f3 100644 --- a/src/__tests__/defaults.tsx +++ b/src/__tests__/defaults.tsx @@ -1,4 +1,4 @@ -/* tslint:disable:no-expression-statement no-object-mutation */ +/* eslint-disable react-perf/jsx-no-new-function-as-prop */ import { render, cleanup, screen, act } from '@testing-library/react' import userEventImport from '@testing-library/user-event' import { createMemoryHistory } from 'history' diff --git a/src/__tests__/index.tsx b/src/__tests__/index.tsx index 446fb606..51277acf 100644 --- a/src/__tests__/index.tsx +++ b/src/__tests__/index.tsx @@ -1,10 +1,12 @@ -/* tslint:disable:no-expression-statement no-object-mutation */ +/* eslint-disable react-perf/jsx-no-new-function-as-prop */ import { render, cleanup, screen, act } from '@testing-library/react' import userEventImport from '@testing-library/user-event' import { createMemoryHistory } from 'history' import React from 'react' import { factoryParameters, pm, serializers, useBatchQuery } from '../index.js' import Geschichte from '../lib/adapters/historyjs/index.js' +import { InferNamespaceValues } from '../lib/store.js' + afterEach(cleanup) const userEvent = userEventImport.default || userEventImport @@ -23,7 +25,7 @@ describe('', () => { const { useQuery: secondNamespaceUseQuery } = factoryParameters( { - someParameter: pm('wow', serializers.string), + other: pm('wow', serializers.string), }, { someParameter: 'test' }, 'test2' @@ -35,9 +37,14 @@ describe('', () => { pushState, resetPush, } = useQuery() - const { values: secondValues } = secondNamespaceUseQuery() - // tslint:disable-next-line:readonly-keyword - const { batchPushState } = useBatchQuery<{ someParameter: string }>() + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { values: secondValues } = secondNamespaceUseQuery() // we have to use the other query so it's registered + + type FullStore = { + test: InferNamespaceValues + test2: InferNamespaceValues + } + const { batchPushState } = useBatchQuery() return ( <>

{someParameter}

@@ -51,8 +58,12 @@ describe('', () => { title="pushBatch" onClick={() => batchPushState(['test', 'test2'], (stateFirst, stateSecond) => { - stateFirst.someParameter = 'wasBatch' - stateSecond.someParameter = 'anotherOne' + if (stateFirst && stateSecond) { + stateFirst.someParameter = 'wasBatch' + if ('other' in stateSecond) { + stateSecond.other = 'anotherOne' + } + } }) } /> diff --git a/src/__tests__/skip.ts b/src/__tests__/skip.ts index b982d671..b4700943 100644 --- a/src/__tests__/skip.ts +++ b/src/__tests__/skip.ts @@ -1,10 +1,8 @@ -/* tslint:disable:no-expression-statement no-object-mutation */ - import { factoryParameters } from '../lib/store.js' import { defaultSkipValue, pm } from '../lib/utils.js' import { Serializer, serializers } from '../lib/serializers.js' -export const nullableBooleanSerializer: Serializer = { +export const nullableBooleanSerializer: Serializer = { deserialize: (value: string | null) => { if (value === '1') { return true diff --git a/src/__tests__/static-render.tsx b/src/__tests__/static-render.tsx index be625580..405d1316 100644 --- a/src/__tests__/static-render.tsx +++ b/src/__tests__/static-render.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react-perf/jsx-no-new-function-as-prop */ /* tslint:disable:no-expression-statement no-object-mutation */ import { render, cleanup, screen, act } from '@testing-library/react' diff --git a/src/__tests__/static.ts b/src/__tests__/static.ts index adb362c2..92212621 100644 --- a/src/__tests__/static.ts +++ b/src/__tests__/static.ts @@ -1,9 +1,29 @@ -/* tslint:disable:no-expression-statement no-object-mutation */ - import { factoryParameters } from '../lib/store.js' import { pm } from '../lib/utils.js' import { serializers } from '../lib/serializers.js' +describe('deep partial createQueryString', () => { + const initialValues = { + some: { + parameter: 'hello', + otherValue: 'world', + }, + } + const { createQueryString } = factoryParameters( + { + some: { + parameter: pm('foo', serializers.string), + otherValue: pm('bar', serializers.string), + }, + }, + initialValues + ) + + it('should allow deep partial values', () => { + expect(createQueryString({ some: { parameter: 'wow' } })).toEqual('foo=wow') + }) +}) + describe('static parseQueryString', () => { const initialValues = { someParameter: 'test' } const { parseQueryString } = factoryParameters( diff --git a/src/examples/defaults.tsx b/src/examples/defaults.tsx index 8a61e9b6..4ffbbf76 100644 --- a/src/examples/defaults.tsx +++ b/src/examples/defaults.tsx @@ -10,7 +10,7 @@ const defaultValues = () => ({ someParameter: 'test', }) -interface Props { +interface Props> { readonly defaultValues: T } diff --git a/src/examples/index.tsx b/src/examples/index.tsx index ebdb6e3e..d42cad86 100644 --- a/src/examples/index.tsx +++ b/src/examples/index.tsx @@ -1,4 +1,4 @@ -/* tslint:disable:no-expression-statement no-object-mutation */ +/* eslint-disable react-perf/jsx-no-new-function-as-prop */ import { createBrowserHistory } from 'history' import React, { useCallback, useState } from 'react' import { factoryParameters, pm, serializers } from '../index.js' diff --git a/src/index.tsx b/src/index.tsx index 6aa26ff3..589fe4ae 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -9,13 +9,14 @@ export { export { type StoreState } from './lib/middleware.js' export { type HistoryManagement, - useGeschichte, + createGeschichte, factoryParameters, useBatchQuery, useStore, DEFAULT_NAMESPACE, StoreContext, type Config, + type InferNamespaceValues, } from './lib/store.js' export { pm, diff --git a/src/lib/__tests__/serializers.ts b/src/lib/__tests__/serializers.ts index eb14ee9d..d0934539 100644 --- a/src/lib/__tests__/serializers.ts +++ b/src/lib/__tests__/serializers.ts @@ -1,4 +1,3 @@ -/* tslint:disable:no-expression-statement */ import { serializers } from '../serializers.js' describe('serializers', () => { diff --git a/src/lib/__tests__/utils.ts b/src/lib/__tests__/utils.ts index 94cf8b38..7039f00d 100644 --- a/src/lib/__tests__/utils.ts +++ b/src/lib/__tests__/utils.ts @@ -1,4 +1,3 @@ -/* tslint:disable:no-expression-statement */ import { Patch } from 'immer' import { serializers } from '../serializers.js' import { DEFAULT_NAMESPACE } from '../store.js' diff --git a/src/lib/adapters/historyjs/index.tsx b/src/lib/adapters/historyjs/index.tsx index 58ab4ee9..a76e21bf 100644 --- a/src/lib/adapters/historyjs/index.tsx +++ b/src/lib/adapters/historyjs/index.tsx @@ -1,4 +1,3 @@ -/* tslint:disable:no-expression-statement readonly-array */ import type { Action, History, Location } from 'history' import React, { forwardRef, @@ -7,10 +6,13 @@ import React, { useImperativeHandle, useMemo, } from 'react' -// tslint:disable-next-line:no-submodule-imports import { shallow } from 'zustand/shallow' import { StoreState } from '../../middleware.js' -import { HistoryManagement, StoreContext, useGeschichte } from '../../store.js' +import { + HistoryManagement, + StoreContext, + createGeschichte, +} from '../../store.js' import { createSearch } from '../../utils.js' export interface Props { @@ -43,7 +45,6 @@ const handleHistoryV5 = ({ } } -// tslint:disable-next-line let handler: typeof handleHistoryV4 | typeof handleHistoryV5 export const handleHistoryEvent = (action?: Action) => { @@ -82,11 +83,14 @@ export const GeschichteWithHistory = forwardRef( }, [history]) const value = useMemo( - () => useGeschichte(historyInstance), + () => createGeschichte(historyInstance), [historyInstance] ) const state = value( - ({ unregister, updateFromQuery }: StoreState) => ({ + ({ + unregister, + updateFromQuery, + }: StoreState>) => ({ unregister, updateFromQuery, }), @@ -94,6 +98,7 @@ export const GeschichteWithHistory = forwardRef( ) useEffect(() => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return history.listen((update, maybeAction) => { const { location, action } = ( @@ -103,6 +108,7 @@ export const GeschichteWithHistory = forwardRef( if ( (action === 'REPLACE' || action === 'PUSH') && location.state && + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore location.state.__g__ ) { @@ -110,6 +116,7 @@ export const GeschichteWithHistory = forwardRef( } state.updateFromQuery(location.search) }) + // eslint-disable-next-line react-hooks/exhaustive-deps }, [history, state.updateFromQuery]) useImperativeHandle( diff --git a/src/lib/adapters/nextjs-app-router/index.tsx b/src/lib/adapters/nextjs-app-router/index.tsx index b5bb31d0..3d339ffd 100644 --- a/src/lib/adapters/nextjs-app-router/index.tsx +++ b/src/lib/adapters/nextjs-app-router/index.tsx @@ -1,9 +1,11 @@ -/* tslint:disable:no-expression-statement no-object-mutation no-submodule-imports */ - 'use client' import { useSearchParams, useRouter, usePathname } from 'next/navigation.js' -import { HistoryManagement, StoreContext, useGeschichte } from '../../store.js' +import { + HistoryManagement, + StoreContext, + createGeschichte, +} from '../../store.js' import React, { memo, ReactNode, useEffect, useMemo, useRef } from 'react' import { StoreState } from '../../middleware.js' import { shallow } from 'zustand/shallow' @@ -21,7 +23,6 @@ const GeschichteForNextAppRouter = ({ children }: Props) => { const router = useRef({ push, replace, searchParams, pathname }) const historyInstance: HistoryManagement = useMemo(() => { - // tslint:disable-next-line:no-shadowed-variable const { searchParams, push, replace, pathname } = router.current return { initialSearch: () => searchParams, @@ -35,13 +36,12 @@ const GeschichteForNextAppRouter = ({ children }: Props) => { }, []) const useStore = useMemo( - () => useGeschichte(historyInstance), + () => createGeschichte(historyInstance), [historyInstance] ) const state = useStore( - // tslint:disable-next-line:no-shadowed-variable - ({ unregister, updateFromQuery }: StoreState) => ({ + ({ unregister, updateFromQuery }: StoreState>) => ({ unregister, updateFromQuery, }), diff --git a/src/lib/adapters/nextjs/index.tsx b/src/lib/adapters/nextjs/index.tsx index 488b007f..290872c0 100644 --- a/src/lib/adapters/nextjs/index.tsx +++ b/src/lib/adapters/nextjs/index.tsx @@ -1,4 +1,3 @@ -/* tslint:disable:no-expression-statement readonly-array */ import React, { FC, memo, @@ -8,13 +7,16 @@ import React, { useRef, useState, } from 'react' -// tslint:disable-next-line:no-submodule-imports import { shallow } from 'zustand/shallow' import { StoreState } from '../../middleware.js' -import { HistoryManagement, StoreContext, useGeschichte } from '../../store.js' +import { + HistoryManagement, + StoreContext, + createGeschichte, +} from '../../store.js' import type { UrlObject } from 'url' -// tslint:disable-next-line:no-submodule-imports import nextRouter, { Router as Router$ } from 'next/router.js' + const { useRouter, default: NextRouter } = nextRouter const split = (url?: string) => url?.split('?') || [] @@ -32,13 +34,11 @@ interface Props { readonly asPath: string readonly defaultPushOptions?: TransitionOptions readonly defaultReplaceOptions?: TransitionOptions - // tslint:disable-next-line:no-mixed-interface readonly routerPush?: ( url: Url, as?: UrlObject, options?: TransitionOptions ) => Promise - // tslint:disable-next-line:no-mixed-interface readonly routerReplace?: ( url: Url, as?: UrlObject, @@ -47,7 +47,7 @@ interface Props { } // FIXME: Somehow imports are messed up for nextjs when importing from modules (see https://github.com/vercel/next.js/issues/36794) -const Router = (NextRouter as any as { readonly default: Router$ }).default +const Router = (NextRouter as unknown as { readonly default: Router$ }).default const queryFromPath = (path: string) => { const [, query] = split(path) @@ -119,12 +119,11 @@ export const GeschichteForNextjs: FC = ({ }, [routerPush, routerReplace]) const useStore = useMemo( - () => useGeschichte(historyInstance), + () => createGeschichte(historyInstance), [historyInstance] ) const state = useStore( - // tslint:disable-next-line:no-shadowed-variable - ({ unregister, updateFromQuery }: StoreState) => ({ + ({ unregister, updateFromQuery }: StoreState>) => ({ unregister, updateFromQuery, }), @@ -137,11 +136,9 @@ export const GeschichteForNextjs: FC = ({ // tslint:disable-next-line lastClientSideQuery.current = window.location.href updateFromQuery(window.location.search) - // tslint:disable-next-line:no-let let skipEvent = true const routeChangeStartHandler = (path: string) => { const nextQuery = queryFromPath(path) - // tslint:disable-next-line lastClientSideQuery.current = path // skip execution for first render if (!skipEvent) { diff --git a/src/lib/adapters/static/index.tsx b/src/lib/adapters/static/index.tsx index fe9ffa11..8a0c8967 100644 --- a/src/lib/adapters/static/index.tsx +++ b/src/lib/adapters/static/index.tsx @@ -1,5 +1,9 @@ import React, { memo, useMemo } from 'react' -import { HistoryManagement, StoreContext, useGeschichte } from '../../store.js' +import { + HistoryManagement, + StoreContext, + createGeschichte, +} from '../../store.js' interface Props { readonly search?: string @@ -21,7 +25,10 @@ const StaticGeschichteProvider = ({ } }, [search]) - const value = useMemo(() => useGeschichte(historyInstance), [historyInstance]) + const value = useMemo( + () => createGeschichte(historyInstance), + [historyInstance] + ) return {children} } diff --git a/src/lib/middleware.ts b/src/lib/middleware.ts index ad2bec93..9da740f6 100644 --- a/src/lib/middleware.ts +++ b/src/lib/middleware.ts @@ -1,7 +1,5 @@ -/* tslint:disable:no-expression-statement readonly-keyword no-mixed-interface no-object-mutation readonly-array */ -import { Patch, produceWithPatches } from 'immer' +import { Immutable, Patch, produceWithPatches } from 'immer' import { StoreApi } from 'zustand' -// tslint:disable-next-line:no-submodule-imports import { shallow } from 'zustand/shallow' import { Config, @@ -21,6 +19,7 @@ export enum HistoryEventType { } export interface GenericObject { + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any } @@ -46,9 +45,10 @@ export type ReplaceStateFunction = ( routerOptions?: RouterOptions ) => Promise -export interface InnerNamespace { - [ns: string]: NamespaceValues -} +export type InnerNamespace> = Record< + string, + NamespaceValues +> interface RegistryPayload { unsubscribe: () => boolean @@ -56,88 +56,111 @@ interface RegistryPayload { initialValues: ValueState } -export interface StoreState { +export interface StoreState< + ThisValue extends Record, + Namespaces extends InnerNamespace = InnerNamespace +> { readonly updateFromQuery: (query: string | URLSearchParams) => void - readonly batchReplaceState: ( - ns: readonly string[], - fn: (...valueState: ValueState[]) => void, + readonly batchReplaceState: ( + ns: Keys[], + fn: (...args: Namespaces[Keys]['values'][]) => void, routerOptions?: RouterOptions ) => Promise - readonly batchPushState: ( - ns: readonly string[], - fn: (...valueState: ValueState[]) => void, + readonly batchPushState: ( + ns: Keys[], + fn: (...args: (Namespaces[Keys]['values'] | undefined)[]) => void, routerOptions?: RouterOptions ) => Promise - namespaces: InnerNamespace - readonly pushState: PushStateFunction - readonly replaceState: ReplaceStateFunction + namespaces: Namespaces + readonly pushState: PushStateFunction + readonly replaceState: ReplaceStateFunction< + Namespaces[keyof Namespaces]['values'] + > /** registers a new namespace */ - readonly register: ( + readonly register: ( config: Config, mappedConfig: MappedConfig, - ns: string, - initialValues: ValueState, + ns: N, + initialValues: Namespaces[N]['values'], query: Record, - values: ValueState - ) => RegistryPayload + values: Namespaces[N]['values'] + ) => RegistryPayload /** will delete all namespaces and remove the history listener */ readonly unregister: () => void readonly resetPush: (ns: string, routerOptions?: RouterOptions) => void readonly resetReplace: (ns: string, routerOptions?: RouterOptions) => void - readonly initialQueries: () => object + readonly initialQueries: () => Record } -type NamespaceProducerFunction = ( - state: NamespaceValues -) => void -type InnerNamespaceProducerFunction = ( - state: InnerNamespace -) => InnerNamespace | void +type NamespaceProducerFunction< + V extends Record, + T extends InnerNamespace +> = (state: T[keyof T]) => void +type InnerNamespaceProducerFunction< + V extends Record, + T extends InnerNamespace +> = (state: T) => T | void -export type NamespaceProducer = ( - stateProducer: NamespaceProducerFunction, +export type NamespaceProducer< + V extends Record, + T extends InnerNamespace +> = ( + stateProducer: NamespaceProducerFunction, eventType: HistoryEventType, - ns?: string, + ns?: keyof T, routerOptions?: RouterOptions ) => Promise -export type GenericConverter = ( - stateProducer: InnerNamespaceProducerFunction, +export type GenericConverter< + V extends Record, + T extends InnerNamespace +> = ( + stateProducer: InnerNamespaceProducerFunction, eventType: HistoryEventType, - ns?: string, + ns?: keyof T, routerOptions?: RouterOptions ) => Promise -export type ImmerProducer = ( - stateMapper: (changes: Patch[], values: StoreState) => StoreState, - fn: NamespaceProducerFunction & InnerNamespaceProducerFunction, +export type ImmerProducer< + V extends Record, + T extends InnerNamespace +> = ( + stateMapper: (changes: Patch[], values: StoreState) => StoreState, + fn: NamespaceProducerFunction & InnerNamespaceProducerFunction, eventType: HistoryEventType, - ns?: string + ns?: keyof T ) => void -export declare type StateCreator = ( - set: NamespaceProducer & GenericConverter, - get: StoreApi>['getState'], - api: StoreApi> -) => StoreState +export declare type StateCreator< + V extends Record, + T extends InnerNamespace +> = ( + set: NamespaceProducer & GenericConverter, + get: StoreApi>['getState'], + api: StoreApi> +) => StoreState export const historyManagement = - (historyInstance: HistoryManagement) => - (apply: StateCreator) => + , T extends InnerNamespace>( + historyInstance: HistoryManagement + ) => + (apply: StateCreator) => ( - set: ImmerProducer, - get: StoreApi>['getState'], - api: StoreApi> + set: ImmerProducer, + get: StoreApi>['getState'], + api: StoreApi> ) => apply( ( - fn: NamespaceProducerFunction | InnerNamespaceProducerFunction, + fn: + | NamespaceProducerFunction + | InnerNamespaceProducerFunction, type: HistoryEventType, - ns?: string, + ns?: keyof T, options?: RouterOptions ) => { return new Promise((resolve, reject) => { set( - (changes: Patch[], values: StoreState) => { + (changes: Patch[], values: StoreState) => { if (changes.length === 0) { resolve(null) return values @@ -145,7 +168,7 @@ export const historyManagement = if (type !== HistoryEventType.REGISTER) { // if namespace is not given, calculate what namespaces are affected const affectedNamespaces: string[] = ns - ? [ns] + ? [ns as string] : changes.reduce((next: string[], change: Patch) => { const { path: [, namespace], @@ -157,23 +180,24 @@ export const historyManagement = return next }, []) - const uniqueQueries: { - [key: string]: any - } = affectedNamespaces.reduce((next, thisNs) => { - const { config, query: currentQuery } = - get().namespaces[thisNs] - return { - ...next, - [thisNs]: applyDiffWithCreateQueriesFromPatch( - config, - thisNs, - currentQuery, - changes, - values.namespaces[thisNs].values, - values.namespaces[thisNs].initialValues - ), - } - }, {}) + const uniqueQueries = affectedNamespaces.reduce( + (next, thisNs) => { + const { config, query: currentQuery } = + get().namespaces[thisNs] + return { + ...next, + [thisNs]: applyDiffWithCreateQueriesFromPatch( + config, + thisNs, + currentQuery, + changes, + values.namespaces[thisNs].values, + values.namespaces[thisNs].initialValues + ), + } + }, + {} as Record> + ) const method = type === HistoryEventType.PUSH ? 'push' : 'replace' @@ -210,26 +234,23 @@ export const historyManagement = ...values, namespaces: { ...values.namespaces, - ...affectedNamespaces.reduce( - (next: any, thisNs: string) => { - return { - ...next, - [thisNs]: { - ...values.namespaces[thisNs], - query: uniqueQueries[thisNs], - }, - } - }, - {} - ), + ...affectedNamespaces.reduce((next, thisNs: string) => { + return { + ...next, + [thisNs]: { + ...values.namespaces[thisNs], + query: uniqueQueries[thisNs], + }, + } + }, {}), }, } } resolve(null) return values }, - fn as NamespaceProducerFunction & - InnerNamespaceProducerFunction, + fn as NamespaceProducerFunction & + InnerNamespaceProducerFunction, type, ns ) @@ -245,11 +266,11 @@ export const historyManagement = * the whole state. Initializes the namespace if it does not exist yet */ const namespaceProducer = - ( - fn: NamespaceProducerFunction & InnerNamespaceProducerFunction, - ns?: string + , T extends InnerNamespace>( + fn: NamespaceProducerFunction & InnerNamespaceProducerFunction, + ns?: keyof T ) => - (state: StoreState) => { + (state: StoreState) => { if (!ns) { const result = fn(state.namespaces) // if no namespaces is given, we support return values @@ -262,16 +283,19 @@ const namespaceProducer = fn(state.namespaces[ns]) return } - const next = {} + const next = {} as T[keyof T] fn(next) - state.namespaces[ns] = next as NamespaceValues + state.namespaces[ns] = next as T[keyof T] } -export type ImmerStateCreator = ( - fn: ImmerProducer, - get: StoreApi>['getState'], - api: StoreApi> -) => StoreState +export type ImmerStateCreator< + V extends Record, + T extends InnerNamespace +> = ( + fn: ImmerProducer, + get: StoreApi>['getState'], + api: StoreApi> +) => StoreState export type SetImmerState = ( stateProducer: (state: T) => T, @@ -279,20 +303,21 @@ export type SetImmerState = ( ) => void export const immerWithPatches = - (config: ImmerStateCreator) => + , T extends InnerNamespace>( + config: ImmerStateCreator + ) => ( - set: SetImmerState>, - get: StoreApi>['getState'], - api: StoreApi> + set: SetImmerState>, + get: StoreApi>['getState'], + api: StoreApi> ) => config( - (valueMapper, fn, type: HistoryEventType, ns?: string) => { + (valueMapper, fn, type: HistoryEventType, ns?: keyof T) => { return set((currentState) => { const [nextValues, changes] = produceWithPatches( namespaceProducer(fn, ns) - // FIXME: Not sure why this is not working properly with the types - )(currentState as any) - return valueMapper(changes, nextValues as StoreState) + )(currentState as Immutable>) + return valueMapper(changes, nextValues) }, `action_${HistoryEventType[type]}`) }, get, @@ -305,12 +330,13 @@ const parseSearchString = (search: string | URLSearchParams) => : Object.fromEntries(search.entries()) export const converter = - (historyInstance: HistoryManagement) => + , T extends InnerNamespace>( + historyInstance: HistoryManagement + ) => ( - set: NamespaceProducer & GenericConverter, - get: StoreApi>['getState'], - api: StoreApi> - ): StoreState => { + set: NamespaceProducer & GenericConverter, + get: StoreApi>['getState'] + ): StoreState => { const updateFromQuery = (search: string | URLSearchParams) => { const nextQueries = parseSearchString(search) const namespaces = get().namespaces @@ -323,14 +349,14 @@ export const converter = outerState.mappedConfig, nextQueries, ns, - {}, + {} as V, outerState.initialValues, false ) // We might have already the correct state applied that match the query parameters if (!shallow(get().namespaces[ns].query, thisNextQueries)) { set( - (state: NamespaceValues) => { + (state) => { state.query = applyFlatConfigToState( state.mappedConfig, nextQueries, @@ -353,22 +379,20 @@ export const converter = routerOptions?: RouterOptions ) => set( - (state: NamespaceValues) => - void (state.values = state.initialValues), + (state) => void (state.values = state.initialValues), event, ns, routerOptions ) - return { /** batch pushes the given namespaces */ - batchPushState: ( - ns: readonly string[], - fn: (...valueState: T[]) => void, - routerOptions + batchPushState: ( + ns: readonly Keys[], + fn: (...valueStateA: T[Keys]['values'][]) => void, + routerOptions?: RouterOptions ) => { return set( - (state: InnerNamespace) => + (state: T) => void fn(...ns.map((thisNs) => (state[thisNs] || {}).values)), HistoryEventType.PUSH, undefined, @@ -376,13 +400,13 @@ export const converter = ) }, /** batch replaces the given namespaces */ - batchReplaceState: ( - ns: readonly string[], - fn: (...valueState: T[]) => void, - routerOptions + batchReplaceState: ( + ns: readonly Keys[], + fn: (...valueStateA: T[Keys]['values'][]) => void, + routerOptions?: RouterOptions ) => { return set( - (state: InnerNamespace) => + (state: T) => void fn(...ns.map((thisNs) => (state[thisNs] || {}).values)), HistoryEventType.REPLACE, undefined, @@ -392,23 +416,27 @@ export const converter = /** the initial queries when the script got executed first (usually on page load). */ initialQueries: () => parseSearchString(historyInstance.initialSearch()), /** here we store all data and configurations for the different namespaces */ - namespaces: {}, + namespaces: {} as T, /** pushes a new state for a given namespace, (will use history.pushState) */ - pushState: (ns: string, fn: (values: T) => void, routerOptions) => - (set as NamespaceProducer)( + pushState: ( + ns: string, + fn: (values: T[keyof T]['values']) => void, + routerOptions + ) => + set( (state) => fn(state.values), HistoryEventType.PUSH, ns, routerOptions ), /** registers a new namespace and initializes it's configuration */ - register: ( + register: ( config: Config, mappedConfig: MappedConfig, - ns: string, - initialValues: T, + ns: N, + initialValues: T[N]['values'], query: Record, - values: T + values: T[N]['values'] ) => { const current = get().namespaces[ns] const defaultsEqual = current?.initialValues === initialValues @@ -421,7 +449,7 @@ export const converter = state.query = applyFlatConfigToState( state.mappedConfig, parseSearchString(historyInstance.initialSearch()), - ns, + ns as string, state.values, initialValues ) @@ -441,14 +469,13 @@ export const converter = (state) => { state.subscribers = 1 state.unsubscribe = () => { - ;(set as GenericConverter)((thisState: InnerNamespace) => { + ;(set as GenericConverter)((thisState) => { // it's possible that the state namespace has been cleared by the provider if (!thisState[ns]) { return } thisState[ns].subscribers = thisState[ns].subscribers - 1 if (thisState[ns].subscribers === 0) { - // tslint:disable-next-line:no-delete delete thisState[ns] } }, HistoryEventType.REGISTER) @@ -469,8 +496,12 @@ export const converter = values, } }, - replaceState: (ns: string, fn: (values: T) => void, routerOptions) => - (set as NamespaceProducer)( + replaceState: ( + ns: string, + fn: (values: T[keyof T]['values']) => void, + routerOptions + ) => + set( (state) => fn(state.values), HistoryEventType.REPLACE, ns, @@ -482,7 +513,7 @@ export const converter = reset(ns, HistoryEventType.REPLACE, routerOptions), /** cleans up this instance */ unregister: () => { - ;(set as GenericConverter)(() => { + set(() => { // return a new object for namespaces return {} }, HistoryEventType.REGISTER) diff --git a/src/lib/serializers.ts b/src/lib/serializers.ts index 491bec9f..18f64a69 100644 --- a/src/lib/serializers.ts +++ b/src/lib/serializers.ts @@ -1,9 +1,10 @@ -export interface Serializer { +export interface Serializer { readonly deserialize: (value: string | null) => V | undefined | null readonly serialize: (value?: V) => string | undefined | null } -const join = (value: readonly any[], separator: string) => value.join(separator) +const join = (value: readonly unknown[], separator: string) => + value.join(separator) const split = (value: string | null, separator: string) => value?.split(separator).filter((str) => str.trim() !== '') || [] @@ -75,7 +76,7 @@ const dateSerializer = ( value?.toLocaleDateString(locale, { timeZone }), }) -const booleanSerializer: Serializer = { +const booleanSerializer: Serializer = { deserialize: (value: string | null): boolean => value === '1', serialize: (value?: boolean): string => (value ? '1' : '0'), } diff --git a/src/lib/store.ts b/src/lib/store.ts index dac70db7..87c2ac94 100644 --- a/src/lib/store.ts +++ b/src/lib/store.ts @@ -1,4 +1,3 @@ -/* tslint:disable:no-expression-statement readonly-array no-shadowed-variable */ import { Draft, enablePatches, produce } from 'immer' import { createContext, @@ -9,17 +8,16 @@ import { useState, } from 'react' import { Mutate, StateCreator, StoreApi, UseBoundStore } from 'zustand' -// tslint:disable-next-line:no-submodule-imports import { devtools, subscribeWithSelector } from 'zustand/middleware' -// tslint:disable-next-line:no-submodule-imports import { createWithEqualityFn } from 'zustand/traditional' -// tslint:disable-next-line:no-submodule-imports import { shallow } from 'zustand/shallow' import { converter, historyManagement, immerWithPatches, + InnerNamespace, + NamespaceValues, StoreState, } from './middleware.js' import { Serializer } from './serializers.js' @@ -28,18 +26,20 @@ import { createQueryObject, flattenConfig, } from './utils.js' +import type { PartialDeep } from 'type-fest' enablePatches() export const DEFAULT_NAMESPACE = 'default' -export const StoreContext = createContext> | null>( - null -) +export const StoreContext = createContext +> | null>(null) +// eslint-disable-next-line @typescript-eslint/no-explicit-any export interface Parameter { readonly name: string readonly serializer: Serializer - // tslint:disable-next-line:no-mixed-interface readonly skipValue: (value?: V, initialValue?: V) => boolean } @@ -55,7 +55,7 @@ export interface MappedConfig { readonly [queryParameter: string]: MappedParameter } -export type RouterOptions = Record +export type RouterOptions = Record export interface HistoryManagement { /** the initial search string (e.g. ?query=test), contains the questionsmark */ @@ -70,15 +70,18 @@ export interface HistoryManagement { ) => Promise } -export const useGeschichte = ( +export const createGeschichte = < + T extends Record, + N extends InnerNamespace +>( historyInstance: HistoryManagement ) => { - const thisStore = converter(historyInstance) - const storeWithHistory = historyManagement(historyInstance)(thisStore) + const thisStore = converter(historyInstance) + const storeWithHistory = historyManagement(historyInstance)(thisStore) const middleware = immerWithPatches( storeWithHistory - ) as unknown as StateCreator, any> + ) as unknown as StateCreator> if (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined') { return createWithEqualityFn( @@ -100,23 +103,30 @@ const assertContextExists = (value: T | null): T => { return value as T } -export const useStore = () => { +export const useStore = < + V extends Record, + N extends InnerNamespace +>() => { return assertContextExists( - useContext(StoreContext) as UseBoundStore>> + useContext(StoreContext) as UseBoundStore>> ) } -export const useBatchQuery = () => { - const store = useStore() +export const useBatchQuery = < + N extends InnerNamespace> +>() => { + const store = useStore, N>() return store(({ batchPushState, batchReplaceState }) => ({ batchPushState, batchReplaceState, })) } -export const factoryParameters = ( +export const factoryParameters = < + T extends Record, + N extends InnerNamespace +>( config: Config, - // tslint:disable-next-line:no-object-literal-type-assertion defaultInitialValues: InitialValuesProvider = {} as T, ns: string = DEFAULT_NAMESPACE ) => { @@ -124,10 +134,12 @@ export const factoryParameters = ( const createInitialValues = (d: InitialValuesProvider) => typeof d === 'function' ? (d as () => T)() : d - const initBlank = (initialQueries: object, initialValues: T) => { + const initBlank = ( + initialQueries: Record, + initialValues: T + ) => { // thisValues will be mutated by applyFlatConfigToState, that's why we init it with a copy of // the initial state. - // tslint:disable-next-line:no-let let thisQuery = {} // We produce a new state here instead of mutating defaultInitialValues. // Otherwise it's possible that it get's reused across executions and that will yield to readonly errors. @@ -151,7 +163,7 @@ export const factoryParameters = ( const useStore = assertContextExists( useContext(StoreContext) as UseBoundStore< Mutate< - StoreApi>, + StoreApi>, [['zustand/subscribeWithSelector', never]] > > @@ -185,6 +197,7 @@ export const factoryParameters = ( const initialRegisterState = useMemo(() => { const initialValues = createInitialValues(defaultInitialValues) return initBlank(initialQueries(), initialValues) + // eslint-disable-next-line react-hooks/exhaustive-deps }, [useStore, defaultInitialValues]) const [currentState, setCurrentState] = useState({ @@ -231,13 +244,14 @@ export const factoryParameters = ( unsubscribe() unregister() } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [initialRegisterState]) const values = currentState.values const initialValues = currentState.initialValues const createQuery = useCallback( - (values: Partial) => { + (values: Partial | PartialDeep) => { return createQueryObject(flatConfig, ns, values, initialValues) }, [initialValues] @@ -245,16 +259,18 @@ export const factoryParameters = ( return useMemo( () => ({ - createQuery: (customValues?: Partial) => + createQuery: (customValues?: PartialDeep) => createQuery(customValues || values), - createQueryString: (customValues?: Partial) => + createQueryString: (customValues?: PartialDeep) => new URLSearchParams(createQuery(customValues || values)).toString(), initialValues, - pushState: (state: (state: T) => void, options?: Record) => - pushState(ns, state, options), + pushState: ( + state: (state: T) => void, + options?: Record + ) => pushState(ns, state, options), replaceState: ( state: (state: T) => void, - options?: Record + options?: Record ) => replaceState(ns, state, options), resetPush: () => resetPush(ns), resetReplace: () => resetReplace(ns), @@ -273,8 +289,8 @@ export const factoryParameters = ( } const createQueryString = ( - values: Partial, - initialValues?: Partial | null + values: PartialDeep, + initialValues?: PartialDeep | null ): string => { const thisInitialValues = typeof initialValues === 'undefined' @@ -287,7 +303,7 @@ export const factoryParameters = ( const parseQueryString = ( query: string, - initialValues?: Partial | null + initialValues?: PartialDeep | null ): Partial => { const thisInitialValues = typeof initialValues === 'undefined' @@ -307,3 +323,7 @@ export const factoryParameters = ( return { useQuery, createQueryString, parseQueryString } } + +export type InferNamespaceValues< + F extends ReturnType['useQuery'] +> = NamespaceValues['values']> diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 15c61728..fb2ee1f6 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -4,6 +4,7 @@ import { shallow } from 'zustand/shallow' import { GenericObject } from './middleware.js' import { Serializer } from './serializers.js' import { Config, DEFAULT_NAMESPACE, MappedConfig, Parameter } from './store.js' +import type { PartialDeep } from 'type-fest' export const createSearch = (query: Record) => { const queryString = new URLSearchParams(query).toString() @@ -34,10 +35,10 @@ export function pm( }) } -export const createOrApplyPath = ( +export const createOrApplyPath = ( obj: GenericObject | null, path: readonly string[], - value: any = null + value: T | null = null ) => { let current = obj || {} let thisPath: ReadonlyArray = [...path] @@ -59,12 +60,12 @@ export const formatNamespace = (key: string, ns?: string) => { return ns && ns !== DEFAULT_NAMESPACE ? `${ns}.${key}` : key } -export const get = ( - object: T, +export const get = >( + object: T | null | undefined, path: ReadonlyArray ) => { - return path.reduce((next: T | any, key: string | number) => { - return next ? next[key] : undefined + return path.reduce((next: unknown, key) => { + return next ? (next as T)[key] : undefined }, object) } @@ -75,7 +76,7 @@ const findDeepPatches = ( config: Config, basePath: readonly string[] ): readonly Patch[] => { - return Object.keys(config).reduce((next: readonly any[], item: string) => { + return Object.keys(config).reduce((next, item: string) => { if (typeof config[item] === 'function') { return [...next, { path: [...basePath, item], op: 'replace' }] } @@ -83,7 +84,7 @@ const findDeepPatches = ( ...next, ...findDeepPatches(config[item] as Config, [...basePath, item]), ] - }, []) + }, [] as Patch[]) } /** @@ -91,7 +92,7 @@ const findDeepPatches = ( * if a key has been removed / set to undefined, we still return it to * be able to create a diff to the current state */ -export const createQueriesFromPatch = ( +export const createQueriesFromPatch = >( config: Config, ns: string, patch: readonly Patch[], @@ -99,7 +100,7 @@ export const createQueriesFromPatch = ( initialState: T ): object => { return patch.reduce((next, item) => { - const { path, op } = item + const { path } = item // namespaces, [ns], values|initialValues, ...rest const [, patchNamespace, , ...objectPath] = path // skip patches that don't belong to the given namespace @@ -112,7 +113,7 @@ export const createQueriesFromPatch = ( if (possibleParameter !== undefined && isNotCallable) { // If we have an object as result, we create patches for each parameter inside the subtree const patches = findDeepPatches( - possibleParameter, + possibleParameter as Config, path as readonly string[] ) return { @@ -126,10 +127,10 @@ export const createQueriesFromPatch = ( } const { name, serializer, skipValue } = possibleParameter() as Parameter - // @ts-ignore - const value = get(state, objectPath) - // @ts-ignore - const initialValue = get(initialState, objectPath) + const value = get(state, objectPath) as Record | undefined + const initialValue = get(initialState, objectPath) as + | Record + | undefined const nextValue = skipValue(value, initialValue) ? undefined : value @@ -144,16 +145,19 @@ export const createQueriesFromPatch = ( /** * Creates a queryObject that can be serialized. */ -export const createQueryObject = ( +export const createQueryObject = >( config: MappedConfig, ns: string, - values: Partial, - initialState?: Partial | null + values: Partial | PartialDeep, + initialState?: Partial | PartialDeep | null ) => { return Object.keys(config).reduce((next, parameter) => { const { path, serializer, skipValue } = config[parameter] - const possibleValue = get(values, path) - const nextValue = skipValue(possibleValue, get(initialState, path)) + const possibleValue = get(values, path) as Record + const nextValue = skipValue( + possibleValue, + get(initialState, path) as Record + ) ? undefined : possibleValue if (nextValue === undefined) { @@ -166,7 +170,9 @@ export const createQueryObject = ( }, {}) } -export const applyDiffWithCreateQueriesFromPatch = ( +export const applyDiffWithCreateQueriesFromPatch = < + T extends Record +>( config: Config, ns: string, currentQuery: object, @@ -195,9 +201,9 @@ export const applyDiffWithCreateQueriesFromPatch = ( * Important: Mutates `state`. * @return an object with the keys that have been processed */ -export const applyFlatConfigToState = ( +export const applyFlatConfigToState = >( config: MappedConfig, - queryValues: { readonly [index: string]: any }, + queryValues: Record, ns: string, state: T, initialState: T, @@ -217,7 +223,12 @@ export const applyFlatConfigToState = ( createOrApplyPath(state, path, value) } - if (skipValue(value, get(initialState, path))) { + if ( + skipValue( + value as Record, + get(initialState, path) as Record + ) + ) { return next } @@ -241,35 +252,32 @@ export const flattenConfig = ( config: Config | readonly Config[], path: readonly (string | number)[] = [] ): MappedConfig => { - return Object.keys(config).reduce( - (next: { readonly [index: string]: any }, key: string | number) => { - const v = Array.isArray(config) - ? config[key as number] - : (config as Config)[key as string] - const nextPath: ReadonlyArray = [...path, key] - if (typeof v === 'function') { - const { name, ...rest } = v() - if (next[name] !== undefined) { - throw new Error( - `Config invalid: Multiple definitions found for ${name}.` - ) - } - return { - ...next, - [name]: { - path: nextPath, - ...rest, - }, - } + return Object.keys(config).reduce((next, key: string | number) => { + const v = Array.isArray(config) + ? config[key as number] + : (config as Config)[key as string] + const nextPath: ReadonlyArray = [...path, key] + if (typeof v === 'function') { + const { name, ...rest } = v() + if (next[name] !== undefined) { + throw new Error( + `Config invalid: Multiple definitions found for ${name}.` + ) } - if (typeof v === 'object') { - return { - ...next, - ...flattenConfig(v, nextPath), - } + return { + ...next, + [name]: { + path: nextPath, + ...rest, + }, } - return next - }, - {} - ) + } + if (typeof v === 'object') { + return { + ...next, + ...flattenConfig(v, nextPath), + } + } + return next + }, {} as MappedConfig) } diff --git a/tslint.json b/tslint.json deleted file mode 100644 index effeda7b..00000000 --- a/tslint.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["tslint:latest", "tslint-config-prettier", "tslint-immutable"], - "rules": { - "interface-name": [true, "never-prefix"], - // TODO: allow devDependencies only in **/*.spec.ts files: - // waiting on https://github.com/palantir/tslint/pull/3708 - "no-implicit-dependencies": [true, "dev"], - - /* tslint-immutable rules */ - // Recommended built-in rules - "no-var-keyword": true, - "no-parameter-reassignment": true, - "typedef": [true, "call-signature"], - - // Immutability rules - "readonly-keyword": true, - "readonly-array": true, - "no-let": true, - "no-object-mutation": true, - "no-delete": true, - "no-method-signature": true, - - // Functional style rules - "no-this": true, - "no-class": true, - "no-mixed-interface": true, - "no-expression-statement": [ - true, - { "ignore-prefix": ["console.", "process.exit"] } - ] - /* end tslint-immutable rules */ - } -} diff --git a/yarn.lock b/yarn.lock index 6b341ea9..ed376338 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@adobe/css-tools@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" @@ -1441,11 +1446,62 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005" + integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.48.0": + version "8.48.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" + integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== + "@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@humanwhocodes/config-array@^0.11.10": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" @@ -1899,11 +1955,24 @@ "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" @@ -1917,6 +1986,14 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@npmcli/arborist@^6.2.7": version "6.2.7" resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.2.7.tgz#434b66fb90c598b25d4d0ba116b124bf504d6e65" @@ -3527,6 +3604,16 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.12": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/lodash@^4.14.167": version "4.14.182" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" @@ -3638,6 +3725,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/semver@^7.5.0": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367" + integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg== + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -3722,6 +3814,91 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz#5cee33edf0d45d5ec773e3b3111206b098ac8599" + integrity sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.5.0" + "@typescript-eslint/type-utils" "6.5.0" + "@typescript-eslint/utils" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.5.0.tgz#3d6ed231c5e307c5f5f4a0d86893ec01e92b8c77" + integrity sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ== + dependencies: + "@typescript-eslint/scope-manager" "6.5.0" + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/typescript-estree" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz#f2cb20895aaad41b3ad27cc3a338ce8598f261c5" + integrity sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw== + dependencies: + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" + +"@typescript-eslint/type-utils@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.5.0.tgz#6d246c93739282bc0d2e623f28d0dec6cfcc38d7" + integrity sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A== + dependencies: + "@typescript-eslint/typescript-estree" "6.5.0" + "@typescript-eslint/utils" "6.5.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.5.0.tgz#f4e55cfd99ac5346ea772770bf212a3e689a8f04" + integrity sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w== + +"@typescript-eslint/typescript-estree@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz#1cef6bc822585e9ef89d88834bc902d911d747ed" + integrity sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ== + dependencies: + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.5.0.tgz#6668bee4f7f24978b11df8a2ea42d56eebc4662c" + integrity sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.5.0" + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/typescript-estree" "6.5.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz#1a6f474a0170a447b76f0699ce6700110fd11436" + integrity sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA== + dependencies: + "@typescript-eslint/types" "6.5.0" + eslint-visitor-keys "^3.4.1" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -4069,7 +4246,7 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -4104,6 +4281,11 @@ acorn@^8.1.0, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + address@^1.0.1: version "1.2.1" resolved "https://registry.yarnpkg.com/address/-/address-1.2.1.tgz#25bb61095b7522d65b357baa11bc05492d4c8acd" @@ -4432,7 +4614,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.0.3: +array-includes@^3.0.3, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== @@ -4465,7 +4647,18 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.1: +array.prototype.findlastindex@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.2.1, array.prototype.flat@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== @@ -4475,7 +4668,7 @@ array.prototype.flat@^1.2.1: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.1: +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== @@ -4507,6 +4700,29 @@ array.prototype.reduce@^1.0.5: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +arraybuffer.prototype.slice@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" + integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -4574,6 +4790,13 @@ async@^3.2.4: resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -5124,11 +5347,6 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -5802,7 +6020,7 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.12.1, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: +commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6170,7 +6388,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6378,14 +6596,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.0.0: +debug@^3.0.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -6459,6 +6677,11 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -6633,11 +6856,6 @@ diff-sequences@^29.4.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - diff@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" @@ -6666,6 +6884,13 @@ dir-glob@^3.0.0, dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -6882,6 +7107,14 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.12.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + entities@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -6990,6 +7223,51 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + safe-array-concat "^1.0.0" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.10" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -7024,11 +7302,40 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es-iterator-helpers@^1.0.12: + version "1.0.14" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.14.tgz#19cd7903697d97e21198f3293b55e8985791c365" + integrity sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.0" + safe-array-concat "^1.0.0" + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -7106,6 +7413,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^1.11.0: version "1.14.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" @@ -7130,6 +7442,95 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz#36f93e1eb65a635e688e16cae4bead54552e3bbd" + integrity sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" + is-glob "^4.0.3" + +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.28.1: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" + has "^1.0.3" + is-core-module "^2.13.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react-perf@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-perf/-/eslint-plugin-react-perf-3.3.1.tgz#e52d64c1d6e9c4cb1240108cdbbe406837f1b887" + integrity sha512-iOx2UtEOH50TmQhezTS4jbBAj/2gbrUdX+ZM28c2K9mwTvtRX6gdnd2P4WPQrejITDsAMNTCz95zu5HcjCD0xg== + +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -7146,11 +7547,83 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.48.0: + version "8.48.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" + integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.48.0" + "@humanwhocodes/config-array" "^0.11.10" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -7163,7 +7636,7 @@ estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -7443,6 +7916,17 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-parse@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" @@ -7453,7 +7937,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-sta resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -7509,6 +7993,13 @@ figures@^5.0.0: escape-string-regexp "^5.0.0" is-unicode-supported "^1.2.0" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -8034,6 +8525,13 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.5.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.0.tgz#06ce112a1463e93196aa90320c35df5039147e34" + integrity sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw== + dependencies: + resolve-pkg-maps "^1.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -8093,6 +8591,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-promise@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" @@ -8122,7 +8627,7 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -8195,14 +8700,21 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globalthis@^1.0.0: +globals@^13.19.0: + version "13.21.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" + integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.0, globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" -globby@^11.0.0, globby@^11.0.2: +globby@^11.0.0, globby@^11.0.2, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -8268,6 +8780,11 @@ graceful-fs@^4.2.11: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -8765,6 +9282,11 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + immer@^10.0.2: version "10.0.2" resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.2.tgz#11636c5b77acf529e059582d76faf338beb56141" @@ -8915,7 +9437,7 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -internal-slot@^1.0.4: +internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -9016,6 +9538,13 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -9079,6 +9608,13 @@ is-cidr@^4.0.2: dependencies: cidr-regex "^3.1.1" +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.9.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-core-module@^2.5.0: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" @@ -9182,6 +9718,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-finite@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" @@ -9207,6 +9750,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^3.0.0, is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -9214,7 +9764,7 @@ is-glob@^3.0.0, is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -9277,6 +9827,11 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-path-inside@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db" @@ -9370,7 +9925,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.10: +is-typed-array@^1.1.10, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -9563,6 +10118,16 @@ iterate-value@^1.0.2: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" +iterator.prototype@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.1.tgz#ab5b790e23ec00658f5974e032a2b05188bd3a5c" + integrity sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ== + dependencies: + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.3" + java-properties@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" @@ -10224,6 +10789,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + json-stringify-nice@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" @@ -10234,7 +10804,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^1.0.1: +json5@^1.0.1, json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== @@ -10287,6 +10857,16 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + junk@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" @@ -10352,6 +10932,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -10615,6 +11203,11 @@ lodash.memoize@4.x: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -11167,7 +11760,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -11229,6 +11822,11 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -11945,6 +12543,11 @@ object-inspect@^1.12.2: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.12.3: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + object-inspect@^1.7.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -11999,6 +12602,15 @@ object.entries@^1.1.0: define-properties "^1.1.4" es-abstract "^1.20.4" +object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + "object.fromentries@^2.0.0 || ^1.0.0": version "2.0.6" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" @@ -12008,6 +12620,15 @@ object.entries@^1.1.0: define-properties "^1.1.4" es-abstract "^1.20.4" +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.2: version "2.1.5" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" @@ -12018,6 +12639,24 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.2 define-properties "^1.1.4" es-abstract "^1.20.4" +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -12034,6 +12673,15 @@ object.values@^1.1.0: define-properties "^1.1.4" es-abstract "^1.20.4" +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + objectorarray@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" @@ -12129,6 +12777,18 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -12818,6 +13478,11 @@ postcss@^8.2.15: picocolors "^1.0.0" source-map-js "^1.0.2" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -12951,7 +13616,7 @@ promzard@^1.0.0: dependencies: read "^2.0.0" -prop-types@^15.0.0, prop-types@^15.7.2: +prop-types@^15.0.0, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -13482,6 +14147,18 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" +reflect.getprototypeof@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + regenerate-unicode-properties@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" @@ -13780,6 +14457,11 @@ resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve-typescript-plugin@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/resolve-typescript-plugin/-/resolve-typescript-plugin-2.0.1.tgz#ae4a1a81372b1e3389239268ac774bcc2780f4e3" @@ -13806,6 +14488,24 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -13894,6 +14594,16 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -14058,7 +14768,7 @@ semver-regex@^4.0.5: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-4.0.5.tgz#fbfa36c7ba70461311f5debcb3928821eb4f9180" integrity sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -14080,6 +14790,18 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + send@0.17.2: version "0.17.2" resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" @@ -14658,6 +15380,20 @@ string-width@^2.1.0: regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" +string.prototype.matchall@^4.0.8: + version "4.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.9.tgz#148779de0f75d36b13b15885fec5cadde994520d" + integrity sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + side-channel "^1.0.4" + string.prototype.padend@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" @@ -14675,6 +15411,15 @@ string.prototype.padstart@^3.0.0: define-properties "^1.1.4" es-abstract "^1.20.4" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimend@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" @@ -14683,7 +15428,7 @@ string.prototype.trimend@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" -string.prototype.trimend@^1.0.5: +string.prototype.trimend@^1.0.5, string.prototype.trimend@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== @@ -14718,7 +15463,7 @@ string.prototype.trimstart@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" -string.prototype.trimstart@^1.0.5: +string.prototype.trimstart@^1.0.5, string.prototype.trimstart@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== @@ -15331,6 +16076,11 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +ts-api-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.2.tgz#7c094f753b6705ee4faee25c3c684ade52d66d99" + integrity sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ== + ts-dedent@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" @@ -15365,61 +16115,26 @@ ts-pnp@^1.1.6: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@2.5.0, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.4.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslint-config-prettier@^1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" - integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== - -tslint-immutable@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/tslint-immutable/-/tslint-immutable-6.0.1.tgz#6ae3f85cc3d8fb9d465d2f9a90ed6d6c50ccd3e6" - integrity sha512-3GQ6HffN64gLmT/N1YzyVMqyf6uBjMvhNaevK8B0K01/QC0OU5AQZrH4TjMHo1IdG3JpqsZvuRy9IW1LA3zjwA== - dependencies: - tsutils "^2.28.0 || ^3.0.0" - -tslint@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" - integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.3" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.13.0" - tsutils "^2.29.0" - -"tsutils@^2.28.0 || ^3.0.0": - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -15445,6 +16160,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -15502,6 +16224,11 @@ type-fest@^3.8.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.8.0.tgz#ce80d1ca7c7d11c5540560999cbd410cb5b3a385" integrity sha512-FVNSzGQz9Th+/9R6Lvv7WIAkstylfHN2/JYxkyhhmKFYh9At2DST8t6L6Lref9eYO8PXFTfG9Sg1Agg0K3vq3Q== +type-fest@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.3.1.tgz#5cb58cdab5120f7ab0b40cfdc35073fb9adb651d" + integrity sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -15520,6 +16247,45 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -16277,6 +17043,24 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + which-collection@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" @@ -16287,7 +17071,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.11, which-typed-array@^1.1.9: +which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==