diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..f47fb152 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "jsynowiec.vscode-insertdatestring", + "EditorConfig.EditorConfig", + "dbaeumer.vscode-eslint" + ] +} diff --git a/package.json b/package.json index 4a8adf26..72ebe9f8 100644 --- a/package.json +++ b/package.json @@ -34,31 +34,31 @@ "@types/node": "^18.16.19", "@types/prettier": "^2.7.3", "@types/react": "^18.2.15", - "@vitejs/plugin-legacy": "^4.1.0", + "@vitejs/plugin-legacy": "^4.1.1", "@vitest/ui": "^0.33.0", "bumpp": "^9.1.1", - "eslint": "8.44.0", + "eslint": "8.45.0", "esno": "^0.17.0", "execa": "^7.1.1", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.1", "fs-extra": "^11.1.1", "jiti": "^1.19.1", "jsdom": "^22.1.0", "lint-staged": "^13.2.3", - "msw": "1.2.2", - "pnpm": "8.6.9", + "msw": "1.2.3", + "pnpm": "8.6.10", "prettier": "^3.0.0", "react": "^18.2.0", "rollup": "^3.26.3", "semver": "^7.5.4", - "simple-git-hooks": "^2.8.1", + "simple-git-hooks": "^2.9.0", "taze": "^0.11.2", - "terser": "^5.19.1", + "terser": "^5.19.2", "tsup": "^7.1.0", "typescript": "^5.1.6", "unbuild": "^0.8.11", "unplugin-auto-import": "^0.16.6", - "vite": "^4.4.4", + "vite": "^4.4.7", "vite-plugin-inspect": "^0.7.33", "vite-plugin-pages": "^0.31.0", "vitest": "^0.33.0" diff --git a/packages/gpt-runner-core/package.json b/packages/gpt-runner-core/package.json index a808b6c6..f43f94a1 100644 --- a/packages/gpt-runner-core/package.json +++ b/packages/gpt-runner-core/package.json @@ -48,7 +48,7 @@ "dependencies": { "@nicepkg/gpt-runner-shared": "workspace:*", "ignore": "^5.2.4", - "langchain": "^0.0.112", + "langchain": "^0.0.116", "unconfig": "^0.3.9", "zod": "^3.21.4" } diff --git a/packages/gpt-runner-shared/package.json b/packages/gpt-runner-shared/package.json index 34a22ab8..751a8e74 100644 --- a/packages/gpt-runner-shared/package.json +++ b/packages/gpt-runner-shared/package.json @@ -93,10 +93,10 @@ "zod-to-json-schema": "*" }, "dependencies": { - "@kvs/node-localstorage": "^2.1.3", - "@kvs/storage": "^2.1.3", + "@kvs/node-localstorage": "^2.1.5", + "@kvs/storage": "^2.1.4", "axios": "1.3.4", - "cachedir": "^2.3.0", + "cachedir": "^2.4.0", "debug": "^4.3.4", "find-free-ports": "^3.1.1", "http-proxy-agent": "^7.0.0", diff --git a/packages/gpt-runner-shared/src/common/helpers/is.ts b/packages/gpt-runner-shared/src/common/helpers/is.ts index afd94678..7c9b21e6 100644 --- a/packages/gpt-runner-shared/src/common/helpers/is.ts +++ b/packages/gpt-runner-shared/src/common/helpers/is.ts @@ -1,5 +1,3 @@ -import { tryStringifyJson } from './common' - export function isNumber(value: T | unknown): value is number { return Object.prototype.toString.call(value) === '[object Number]' } @@ -71,11 +69,46 @@ export function isShallowEqual( return true } -export function isShallowDeepEqual( - objA: any, - objB: any, -): boolean { - return isShallowEqual(objA, objB, (a, b) => { - return tryStringifyJson(a, true) === tryStringifyJson(b, true) - }) +// export function isShallowDeepEqual( +// objA: any, +// objB: any, +// ): boolean { +// return isShallowEqual(objA, objB, (a, b) => { +// return tryStringifyJson(a, true) === tryStringifyJson(b, true) +// }) +// } +// export function isDeepEqual(objA: any, objB: any): boolean { +// const compare = (a: any, b: any) => { +// if (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null) { +// // For objects, perform a deep comparison +// return isDeepEqual(a, b) +// } + +// // For primitives, perform a shallow comparison +// return Object.is(a, b) +// } + +// return isShallowEqual(objA, objB, compare) +// } + +export function isDeepEqual(objA: any, objB: any, maxDepth = 20, visited: any[] = [], depth: number = 0): boolean { + if (depth > maxDepth) { + // Limit the maximum recursion depth to prevent "Maximum call stack size exceeded" error + return true + } + + if (visited.includes(objA) || visited.includes(objB)) + return true + + const compare = (a: any, b: any) => { + if (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null) { + // For objects, perform a deep comparison + return isDeepEqual(a, b, maxDepth, [...visited, a, b], depth + 1) + } + + // For primitives, perform a shallow comparison + return Object.is(a, b) + } + + return isShallowEqual(objA, objB, compare) } diff --git a/packages/gpt-runner-shared/src/common/types/app-config.ts b/packages/gpt-runner-shared/src/common/types/app-config.ts new file mode 100644 index 00000000..dcb95660 --- /dev/null +++ b/packages/gpt-runner-shared/src/common/types/app-config.ts @@ -0,0 +1,74 @@ +import type { GetModelConfigType } from './config' +import type { ChatModelType, LocaleLang, VendorTag } from './enum' + +export type MarkdownString = string + +export interface BaseConfig { + /** + * create time like 2023-04-23 12:34:56, for diff update + */ + createAt: string +} + +export interface ChangeLogConfig { + /** + * like 2023-04-23 12:34:56 + */ + releaseDate: string + version: string + changes: MarkdownString +} + +export interface ReleaseConfig extends BaseConfig { + changeLogs: ChangeLogConfig[] +} + +export interface NotificationConfig extends BaseConfig { + title: string + message: MarkdownString +} + +export interface BaseApiVendor { + vendorName: string + vendorShortDescription?: string + vendorOfficialUrl?: string + vendorLogoUrl?: string + vendorDescription?: MarkdownString + vendorTags?: VendorTag[] +} + +export type ModelApiVendor = BaseApiVendor & { + vendorSecrets?: GetModelConfigType +} + +export type ModelTypeVendorsMap = { + [Key in ChatModelType]?: ModelApiVendor[] +} + +export interface VendorsConfig extends BaseConfig, ModelTypeVendorsMap { +} + +export interface CommonAppConfig { + notificationConfig: NotificationConfig + releaseConfig: ReleaseConfig + vendorsConfig: VendorsConfig +} + +export type AppConfig = { + common: CommonAppConfig +} & { + [K in LocaleLang]?: Partial +} + +export interface CurrentAppConfig { + showNotificationModal: boolean + showReleaseModal: boolean + currentConfig?: CommonAppConfig +} + +export interface LastVisitModalDateRecord { + notificationDate?: string + releaseDate?: string +} + +export type MarkedAsVisitedType = keyof LastVisitModalDateRecord diff --git a/packages/gpt-runner-shared/src/common/types/enum.ts b/packages/gpt-runner-shared/src/common/types/enum.ts index 94d27ffd..792a2307 100644 --- a/packages/gpt-runner-shared/src/common/types/enum.ts +++ b/packages/gpt-runner-shared/src/common/types/enum.ts @@ -40,6 +40,7 @@ export enum GptFileTreeItemType { export enum ServerStorageName { FrontendState = 'frontend-state', SecretsConfig = 'secrets-config', + GlobalState = 'global-state', WebPreset = 'web-preset', } @@ -65,3 +66,10 @@ export enum SecretStorageKey { Openai = 'openai', Proxy = 'proxy', } + +export enum VendorTag { + Free = 'free', + Official = 'official', + Unofficial = 'unofficial', + Recommended = 'recommended', +} diff --git a/packages/gpt-runner-shared/src/common/types/index.ts b/packages/gpt-runner-shared/src/common/types/index.ts index d0c36db6..d29ce093 100644 --- a/packages/gpt-runner-shared/src/common/types/index.ts +++ b/packages/gpt-runner-shared/src/common/types/index.ts @@ -1,3 +1,4 @@ +export * from './app-config' export * from './client' export * from './common-file' export * from './common' diff --git a/packages/gpt-runner-shared/src/common/types/server.ts b/packages/gpt-runner-shared/src/common/types/server.ts index 79e5bf21..41ba8e22 100644 --- a/packages/gpt-runner-shared/src/common/types/server.ts +++ b/packages/gpt-runner-shared/src/common/types/server.ts @@ -1,6 +1,7 @@ +import type { CurrentAppConfig, MarkedAsVisitedType } from './app-config' import type { FileInfoTree } from './common-file' import type { PartialChatModelTypeMap, SingleChatMessage, SingleFileConfig, UserConfig } from './config' -import type { ChatModelType, ServerStorageName } from './enum' +import type { ChatModelType, LocaleLang, ServerStorageName } from './enum' import type { GptFileInfo, GptFileInfoTree } from './gpt-file' export interface BaseResponse { @@ -17,6 +18,10 @@ export interface ProxySecrets { proxyUrl: string } +export type ModelTypeVendorNameMap = { + [K in ChatModelType]?: string +} + export interface ChatStreamReqParams { messages: SingleChatMessage[] prompt: string @@ -42,6 +47,12 @@ export interface ChatStreamReqParams { singleFileConfig?: SingleFileConfig overrideModelType?: ChatModelType overrideModelsConfig?: PartialChatModelTypeMap + + /** + * models type vendor name map + */ + modelTypeVendorNameMap?: ModelTypeVendorNameMap + contextFilePaths?: string[] editingFilePath?: string rootPath?: string @@ -80,6 +91,18 @@ export interface GetProjectConfigResData { nodeVersionValidMessage: string } +export interface GetAppConfigReqParams { + langId?: LocaleLang +} + +export type GetAppConfigResData = CurrentAppConfig + +export interface MarkAsVisitedAppConfigReqParams { + types: MarkedAsVisitedType[] +} + +export type MarkAsVisitedAppConfigResData = null + export interface GetUserConfigReqParams { rootPath: string } diff --git a/packages/gpt-runner-shared/src/common/zod/enum.zod.ts b/packages/gpt-runner-shared/src/common/zod/enum.zod.ts index 7e727722..96446396 100644 --- a/packages/gpt-runner-shared/src/common/zod/enum.zod.ts +++ b/packages/gpt-runner-shared/src/common/zod/enum.zod.ts @@ -1,5 +1,5 @@ import { z } from 'zod' -import { ChatMessageStatus, ChatModelType, ChatRole, ClientEventName, GptFileTreeItemType, ServerStorageName } from '../types' +import { ChatMessageStatus, ChatModelType, ChatRole, ClientEventName, GptFileTreeItemType, LocaleLang, ServerStorageName } from '../types' export const ChatModelTypeSchema = z.nativeEnum(ChatModelType) @@ -12,3 +12,5 @@ export const ClientEventNameSchema = z.nativeEnum(ClientEventName) export const GptFileTreeItemTypeSchema = z.nativeEnum(GptFileTreeItemType) export const ServerStorageNameSchema = z.nativeEnum(ServerStorageName) + +export const LocaleLangSchema = z.nativeEnum(LocaleLang) diff --git a/packages/gpt-runner-shared/src/common/zod/server.zod.ts b/packages/gpt-runner-shared/src/common/zod/server.zod.ts index 6f33dff8..c8fa0a6f 100644 --- a/packages/gpt-runner-shared/src/common/zod/server.zod.ts +++ b/packages/gpt-runner-shared/src/common/zod/server.zod.ts @@ -1,7 +1,7 @@ import { z } from 'zod' -import type { ChatStreamReqParams, CreateFilePathReqParams, DeleteFilePathReqParams, GetCommonFilesReqParams, GetFileInfoReqParams, GetGptFileInfoReqParams, GetGptFilesReqParams, GetUserConfigReqParams, InitGptFilesReqParams, OpenEditorReqParams, RenameFilePathReqParams, SaveFileContentReqParams, StorageClearReqParams, StorageGetItemReqParams, StorageRemoveItemReqParams, StorageSetItemReqParams } from '../types' +import type { ChatStreamReqParams, CreateFilePathReqParams, DeleteFilePathReqParams, GetAppConfigReqParams, GetCommonFilesReqParams, GetFileInfoReqParams, GetGptFileInfoReqParams, GetGptFilesReqParams, GetUserConfigReqParams, InitGptFilesReqParams, MarkAsVisitedAppConfigReqParams, OpenEditorReqParams, RenameFilePathReqParams, SaveFileContentReqParams, StorageClearReqParams, StorageGetItemReqParams, StorageRemoveItemReqParams, StorageSetItemReqParams } from '../types' import { PartialChatModelTypeMapSchema, SingleChatMessageSchema, SingleFileConfigSchema } from './config' -import { ChatModelTypeSchema, ServerStorageNameSchema } from './enum.zod' +import { ChatModelTypeSchema, LocaleLangSchema, ServerStorageNameSchema } from './enum.zod' export const ChatStreamReqParamsSchema = z.object({ messages: z.array(SingleChatMessageSchema), @@ -13,6 +13,7 @@ export const ChatStreamReqParamsSchema = z.object({ singleFileConfig: SingleFileConfigSchema.optional(), overrideModelType: ChatModelTypeSchema.optional(), overrideModelsConfig: PartialChatModelTypeMapSchema.optional(), + modelTypeVendorNameMap: z.record(z.string()).optional(), contextFilePaths: z.array(z.string()).optional(), editingFilePath: z.string().optional(), rootPath: z.string().optional(), @@ -89,3 +90,14 @@ export const SaveFileContentReqParamsSchema = z.object({ fileFullPath: z.string(), content: z.string(), }) satisfies z.ZodType + +export const GetAppConfigReqParamsSchema = z.object({ + langId: LocaleLangSchema.optional(), +}) satisfies z.ZodType + +export const MarkAsVisitedAppConfigReqParamsSchema = z.object({ + types: z.array(z.union([ + z.literal('notificationDate'), + z.literal('releaseDate'), + ])), +}) satisfies z.ZodType diff --git a/packages/gpt-runner-web/assets/app-config.json b/packages/gpt-runner-web/assets/app-config.json new file mode 100644 index 00000000..44423796 --- /dev/null +++ b/packages/gpt-runner-web/assets/app-config.json @@ -0,0 +1,44 @@ +{ + "common": { + "notificationConfig": { + "createAt": "2023-07-24 23:31:22", + "title": "GPT Runner Notification", + "message": "v1.2.0 is release" + }, + "releaseConfig": { + "createAt": "2023-07-24 23:41:04", + "changeLogs": [ + { + "releaseDate": "2023-07-24 23:40:59", + "version": "1.2.0", + "changes": "fix some bug" + } + ] + }, + "vendorsConfig": { + "createAt": "2023-07-24 23:40:49", + "openai": [], + "anthropic": [] + } + }, + "zh_CN": { + "notificationConfig": { + "createAt": "2023-07-24 23:31:26", + "title": "GPT Runner 通知", + "message": "\n### 版本更新到了 v1.2.0\n1. 重启 vscode 即可去扩展处更新\n2. cli 的执行 `npm i -g gptr` 即可更新\n\n### 本次功能更新\n1. 针对语言为简体中文的用户提供 OpenAI API key 供应商,也就是你可以白嫖了。\n2. 点击左上角设置,切换供应商即可。\n3. 本次 API Key 由慷慨大方的 `剑廿三` 提供,让我们把掌声送给他。\n\n### 交流\n1. 想进群交流的加 wechat: `qq2214962083`\n " + }, + "vendorsConfig": { + "createAt": "2023-07-24 23:40:49", + "openai": [ + { + "vendorName": "xabcai", + "vendorSecrets": { + "basePath": "https://api.xabcai.com/v1", + "apiKey": "c2stWHZQeGJQMVBySFduZDJFZ0xpa0lKTlQzOTNoc3pZdDdmN0NNZUozSE1pdkw2QVdx" + } + } + ], + "anthropic": [] + } + } +} \ No newline at end of file diff --git a/packages/gpt-runner-web/client/public/locales/de.json b/packages/gpt-runner-web/client/public/locales/de.json index bb716f97..cf1fc639 100644 --- a/packages/gpt-runner-web/client/public/locales/de.json +++ b/packages/gpt-runner-web/client/public/locales/de.json @@ -75,6 +75,8 @@ "reward": "Belohnung", "contributors": "Mitwirkende", "buy_me_a_coffee": "Kauf mir einen Kaffee", + "third_party_api_providers": "Drittanbieter-API-Anbieter", + "custom": "Benutzerdefiniert", "anthropic_api_key": "Anthropic API-Schlüssel", "anthropic_api_key_placeholder": "Bitte geben Sie den Anthropic API-Schlüssel ein", "anthropic_api_base_path": "Anthropic API-Basispfad", @@ -99,4 +101,4 @@ "file_editor_forgot_save_tips_title": "Möchten Sie die Änderungen an {{fileName}} speichern?", "file_editor_forgot_save_tips_content": "Ihre Änderungen gehen verloren, wenn Sie sie nicht speichern." } -} \ No newline at end of file +} diff --git a/packages/gpt-runner-web/client/public/locales/en.json b/packages/gpt-runner-web/client/public/locales/en.json index ecd893e6..161b7bdd 100644 --- a/packages/gpt-runner-web/client/public/locales/en.json +++ b/packages/gpt-runner-web/client/public/locales/en.json @@ -75,6 +75,8 @@ "reward": "Reward", "contributors": "Contributors", "buy_me_a_coffee": "buy me a coffee", + "third_party_api_providers": "Third-Party API Providers", + "custom": "Custom", "anthropic_api_key": "Anthropic API Key", "anthropic_api_key_placeholder": "Please input Anthropic API Key", "anthropic_api_base_path": "Anthropic API Base Path", @@ -99,4 +101,4 @@ "file_editor_forgot_save_tips_title": "Do you want to save changes to {{fileName}}?", "file_editor_forgot_save_tips_content": "Your changes will be lost if you don't save them." } -} \ No newline at end of file +} diff --git a/packages/gpt-runner-web/client/public/locales/ja.json b/packages/gpt-runner-web/client/public/locales/ja.json index cc108307..c7d1561f 100644 --- a/packages/gpt-runner-web/client/public/locales/ja.json +++ b/packages/gpt-runner-web/client/public/locales/ja.json @@ -75,6 +75,8 @@ "reward": "寄付", "contributors": "貢献者", "buy_me_a_coffee": "コーヒーを買ってください", + "third_party_api_providers": "サードパーティAPIプロバイダー", + "custom": "カスタム", "anthropic_api_key": "Anthropic APIキー", "anthropic_api_key_placeholder": "Anthropic API キーを入力してください", "anthropic_api_base_path": "Anthropic API ベースパス", @@ -99,4 +101,4 @@ "file_editor_forgot_save_tips_title": "変更を{{fileName}}に保存しますか?", "file_editor_forgot_save_tips_content": "保存しない場合、変更は失われます。" } -} \ No newline at end of file +} diff --git a/packages/gpt-runner-web/client/public/locales/zh_CN.json b/packages/gpt-runner-web/client/public/locales/zh_CN.json index ba42813d..80d61cb8 100644 --- a/packages/gpt-runner-web/client/public/locales/zh_CN.json +++ b/packages/gpt-runner-web/client/public/locales/zh_CN.json @@ -75,6 +75,8 @@ "reward": "赞赏", "contributors": "贡献者", "buy_me_a_coffee": "请我喝杯咖啡", + "third_party_api_providers": "第三方 API 提供商", + "custom": "自定义", "anthropic_api_key": "Anthropic API Key", "anthropic_api_key_placeholder": "请输入 Anthropic API Key", "anthropic_api_base_path": "Anthropic API 基础路径", @@ -99,4 +101,4 @@ "file_editor_forgot_save_tips_title": "你想要保存对{{fileName}}的更改吗?", "file_editor_forgot_save_tips_content": "如果你不保存,你的改动将会丢失." } -} \ No newline at end of file +} diff --git a/packages/gpt-runner-web/client/public/locales/zh_Hant.json b/packages/gpt-runner-web/client/public/locales/zh_Hant.json index 15ea87f4..0c794231 100644 --- a/packages/gpt-runner-web/client/public/locales/zh_Hant.json +++ b/packages/gpt-runner-web/client/public/locales/zh_Hant.json @@ -75,6 +75,8 @@ "reward": "贊賞", "contributors": "貢獻者", "buy_me_a_coffee": "請我喝杯咖啡", + "third_party_api_providers": "第三方 API 提供者", + "custom": "自定義", "anthropic_api_key": "Anthropic API Key", "anthropic_api_key_placeholder": "請輸入 Anthropic API Key", "anthropic_api_base_path": "Anthropic API 基礎路徑", @@ -99,4 +101,4 @@ "file_editor_forgot_save_tips_title": "你想要保存對{{fileName}}的更改嗎?", "file_editor_forgot_save_tips_content": "如果你不保存,你的改動將會丟失." } -} \ No newline at end of file +} diff --git a/packages/gpt-runner-web/client/src/components/chat-message-item/index.tsx b/packages/gpt-runner-web/client/src/components/chat-message-item/index.tsx index b07575b2..21c049f2 100644 --- a/packages/gpt-runner-web/client/src/components/chat-message-item/index.tsx +++ b/packages/gpt-runner-web/client/src/components/chat-message-item/index.tsx @@ -1,7 +1,7 @@ import { type FC, memo } from 'react' import clsx from 'clsx' import type { SingleChatMessage } from '@nicepkg/gpt-runner-shared/common' -import { ChatMessageStatus, ChatRole, isShallowDeepEqual } from '@nicepkg/gpt-runner-shared/common' +import { ChatMessageStatus, ChatRole } from '@nicepkg/gpt-runner-shared/common' import type { MessageTextViewProps } from '../chat-message-text-view' import { MessageTextView } from '../chat-message-text-view' import { Icon } from '../icon' @@ -87,6 +87,6 @@ export const MessageItem: FC = memo((props) => { ) -}, isShallowDeepEqual) +}) MessageItem.displayName = 'MessageItem' diff --git a/packages/gpt-runner-web/client/src/components/chat-message-text-view/index.tsx b/packages/gpt-runner-web/client/src/components/chat-message-text-view/index.tsx index ac6a8e9b..6e4a259e 100644 --- a/packages/gpt-runner-web/client/src/components/chat-message-text-view/index.tsx +++ b/packages/gpt-runner-web/client/src/components/chat-message-text-view/index.tsx @@ -2,7 +2,6 @@ import ReactMarkdown from 'react-markdown' import { type FC, memo } from 'react' import remarkGfm from 'remark-gfm' import type { PluginOptions } from 'react-markdown/lib/react-markdown' -import { isShallowDeepEqual } from '@nicepkg/gpt-runner-shared/common' import type { MessageCodeBlockProps } from '../chat-message-code-block' import { MessageCodeBlock } from '../chat-message-code-block' @@ -49,6 +48,6 @@ export const MessageTextView: FC = memo((props) => { {contents} ) -}, isShallowDeepEqual) +}) MessageTextView.displayName = 'MessageTextView' diff --git a/packages/gpt-runner-web/client/src/components/modal/index.tsx b/packages/gpt-runner-web/client/src/components/modal/index.tsx index 2c14eb78..61e42b20 100644 --- a/packages/gpt-runner-web/client/src/components/modal/index.tsx +++ b/packages/gpt-runner-web/client/src/components/modal/index.tsx @@ -1,7 +1,8 @@ -import type { ReactNode } from 'react' -import { memo, useEffect, useState } from 'react' +import type { CSSProperties, ReactNode } from 'react' +import { memo, useEffect, useMemo, useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' +import { AnimatePresence, type Variants } from 'framer-motion' import { FlexColumnCenter } from '../../styles/global.styles' import { CloseButton, ModalContent, ModalContentFooter, ModalContentHeader, ModalContentWrapper, ModalTitle, ModalWrapper, StyledFooterButton } from './modal.styles' @@ -18,7 +19,7 @@ export interface ModalProps { text: string onClick: () => void }[] - contentWidth?: string + contentStyle?: CSSProperties children?: ReactNode onCancel?: () => void onOk?: () => void @@ -30,11 +31,12 @@ export const Modal = memo(({ zIndex = 10, cancelText, okText, + showCancelBtn = true, showOkBtn = true, showCloseIcon = true, footerCenterButtons = [], - contentWidth, + contentStyle, children, onCancel, onOk, @@ -49,57 +51,77 @@ export const Modal = memo(({ setIsOpen(open) }, [open]) + const modalAnimation: Variants = useMemo(() => ({ + hidden: { + opacity: 0, + y: 50, + display: 'none', + }, + visible: { opacity: 1, y: 0, display: 'flex' }, + exit: { + opacity: 0, + y: 50, + transitionEnd: { + display: 'none', + }, + }, + }), []) + + const showFooter = showCancelBtn || showOkBtn || footerCenterButtons.length > 0 + return createPortal( - - + - - {title} - {showCloseIcon && - - } - + + + {title} + {showCloseIcon && + + } + - - {children} - + + {children} + - - {showCancelBtn && - {finalCancelText} - } + {showFooter && + {showCancelBtn && + {finalCancelText} + } - {footerCenterButtons.map((btn, index) => ( - ( + + {btn.text} + + ))} + + {showOkBtn && - {btn.text} - - ))} - - {showOkBtn && - {finalOkText} - } - - - - , + onClick={onOk}> + {finalOkText} + } + } + + + , document.body, ) }) diff --git a/packages/gpt-runner-web/client/src/components/modal/modal.styles.ts b/packages/gpt-runner-web/client/src/components/modal/modal.styles.ts index e9ca4561..cfad4bab 100644 --- a/packages/gpt-runner-web/client/src/components/modal/modal.styles.ts +++ b/packages/gpt-runner-web/client/src/components/modal/modal.styles.ts @@ -1,8 +1,9 @@ import { styled } from 'styled-components' import { VSCodeButton } from '@vscode/webview-ui-toolkit/react' +import { motion } from 'framer-motion' import { Icon } from '../icon' -export const ModalWrapper = styled.div` +export const ModalWrapper = styled(motion.div)` position: fixed; top: 0; left: 0; @@ -21,7 +22,7 @@ export const ModalContentWrapper = styled.div` flex-direction: column; max-width: 100%; max-height: 80vh; - width: min(500px, calc(100vw -1rem)); + width: min(500px, calc(100vw - 1rem)); overflow: hidden; background: var(--panel-view-background); border-radius: 0.5rem; diff --git a/packages/gpt-runner-web/client/src/networks/config.ts b/packages/gpt-runner-web/client/src/networks/config.ts index 5d85e476..d267fae9 100644 --- a/packages/gpt-runner-web/client/src/networks/config.ts +++ b/packages/gpt-runner-web/client/src/networks/config.ts @@ -1,4 +1,5 @@ -import { type BaseResponse, type GetProjectConfigResData, type GetUserConfigReqParams, type GetUserConfigResData, objectToQueryString } from '@nicepkg/gpt-runner-shared/common' +import { objectToQueryString } from '@nicepkg/gpt-runner-shared/common' +import type { BaseResponse, GetAppConfigReqParams, GetAppConfigResData, GetProjectConfigResData, GetUserConfigReqParams, GetUserConfigResData, MarkAsVisitedAppConfigReqParams, MarkAsVisitedAppConfigResData } from '@nicepkg/gpt-runner-shared/common' import { getGlobalConfig } from '../helpers/global-config' import { myFetch } from '../helpers/fetch' @@ -21,3 +22,24 @@ export async function fetchProjectInfo(): Promise> { + return await myFetch(`${getGlobalConfig().serverBaseUrl}/api/config/app-config?${objectToQueryString({ + ...params, + })}`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }) +} + +export async function markAsVisitedAppConfig(params: MarkAsVisitedAppConfigReqParams): Promise> { + return await myFetch(`${getGlobalConfig().serverBaseUrl}/api/config/mark-as-visited-app-config`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(params), + }) +} diff --git a/packages/gpt-runner-web/client/src/networks/llm.ts b/packages/gpt-runner-web/client/src/networks/llm.ts index bf40a633..1ba2bcde 100644 --- a/packages/gpt-runner-web/client/src/networks/llm.ts +++ b/packages/gpt-runner-web/client/src/networks/llm.ts @@ -27,6 +27,7 @@ export async function fetchLlmStream( editingFilePath, overrideModelType, overrideModelsConfig, + modelTypeVendorNameMap, rootPath, namespace, onMessage = () => {}, @@ -63,6 +64,7 @@ export async function fetchLlmStream( editingFilePath, overrideModelType, overrideModelsConfig: finalOverrideModelsConfig, + modelTypeVendorNameMap, rootPath, } satisfies ChatStreamReqParams), openWhenHidden: true, diff --git a/packages/gpt-runner-web/client/src/pages/chat/components/chat-panel/index.tsx b/packages/gpt-runner-web/client/src/pages/chat/components/chat-panel/index.tsx index b4ba457a..3f20a844 100644 --- a/packages/gpt-runner-web/client/src/pages/chat/components/chat-panel/index.tsx +++ b/packages/gpt-runner-web/client/src/pages/chat/components/chat-panel/index.tsx @@ -115,6 +115,8 @@ export const ChatPanel: FC = memo((props) => { // return finalPathInfos }, [filesRelativePaths]) + const remarkPlugins = useMemo(() => [createRemarkOpenEditorPlugin(filesPathsAllPartsInfo)], [filesPathsAllPartsInfo]) + useEffect(() => { const gptFileTreeItem = getGptFileTreeItemFromChatId(chatId) setGptFileTreeItem(gptFileTreeItem) @@ -251,80 +253,96 @@ export const ChatPanel: FC = memo((props) => { const codeBlockTheme: MessageCodeBlockTheme = isDarkTheme(themeName) ? 'dark' : 'light' - const messagePanelProps: ChatMessagePanelProps = { - messageItems: chatInstance?.messages.map((message, i) => { - const isLast = i === chatInstance.messages.length - 1 - const isLastTwo = i >= chatInstance.messages.length - 2 - const isAi = message.name === ChatRole.Assistant + const messagePanelProps: ChatMessagePanelProps = useMemo(() => { + return { + messageItems: chatInstance?.messages.map((message, i) => { + const isLast = i === chatInstance.messages.length - 1 + const isLastTwo = i >= chatInstance.messages.length - 2 + const isAi = message.name === ChatRole.Assistant + + const handleRegenerateMessage = () => { + if (!isLast) + return - const handleRegenerateMessage = () => { - if (!isLast) - return + if (status === ChatMessageStatus.Pending) { + // is generating, stop first + stopCurrentGeneratingChatAnswer() + } - if (status === ChatMessageStatus.Pending) { - // is generating, stop first - stopCurrentGeneratingChatAnswer() + regenerateCurrentLastChatAnswer() } - regenerateCurrentLastChatAnswer() - } + const handleDeleteMessage = () => { + updateCurrentChatInstance({ + messages: chatInstance.messages.filter((_, index) => index !== i), + }, false) + } - const handleDeleteMessage = () => { - updateCurrentChatInstance({ - messages: chatInstance.messages.filter((_, index) => index !== i), - }, false) - } + const buildMessageToolbar: MessageItemProps['buildMessageToolbar'] = ({ text }) => { + return <> + handleCopy(text)} + > + - const buildMessageToolbar: MessageItemProps['buildMessageToolbar'] = ({ text }) => { - return <> - handleCopy(text)} - > - - - handleEditMessage(text)} - > - - - {isAi && isLast && } - - {status === ChatMessageStatus.Pending && isLast - ? - : handleEditMessage(text)} > - } - - } + + + {isAi && isLast && } + + {status === ChatMessageStatus.Pending && isLast + ? + : + } + + } - return { - ...message, - remarkPlugins: [createRemarkOpenEditorPlugin(filesPathsAllPartsInfo)], - status: isLast ? status : ChatMessageStatus.Success, - showToolbar: isLastTwo ? 'always' : 'hover', - showAvatar: chatPanelWidth > 600, - theme: codeBlockTheme, - buildCodeToolbar: status === ChatMessageStatus.Pending ? undefined : buildCodeToolbar, - buildMessageToolbar, - } satisfies MessageItemProps - }) ?? [], - } + return { + ...message, + remarkPlugins, + status: isLast ? status : ChatMessageStatus.Success, + showToolbar: isLastTwo ? 'always' : 'hover', + showAvatar: chatPanelWidth > 600, + theme: codeBlockTheme, + buildCodeToolbar: status === ChatMessageStatus.Pending ? undefined : buildCodeToolbar, + buildMessageToolbar, + } satisfies MessageItemProps + }) ?? [], + } + }, [ + chatInstance?.messages, + status, + chatPanelWidth, + remarkPlugins, + codeBlockTheme, + buildCodeToolbar, + handleCopy, + handleEditMessage, + handleStopGenerateAnswer, + regenerateCurrentLastChatAnswer, + stopCurrentGeneratingChatAnswer, + updateCurrentChatInstance, + t, + ]) const renderInputToolbar = () => { return <> diff --git a/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/anthropic-settings/secrets-settings.tsx b/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/anthropic-settings/secrets-settings.tsx index 30310904..12267003 100644 --- a/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/anthropic-settings/secrets-settings.tsx +++ b/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/anthropic-settings/secrets-settings.tsx @@ -3,9 +3,10 @@ import type { AnthropicSecrets } from '@nicepkg/gpt-runner-shared/common' import { type FC, memo } from 'react' import { useTranslation } from 'react-i18next' import { HookFormInput } from '../../../../../../../components/hook-form/hook-form-input' -import { BaseSecretsSettings, type BaseSecretsSettingsFormItemConfig } from '../base-secrets-settings' +import { BaseSecretsSettings } from '../base-secrets-settings' +import type { BaseSecretsFormData, BaseSecretsSettingsFormItemConfig } from '../base-secrets-settings' -interface FormData extends Pick { +interface FormData extends Pick, BaseSecretsFormData { } export interface AnthropicSecretsSettingsProps { @@ -17,12 +18,13 @@ export const AnthropicSecretsSettings: FC = memo( const formConfig: BaseSecretsSettingsFormItemConfig[] = [ { name: 'apiKey', - buildView: ({ useFormReturns: { control, formState } }) => { + buildView: ({ useFormReturns: { control, formState }, currentVendorConfig }) => { return <> = memo( }, { name: 'basePath', - buildView: ({ useFormReturns: { control, formState } }) => { + buildView: ({ useFormReturns: { control, formState }, currentVendorConfig }) => { return <> diff --git a/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/base-secrets-settings.tsx b/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/base-secrets-settings.tsx index a5b762b3..3b85ed8e 100644 --- a/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/base-secrets-settings.tsx +++ b/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/base-secrets-settings.tsx @@ -1,40 +1,82 @@ +import type { ModelApiVendor } from '@nicepkg/gpt-runner-shared/common' import { ChatModelType, ServerStorageName, getModelConfigTypeSchema } from '@nicepkg/gpt-runner-shared/common' -import { memo, useEffect } from 'react' +import { memo, useEffect, useMemo } from 'react' import type { ReactNode } from 'react' import { useForm } from 'react-hook-form' import type { Path, UseFormReturn } from 'react-hook-form' import { useTranslation } from 'react-i18next' import { useMutation, useQuery } from '@tanstack/react-query' -import { zodResolver } from '@hookform/resolvers/zod' import { toast } from 'react-hot-toast' import { VSCodeButton } from '@vscode/webview-ui-toolkit/react' +import { zodResolver } from '@hookform/resolvers/zod' import { StyledForm, StyledFormItem } from '../../settings.styles' import { getServerStorage, saveServerStorage } from '../../../../../../networks/server-storage' import { IS_SAFE } from '../../../../../../helpers/constant' import { useLoading } from '../../../../../../hooks/use-loading.hook' +import { HookFormSelect } from '../../../../../../components/hook-form/hook-form-select' +import { useTempStore } from '../../../../../../store/zustand/temp' +import { useGlobalStore } from '../../../../../../store/zustand/global' -export interface BaseSecretsSettingsFormItemBuildViewState> { +export interface BaseSecretsFormData { + vendorName: string +} + +export interface BaseSecretsSettingsFormItemBuildViewState { useFormReturns: UseFormReturn + currentVendorConfig: ModelApiVendor | null } -export interface BaseSecretsSettingsFormItemConfig> { +export interface BaseSecretsSettingsFormItemConfig { name: keyof FormData buildView: (state: BaseSecretsSettingsFormItemBuildViewState) => ReactNode } -export interface BaseSecretsSettingsProps> { - modelType?: ChatModelType +export interface BaseSecretsSettingsProps { + modelType?: M formConfig: BaseSecretsSettingsFormItemConfig[] } -function BaseSecretsSettings_>(props: BaseSecretsSettingsProps) { +function BaseSecretsSettings_(props: BaseSecretsSettingsProps) { const { modelType, formConfig } = props const { t } = useTranslation() const { setLoading } = useLoading() + const { currentAppConfig } = useTempStore() + const { modelTypeVendorNameMap, updateModelTypeVendorName } = useGlobalStore() + const currentModelType = modelType || ChatModelType.Openai - const { data: querySecretsRes } = useQuery({ + const vendorsConfig = useMemo(() => { + return currentAppConfig?.currentConfig?.vendorsConfig?.[currentModelType] + }, [currentAppConfig, currentModelType]) + + const vendorNameConfigMap = useMemo(() => { + const map: Record> = {} + + vendorsConfig?.forEach((item) => { + map[item.vendorName] = item + }) + + return map + }, [vendorsConfig]) + + const vendorSelectOptions = useMemo(() => { + const options = vendorsConfig?.map((item) => { + return { + label: item.vendorName, + value: item.vendorName, + } + }) ?? [] + + options.unshift({ + label: t('chat_page.custom'), + value: '', + }) + + return options + }, [vendorsConfig, t]) + + const { data: querySecretsRes, refetch: refetchSecretes } = useQuery({ queryKey: ['secrets', currentModelType], enabled: !!currentModelType, queryFn: () => getServerStorage({ @@ -56,23 +98,40 @@ function BaseSecretsSettings_>(props: BaseS const useFormReturns = useForm({ mode: 'onBlur', resolver: zodResolver(getModelConfigTypeSchema(currentModelType, 'secrets')), + defaultValues: { + vendorName: modelTypeVendorNameMap[currentModelType] || '', + } as any, }) - const { handleSubmit, setValue } = useFormReturns + const { handleSubmit, setValue, watch, formState, control } = useFormReturns + + const currentVendorName = watch('vendorName' as any) + const currentVendorConfig = useMemo(() => { + return vendorNameConfigMap[currentVendorName] || null + }, [currentVendorName]) as ModelApiVendor | null useEffect(() => { - if (remoteSecrets) { - Object.keys(remoteSecrets).forEach((key) => { - setValue(key as Path, remoteSecrets[key as keyof FormData]) + const finalSecrets = currentVendorConfig?.vendorSecrets || remoteSecrets + + if (finalSecrets) { + Object.keys(finalSecrets).forEach((key) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error + setValue(key as Path, finalSecrets[key]) }) } - }, [remoteSecrets]) + }, [remoteSecrets, currentVendorConfig]) + + useEffect(() => { + updateModelTypeVendorName(currentModelType, currentVendorName) + }, [currentModelType, currentVendorName]) const onSubmit = async (data: FormData) => { setLoading(true) try { await saveSecrets(data) + await refetchSecretes() toast.success(t('chat_page.toast_save_success')) } finally { @@ -81,9 +140,23 @@ function BaseSecretsSettings_>(props: BaseS } return + {IS_SAFE && + + } + {formConfig.map((formItemConfig, index) => { const buildViewState: BaseSecretsSettingsFormItemBuildViewState = { useFormReturns, + currentVendorConfig, } return {formItemConfig.buildView(buildViewState)} @@ -91,7 +164,7 @@ function BaseSecretsSettings_>(props: BaseS })} diff --git a/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/openai-settings/secrets-settings.tsx b/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/openai-settings/secrets-settings.tsx index b210d710..4063ef92 100644 --- a/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/openai-settings/secrets-settings.tsx +++ b/packages/gpt-runner-web/client/src/pages/chat/components/settings/components/model-settings/openai-settings/secrets-settings.tsx @@ -5,9 +5,10 @@ import { VSCodeLink } from '@vscode/webview-ui-toolkit/react' import { useTranslation } from 'react-i18next' import { HookFormInput } from '../../../../../../../components/hook-form/hook-form-input' import { HookFormTextarea } from '../../../../../../../components/hook-form/hook-form-textarea' -import { BaseSecretsSettings, type BaseSecretsSettingsFormItemConfig } from '../base-secrets-settings' +import { BaseSecretsSettings } from '../base-secrets-settings' +import type { BaseSecretsFormData, BaseSecretsSettingsFormItemConfig } from '../base-secrets-settings' -interface FormData extends Pick { +interface FormData extends Pick, BaseSecretsFormData { } export interface OpenaiSecretsSettingsProps { @@ -19,12 +20,13 @@ export const OpenaiSecretsSettings: FC = memo((props const formConfig: BaseSecretsSettingsFormItemConfig[] = [ { name: 'apiKey', - buildView: ({ useFormReturns: { control, formState } }) => { + buildView: ({ useFormReturns: { control, formState }, currentVendorConfig }) => { return <> = memo((props }, { name: 'basePath', - buildView: ({ useFormReturns: { control, formState } }) => { + buildView: ({ useFormReturns: { control, formState }, currentVendorConfig }) => { return <> @@ -47,11 +50,12 @@ export const OpenaiSecretsSettings: FC = memo((props }, }, { name: 'accessToken', - buildView: ({ useFormReturns: { control, formState } }) => { + buildView: ({ useFormReturns: { control, formState }, currentVendorConfig }) => { return <> { // any status will scroll down useEffect(() => { scrollDown() - }, [chatInstance?.status, scrollDownRef.current, scrollDown]) + }, [chatInstance?.status, scrollDownRef.current, scrollDown, chatInstance?.id]) // if is pending and scroll bottom is less than 40, scroll down // when you scroll by yourself, scrollDown will stop auto scrollDown diff --git a/packages/gpt-runner-web/client/src/router.tsx b/packages/gpt-runner-web/client/src/router.tsx index 5f902172..e80f9906 100644 --- a/packages/gpt-runner-web/client/src/router.tsx +++ b/packages/gpt-runner-web/client/src/router.tsx @@ -8,6 +8,7 @@ import Error404 from './pages/error/404' import { useLoading } from './hooks/use-loading.hook' import Chat from './pages/chat' import { getGlobalConfig } from './helpers/global-config' +import { Layout } from './views/layout' const HackRouter: FC = () => { const navigate = useNavigate() @@ -46,14 +47,16 @@ export const AppRouter: FC = () => { {loading && } }> - - - - } /> - } /> - } /> - - + + + + + } /> + } /> + } /> + + + ) diff --git a/packages/gpt-runner-web/client/src/store/zustand/global/chat.slice.ts b/packages/gpt-runner-web/client/src/store/zustand/global/chat.slice.ts index 16f06a9d..b5da4882 100644 --- a/packages/gpt-runner-web/client/src/store/zustand/global/chat.slice.ts +++ b/packages/gpt-runner-web/client/src/store/zustand/global/chat.slice.ts @@ -8,6 +8,7 @@ import { getGlobalConfig } from '../../../helpers/global-config' import { useTempStore } from '../temp' import type { SidebarTreeItem, SidebarTreeSlice } from './sidebar-tree.slice' import type { FileTreeSlice } from './file-tree.slice' +import type { GeneralSlice } from './general.slice' export enum GenerateAnswerType { Generate = 'generate', @@ -67,7 +68,7 @@ const chatIdChatInstanceMap = new Map() const singleFilePathChatInstancesMap = new Map() export const createChatSlice: StateCreator< - ChatSlice & SidebarTreeSlice & FileTreeSlice, + ChatSlice & SidebarTreeSlice & FileTreeSlice & GeneralSlice, [], [], ChatSlice @@ -312,6 +313,7 @@ export const createChatSlice: StateCreator< editingFilePath: shouldProvideEditingPath ? tempState.ideActiveFilePath : undefined, overrideModelType: state.overrideModelType || undefined, overrideModelsConfig: state.overrideModelsConfig, + modelTypeVendorNameMap: state.modelTypeVendorNameMap, rootPath: getGlobalConfig().rootPath, onError(e) { console.error('fetchLlmStream error:', e) diff --git a/packages/gpt-runner-web/client/src/store/zustand/global/general.slice.ts b/packages/gpt-runner-web/client/src/store/zustand/global/general.slice.ts index e57e3691..69001ecf 100644 --- a/packages/gpt-runner-web/client/src/store/zustand/global/general.slice.ts +++ b/packages/gpt-runner-web/client/src/store/zustand/global/general.slice.ts @@ -1,5 +1,5 @@ import type { StateCreator } from 'zustand' -import type { LocaleLang } from '@nicepkg/gpt-runner-shared/common' +import type { ChatModelType, LocaleLang, ModelTypeVendorNameMap } from '@nicepkg/gpt-runner-shared/common' import type { GetState } from '../types' import type { ThemeName } from '../../../styles/themes' import { getGlobalConfig } from '../../../helpers/global-config' @@ -7,8 +7,10 @@ import { getGlobalConfig } from '../../../helpers/global-config' export interface GeneralSlice { langId: LocaleLang themeName: ThemeName + modelTypeVendorNameMap: ModelTypeVendorNameMap updateLangId: (langId: LocaleLang) => void updateThemeName: (themeName: ThemeName) => void + updateModelTypeVendorName: (modelType: ChatModelType, vendorName: string) => void } export type GeneralState = GetState @@ -17,6 +19,8 @@ function getInitialState() { return { langId: getGlobalConfig().defaultLangId, themeName: getGlobalConfig().defaultTheme, + modelTypeVendorNameMap: { + }, } satisfies GeneralState } @@ -33,4 +37,13 @@ export const createGeneralSlice: StateCreator< updateThemeName(themeName) { set({ themeName }) }, + updateModelTypeVendorName(modelType, vendorName) { + const state = get() + set({ + modelTypeVendorNameMap: { + ...state.modelTypeVendorNameMap, + [modelType]: vendorName, + }, + }) + }, }) diff --git a/packages/gpt-runner-web/client/src/store/zustand/temp/index.ts b/packages/gpt-runner-web/client/src/store/zustand/temp/index.ts index ce7f8808..1a005000 100644 --- a/packages/gpt-runner-web/client/src/store/zustand/temp/index.ts +++ b/packages/gpt-runner-web/client/src/store/zustand/temp/index.ts @@ -2,16 +2,18 @@ import type { StateCreator } from 'zustand' import type { GetState } from '../types' import { createStore } from '../utils' import { FileSidebarTreeItem } from '../global/file-tree.slice' -import { BaseResponse, GetCommonFilesResData, travelTree } from '@nicepkg/gpt-runner-shared/common' +import { BaseResponse, CurrentAppConfig, GetCommonFilesResData, travelTree } from '@nicepkg/gpt-runner-shared/common' import { useGlobalStore } from '../global' export interface TempSlice { + currentAppConfig: CurrentAppConfig | null userSelectedText: string ideActiveFilePath: string ideOpeningFilePaths: string[] filesTree: FileSidebarTreeItem[] fullPathFileMap: Record filesRelativePaths: string[] + updateCurrentAppConfig: (currentAppConfig: Partial | null) => void updateIdeSelectedText: (userSelectedText: string) => void updateIdeActiveFilePath: (ideActiveFilePath: string) => void updateIdeOpeningFilePaths: (ideOpeningFilePaths: string[] | ((oldIdeOpeningFilePaths: string[]) => string[])) => void @@ -26,6 +28,7 @@ export type TempState = GetState function getInitialState() { return { + currentAppConfig: null, userSelectedText: '', ideActiveFilePath: '', ideOpeningFilePaths: [], @@ -42,6 +45,15 @@ export const createTempSlice: StateCreator< TempSlice > = (set, get) => ({ ...getInitialState(), + updateCurrentAppConfig(currentAppConfig) { + const state = get() + set({ + currentAppConfig: { + ...state.currentAppConfig!, + ...currentAppConfig + }, + }) + }, updateIdeSelectedText(userSelectedText) { set({ userSelectedText, diff --git a/packages/gpt-runner-web/client/src/views/layout/index.tsx b/packages/gpt-runner-web/client/src/views/layout/index.tsx new file mode 100644 index 00000000..33590ef3 --- /dev/null +++ b/packages/gpt-runner-web/client/src/views/layout/index.tsx @@ -0,0 +1,102 @@ +import { useMutation, useQuery } from '@tanstack/react-query' +import type { ReactNode } from 'react' +import { memo, useMemo } from 'react' +import type { MarkAsVisitedAppConfigReqParams } from '@nicepkg/gpt-runner-shared/common' +import { useTempStore } from '../../store/zustand/temp' +import { useGlobalStore } from '../../store/zustand/global' +import { fetchAppConfig, markAsVisitedAppConfig } from '../../networks/config' +import { Modal } from '../../components/modal' +import { MessageTextView } from '../../components/chat-message-text-view' + +export interface LayoutProps { + children?: ReactNode +} + +export const Layout = memo((props: LayoutProps) => { + const { children } = props + const { currentAppConfig, updateCurrentAppConfig } = useTempStore() + const { langId } = useGlobalStore() + + // update app config + useQuery({ + queryKey: ['app-config', langId], + enabled: !!langId, + queryFn: () => fetchAppConfig({ + langId, + }), + onSuccess(data) { + const currentAppConfig = data.data + + if (currentAppConfig) + updateCurrentAppConfig(currentAppConfig) + }, + }) + + const { mutate: markVisitedModal } = useMutation({ + mutationFn: (params: MarkAsVisitedAppConfigReqParams) => markAsVisitedAppConfig(params), + }) + + const notificationConfig = currentAppConfig?.currentConfig?.notificationConfig + const releaseConfig = currentAppConfig?.currentConfig?.releaseConfig + + const releaseLog = useMemo(() => { + let content = '' + releaseConfig?.changeLogs.forEach((log) => { + content += `## ${log.version}\n` + content += `${log.changes}\n\n` + }) + return content + }, [releaseConfig?.changeLogs]) + + return <> + {/* notification modal */} + { + markVisitedModal({ + types: ['notificationDate'], + }) + updateCurrentAppConfig({ + showNotificationModal: false, + }) + }} + > + + + + {/* release log modal */} + { + markVisitedModal({ + types: ['releaseDate'], + }) + updateCurrentAppConfig({ + showReleaseModal: false, + }) + }} + > + + + + {children} + +}) + +Layout.displayName = 'Layout' diff --git a/packages/gpt-runner-web/common.mjs b/packages/gpt-runner-web/common.mjs index 89a3196b..b045b56d 100644 --- a/packages/gpt-runner-web/common.mjs +++ b/packages/gpt-runner-web/common.mjs @@ -1 +1 @@ -export * from './common' +export * from './dist/common' diff --git a/packages/gpt-runner-web/package.json b/packages/gpt-runner-web/package.json index d330f62a..40ccd1ea 100644 --- a/packages/gpt-runner-web/package.json +++ b/packages/gpt-runner-web/package.json @@ -63,6 +63,7 @@ ], "scripts": { "build": "pnpm build:server & pnpm build:client", + "build:app-config": "esno ./scripts/build-app-config-json.ts", "build:client": "vite build --config ./client/vite.config.ts", "build:client:watch": "vite build --config ./client/vite.config.ts --watch", "build:server": "unbuild && pnpm tsc --build tsconfig.dts.json", @@ -73,13 +74,13 @@ }, "devDependencies": { "@hookform/resolvers": "^3.1.1", - "@kvs/node-localstorage": "^2.1.3", - "@kvs/storage": "^2.1.3", + "@kvs/node-localstorage": "^2.1.5", + "@kvs/storage": "^2.1.4", "@microsoft/fetch-event-source": "^2.0.1", "@monaco-editor/react": "^4.5.1", "@nicepkg/gpt-runner-core": "workspace:*", "@nicepkg/gpt-runner-shared": "workspace:*", - "@tanstack/react-query": "^4.29.25", + "@tanstack/react-query": "^4.32.0", "@types/connect-history-api-fallback": "^1.5.0", "@types/cors": "^2.8.13", "@types/express": "^4.17.17", @@ -100,12 +101,13 @@ "cross-env": "^7.0.3", "eventemitter": "^0.3.3", "express": "^4.18.2", - "framer-motion": "^10.13.0", + "framer-motion": "^10.13.1", "fs-extra": "^11.1.1", "global-agent": "^3.0.0", "i18next": "^23.2.11", "i18next-browser-languagedetector": "^7.1.0", "i18next-http-backend": "^2.2.1", + "js-base64": "^3.7.5", "keyboardjs": "^2.7.0", "lodash-es": "^4.17.21", "monaco-editor": "^0.40.0", @@ -121,11 +123,11 @@ "react-tiny-popover": "^7.2.4", "react-use": "^17.4.0", "remark-gfm": "^3.0.1", - "styled-components": "^6.0.4", + "styled-components": "^6.0.5", "undici": "^5.22.1", "unist-util-visit": "^5.0.0", "uuid": "^9.0.0", - "vite": "^4.4.4", + "vite": "^4.4.7", "vite-plugin-monaco-editor": "^1.1.0", "vite-plugin-svgr": "^3.2.0", "zustand": "^4.3.9" diff --git a/packages/gpt-runner-web/scripts/build-app-config-json.ts b/packages/gpt-runner-web/scripts/build-app-config-json.ts new file mode 100644 index 00000000..717e70e4 --- /dev/null +++ b/packages/gpt-runner-web/scripts/build-app-config-json.ts @@ -0,0 +1,23 @@ +import { FileUtils, PathUtils } from '@nicepkg/gpt-runner-shared/node' +import { appConfig } from '../server/index' + +async function buildAppConfigJson() { + try { + await FileUtils.writeFile({ + filePath: PathUtils.resolve(__dirname, '../assets/app-config.json'), + content: JSON.stringify(appConfig, null, 2), + valid: false, + }) + + console.log('buildAppConfigJson successfully') + } + catch (e) { + console.error(`buildAppConfigJson fail, could not be written: ${e}`) + } +} + +buildAppConfigJson().then(() => { + console.log('buildAppConfigJson done') +}).catch((e) => { + console.error('buildAppConfigJson error:', e) +}) diff --git a/packages/gpt-runner-web/scripts/common.gpt.txt b/packages/gpt-runner-web/scripts/common.gpt.txt deleted file mode 100644 index b14e98b9..00000000 --- a/packages/gpt-runner-web/scripts/common.gpt.txt +++ /dev/null @@ -1,24 +0,0 @@ -#01 You are a Senior Frontend developer. - -#02 Users will describe a project details you will code project with this tools: -react/typescript/styled-components/react-hook-form/react-use-query/zustand/@vscode/webview-ui-toolkit/react-use. - -#03 You can always write high-quality code, -such as high cohesion, low coupling, follow SOLID principles, etc. - -#04 Your responses should be informative and logical. - -#05 First think step-by-step - describe your plan for what to build in pseudocode, written out in great detail. - -#06 Then output the code in a single code block. - -#07 Minimize any other prose. - -#08 Keep your answers short and impersonal. - -#09 Use Markdown formatting in your answers. - -#10 Make sure to include the programming language name at the start of the Markdown code blocks. - -#11 Avoid wrapping the whole response in triple backticks. - diff --git a/packages/gpt-runner-web/scripts/generate-component.gpt.txt b/packages/gpt-runner-web/scripts/generate-component.gpt.txt deleted file mode 100644 index 7d1a69eb..00000000 --- a/packages/gpt-runner-web/scripts/generate-component.gpt.txt +++ /dev/null @@ -1,38 +0,0 @@ - -SystemPrompt: - -#01 You are a Senior Frontend developer. - -#02 Users will describe a project details you will code project with this tools: -react/typescript/styled-components/react-hook-form/react-use-query/zustand/@vscode/webview-ui-toolkit/react-use. - -#03 You can always write high-quality code, -such as high cohesion, low coupling, follow SOLID principles, etc. - -#04 Your responses should be informative and logical. - -#05 First think step-by-step - describe your plan for what to build in pseudocode, written out in great detail. - -#06 Then output the code in a single code block. - -#07 Minimize any other prose. - -#08 Keep your answers short and impersonal. - -#09 Use Markdown formatting in your answers. - -#10 Make sure to include the programming language name at the start of the Markdown code blocks. - -#11 Avoid wrapping the whole response in triple backticks. - - -Users: - -please help me to write a compnent with react + ts, i will give you a component interface props, -please write a component with this props with my stack tools, -BTW, here is my css vars: -var(--background), var(--border-width), var(--contrast-active-border), var(--contrast-border), var(--corner-radius), var(--design-unit), var(--disabled-opacity), var(--focus-border), var(--font-family), var(--font-weight), var(--foreground), var(--input-height), var(--input-min-width), var(--type-ramp-base-font-size), var(--type-ramp-base-line-height), var(--type-ramp-minus1-font-size), var(--type-ramp-minus1-line-height), var(--type-ramp-minus2-font-size), var(--type-ramp-minus2-line-height), var(--type-ramp-plus1-font-size), var(--type-ramp-plus1-line-height), var(--scrollbarWidth), var(--scrollbarHeight), var(--scrollbar-slider-background), var(--scrollbar-slider-hover-background), var(--scrollbar-slider-active-background), var(--badge-background), var(--badge-foreground), var(--button-border), var(--button-icon-background), var(--button-icon-corner-radius), var(--button-icon-outline-offset), var(--button-icon-hover-background), var(--button-icon-padding), var(--button-primary-background), var(--button-primary-foreground), var(--button-primary-hover-background), var(--button-secondary-background), var(--button-secondary-foreground), var(--button-secondary-hover-background), var(--button-padding-horizontal), var(--button-padding-vertical), var(--checkbox-background), var(--checkbox-border), var(--checkbox-corner-radius), var(--checkbox-foreground), var(--list-active-selection-background), var(--list-active-selection-foreground), var(--list-hover-background), var(--divider-background), var(--dropdown-background), var(--dropdown-border), var(--dropdown-foreground), var(--dropdown-list-max-height), var(--input-background), var(--input-foreground), var(--input-placeholder-foreground), var(--link-active-foreground), var(--link-foreground), var(--progress-background), var(--panel-tab-active-border), var(--panel-tab-active-foreground), var(--panel-tab-foreground), var(--panel-view-background), var(--panel-view-border), var(--tag-corner-radius), - -my props is: - - diff --git a/packages/gpt-runner-web/server/index.ts b/packages/gpt-runner-web/server/index.ts index 772cbe52..ec7bcccb 100644 --- a/packages/gpt-runner-web/server/index.ts +++ b/packages/gpt-runner-web/server/index.ts @@ -8,6 +8,8 @@ import { setProxyUrl } from './src/proxy' import { processControllers } from './src/controllers' import { errorHandlerMiddleware, safeCheckMiddleware } from './src/middleware' +export * from './src/helpers/app-config' + const dirname = PathUtils.getCurrentDirName(import.meta.url, () => __dirname) const resolvePath = (...paths: string[]) => PathUtils.resolve(dirname, ...paths) diff --git a/packages/gpt-runner-web/server/src/controllers/common-files.controller.ts b/packages/gpt-runner-web/server/src/controllers/common-files.controller.ts index 63918149..9a675623 100644 --- a/packages/gpt-runner-web/server/src/controllers/common-files.controller.ts +++ b/packages/gpt-runner-web/server/src/controllers/common-files.controller.ts @@ -2,7 +2,7 @@ import { PathUtils, sendSuccessResponse, verifyParamsByZod } from '@nicepkg/gpt- import { DEFAULT_EXCLUDE_FILE_EXTS, type GetCommonFilesReqParams, GetCommonFilesReqParamsSchema, type GetCommonFilesResData } from '@nicepkg/gpt-runner-shared/common' import { getCommonFileTree, loadUserConfig } from '@nicepkg/gpt-runner-core' import type { ControllerConfig } from '../types' -import { getValidFinalPath } from '../services/valid-path' +import { getValidFinalPath } from '../helpers/valid-path' export const commonFilesControllers: ControllerConfig = { namespacePath: '/common-files', diff --git a/packages/gpt-runner-web/server/src/controllers/config.controller.ts b/packages/gpt-runner-web/server/src/controllers/config.controller.ts index 6df481cc..ea2feb0a 100644 --- a/packages/gpt-runner-web/server/src/controllers/config.controller.ts +++ b/packages/gpt-runner-web/server/src/controllers/config.controller.ts @@ -1,10 +1,11 @@ import { checkNodeVersion, sendSuccessResponse, verifyParamsByZod } from '@nicepkg/gpt-runner-shared/node' -import type { GetProjectConfigResData, GetUserConfigReqParams, GetUserConfigResData } from '@nicepkg/gpt-runner-shared/common' -import { EnvConfig, GetUserConfigReqParamsSchema, removeUserConfigUnsafeKey } from '@nicepkg/gpt-runner-shared/common' +import type { GetAppConfigReqParams, GetAppConfigResData, GetProjectConfigResData, GetUserConfigReqParams, GetUserConfigResData, MarkAsVisitedAppConfigReqParams, MarkAsVisitedAppConfigResData } from '@nicepkg/gpt-runner-shared/common' +import { EnvConfig, GetAppConfigReqParamsSchema, GetUserConfigReqParamsSchema, MarkAsVisitedAppConfigReqParamsSchema, removeUserConfigUnsafeKey } from '@nicepkg/gpt-runner-shared/common' import { loadUserConfig } from '@nicepkg/gpt-runner-core' import pkg from '../../../package.json' import type { ControllerConfig } from '../types' -import { getValidFinalPath } from '../services/valid-path' +import { getValidFinalPath } from '../helpers/valid-path' +import { AppConfigService } from '../services/app-config.service' export const configControllers: ControllerConfig = { namespacePath: '/config', @@ -61,5 +62,42 @@ export const configControllers: ControllerConfig = { }) }, }, + { + url: '/app-config', + method: 'get', + handler: async (req, res) => { + const query = req.query as GetAppConfigReqParams + + verifyParamsByZod(query, GetAppConfigReqParamsSchema) + + const { langId } = query + + langId && AppConfigService.instance.updateLangId(langId) + const currentAppConfig = await AppConfigService.instance.getCurrentAppConfig(true) + + sendSuccessResponse(res, { + data: { + ...currentAppConfig, + } satisfies GetAppConfigResData, + }) + }, + }, + { + url: '/mark-as-visited-app-config', + method: 'post', + handler: async (req, res) => { + const body = req.body as MarkAsVisitedAppConfigReqParams + + verifyParamsByZod(body, MarkAsVisitedAppConfigReqParamsSchema) + + const { types } = body + + await AppConfigService.instance.markedAsVisited(types) + + sendSuccessResponse(res, { + data: null satisfies MarkAsVisitedAppConfigResData, + }) + }, + }, ], } diff --git a/packages/gpt-runner-web/server/src/controllers/editor.controller.ts b/packages/gpt-runner-web/server/src/controllers/editor.controller.ts index 512da0ab..548d2a12 100644 --- a/packages/gpt-runner-web/server/src/controllers/editor.controller.ts +++ b/packages/gpt-runner-web/server/src/controllers/editor.controller.ts @@ -2,7 +2,7 @@ import { FileUtils, PathUtils, launchEditorByPathAndContent, sendSuccessResponse import type { CreateFilePathReqParams, CreateFilePathResData, DeleteFilePathReqParams, DeleteFilePathResData, GetFileInfoReqParams, GetFileInfoResData, OpenEditorReqParams, OpenEditorResData, RenameFilePathReqParams, RenameFilePathResData, SaveFileContentReqParams, SaveFileContentResData } from '@nicepkg/gpt-runner-shared/common' import { CreateFilePathReqParamsSchema, DeleteFilePathReqParamsSchema, GetFileInfoReqParamsSchema, OpenEditorReqParamsSchema, RenameFilePathReqParamsSchema, SaveFileContentReqParamsSchema } from '@nicepkg/gpt-runner-shared/common' import type { ControllerConfig } from '../types' -import { getValidFinalPath } from '../services/valid-path' +import { getValidFinalPath } from '../helpers/valid-path' export const editorControllers: ControllerConfig = { namespacePath: '/editor', diff --git a/packages/gpt-runner-web/server/src/controllers/gpt-files.controller.ts b/packages/gpt-runner-web/server/src/controllers/gpt-files.controller.ts index 21986f92..1c078670 100644 --- a/packages/gpt-runner-web/server/src/controllers/gpt-files.controller.ts +++ b/packages/gpt-runner-web/server/src/controllers/gpt-files.controller.ts @@ -4,7 +4,7 @@ import { sendSuccessResponse, verifyParamsByZod } from '@nicepkg/gpt-runner-shar import type { GetGptFileInfoReqParams, GetGptFileInfoResData, GetGptFilesReqParams, GetGptFilesResData, InitGptFilesReqParams, InitGptFilesResData } from '@nicepkg/gpt-runner-shared/common' import { Debug, GetGptFileInfoReqParamsSchema, GetGptFilesReqParamsSchema, InitGptFilesReqParamsSchema, removeUserConfigUnsafeKey } from '@nicepkg/gpt-runner-shared/common' import type { ControllerConfig } from '../types' -import { getValidFinalPath } from '../services/valid-path' +import { getValidFinalPath } from '../helpers/valid-path' export const gptFilesControllers: ControllerConfig = { namespacePath: '/gpt-files', diff --git a/packages/gpt-runner-web/server/src/controllers/llm.controller.ts b/packages/gpt-runner-web/server/src/controllers/llm.controller.ts index c0d74d36..22e258b8 100644 --- a/packages/gpt-runner-web/server/src/controllers/llm.controller.ts +++ b/packages/gpt-runner-web/server/src/controllers/llm.controller.ts @@ -1,10 +1,10 @@ import type { Request, Response } from 'express' -import type { ChatModelType, ChatStreamReqParams, FailResponse, SingleFileConfig, SuccessResponse } from '@nicepkg/gpt-runner-shared/common' -import { ChatStreamReqParamsSchema, Debug, STREAM_DONE_FLAG, buildFailResponse, buildSuccessResponse, toUnixPath } from '@nicepkg/gpt-runner-shared/common' -import { PathUtils, verifyParamsByZod } from '@nicepkg/gpt-runner-shared/node' -import { createFileContext, getLLMChain, getSecrets, loadUserConfig, parseGptFile } from '@nicepkg/gpt-runner-core' -import { getValidFinalPath } from '../services/valid-path' +import type { ChatStreamReqParams, FailResponse, SuccessResponse } from '@nicepkg/gpt-runner-shared/common' +import { ChatStreamReqParamsSchema, Debug, STREAM_DONE_FLAG, buildFailResponse, buildSuccessResponse } from '@nicepkg/gpt-runner-shared/common' +import { verifyParamsByZod } from '@nicepkg/gpt-runner-shared/node' +import { getLLMChain } from '@nicepkg/gpt-runner-core' import type { ControllerConfig } from '../types' +import { LLMService } from '../services/llm.service' export const llmControllers: ControllerConfig = { namespacePath: '/chatgpt', @@ -26,60 +26,10 @@ export const llmControllers: ControllerConfig = { verifyParamsByZod(body, ChatStreamReqParamsSchema) const { - messages = [], prompt = '', - systemPrompt: systemPromptFromParams = '', - singleFilePath, - singleFileConfig: singleFileConfigFromParams, - appendSystemPrompt = '', - systemPromptAsUserPrompt = false, - contextFilePaths, - editingFilePath, - overrideModelType, - overrideModelsConfig, - rootPath, } = body - const finalPath = getValidFinalPath({ - path: rootPath, - assertType: 'directory', - fieldName: 'rootPath', - }) - - const { config: userConfig } = await loadUserConfig(finalPath) - - let singleFileConfig: SingleFileConfig | undefined = singleFileConfigFromParams - - if (singleFilePath && PathUtils.isFile(singleFilePath)) { - // keep realtime config - singleFileConfig = await parseGptFile({ - filePath: singleFilePath, - userConfig, - }) - } - - if (overrideModelType && overrideModelType !== singleFileConfig?.model?.type) { - singleFileConfig = { - model: { - type: overrideModelType, - }, - } - } - - const model = { - ...singleFileConfig?.model, - ...overrideModelsConfig?.[singleFileConfig?.model?.type as ChatModelType || ''], - } as SingleFileConfig['model'] - - const secretFromUserConfig = userConfig.model?.type === model?.type ? userConfig.model?.secrets : undefined - let secretsFromStorage = await getSecrets(model?.type as ChatModelType || null) - // if some secret value is '' or null or undefined, should remove - secretsFromStorage = Object.fromEntries(Object.entries(secretsFromStorage || {}).filter(([_, value]) => value != null && value !== '' && value !== undefined)) - - const finalSecrets = { - ...secretFromUserConfig, - ...secretsFromStorage, - } + const llmChainParams = await LLMService.getLLMChainParams(body) const sendSuccessData = (options: Omit) => { return res.write(`data: ${JSON.stringify(buildSuccessResponse(options))}\n\n`) @@ -90,32 +40,11 @@ export const llmControllers: ControllerConfig = { return res.write(`data: ${JSON.stringify(buildFailResponse(options))}\n\n`) } - debug.log('model config', model) + debug.log('model config', llmChainParams.model) try { - let finalSystemPrompt = systemPromptFromParams || singleFileConfig?.systemPrompt || '' - - // provide file context - if (contextFilePaths && finalPath) { - const fileContext = await createFileContext({ - rootPath: finalPath, - filePaths: contextFilePaths?.map(toUnixPath), - editingFilePath: toUnixPath(editingFilePath), - }) - - finalSystemPrompt += `\n${fileContext}\n` - } - - finalSystemPrompt += appendSystemPrompt - const llmChain = await getLLMChain({ - messages, - systemPrompt: finalSystemPrompt, - systemPromptAsUserPrompt, - model: { - ...model!, - secrets: finalSecrets, - }, + ...llmChainParams, onTokenStream: (token: string) => { sendSuccessData({ data: token }) }, diff --git a/packages/gpt-runner-web/server/src/controllers/storage.controller.ts b/packages/gpt-runner-web/server/src/controllers/storage.controller.ts index e5cc2ed7..2bd7162e 100644 --- a/packages/gpt-runner-web/server/src/controllers/storage.controller.ts +++ b/packages/gpt-runner-web/server/src/controllers/storage.controller.ts @@ -2,7 +2,7 @@ import { getStorage, sendSuccessResponse, verifyParamsByZod } from '@nicepkg/gpt import type { StorageClearReqParams, StorageClearResData, StorageGetItemReqParams, StorageGetItemResData, StorageRemoveItemReqParams, StorageRemoveItemResData, StorageSetItemReqParams, StorageSetItemResData } from '@nicepkg/gpt-runner-shared/common' import { ServerStorageName, StorageClearReqParamsSchema, StorageGetItemReqParamsSchema, StorageRemoveItemReqParamsSchema, StorageSetItemReqParamsSchema } from '@nicepkg/gpt-runner-shared/common' import type { ControllerConfig } from '../types' -import { handleStorageKeySet } from '../services/handle-storage-key-set' +import { handleStorageKeySet } from '../helpers/handle-storage-key-set' export const storageControllers: ControllerConfig = { namespacePath: '/storage', diff --git a/packages/gpt-runner-web/server/src/helpers/app-config/index.ts b/packages/gpt-runner-web/server/src/helpers/app-config/index.ts new file mode 100644 index 00000000..1551b807 --- /dev/null +++ b/packages/gpt-runner-web/server/src/helpers/app-config/index.ts @@ -0,0 +1,17 @@ +import type { AppConfig } from '@nicepkg/gpt-runner-shared/common' +import { LocaleLang } from '@nicepkg/gpt-runner-shared/common' +import { cnNotificationConfig, notificationConfig } from './notification.config' +import { releaseConfig } from './release.config' +import { cnVendorsConfig, vendorsConfig } from './vendors.config' + +export const appConfig: AppConfig = { + common: { + notificationConfig, + releaseConfig, + vendorsConfig, + }, + [LocaleLang.ChineseSimplified]: { + notificationConfig: cnNotificationConfig, + vendorsConfig: cnVendorsConfig, + }, +} diff --git a/packages/gpt-runner-web/server/src/helpers/app-config/notification.config.ts b/packages/gpt-runner-web/server/src/helpers/app-config/notification.config.ts new file mode 100644 index 00000000..dbab5234 --- /dev/null +++ b/packages/gpt-runner-web/server/src/helpers/app-config/notification.config.ts @@ -0,0 +1,25 @@ +import type { NotificationConfig } from '@nicepkg/gpt-runner-shared/common' + +export const notificationConfig: NotificationConfig = { + createAt: '2023-07-24 23:31:22', + title: 'GPT Runner Notification', + message: 'v1.2.0 is release', +} + +export const cnNotificationConfig: NotificationConfig = { + createAt: '2023-07-24 23:31:26', + title: 'GPT Runner 通知', + message: ` +### 版本更新到了 v1.2.0 +1. 重启 vscode 即可去扩展处更新 +2. cli 的执行 \`npm i -g gptr\` 即可更新 + +### 本次功能更新 +1. 针对语言为简体中文的用户提供 OpenAI API key 供应商,也就是你可以白嫖了。 +2. 点击左上角设置,切换供应商即可。 +3. 本次 API Key 由慷慨大方的 \`剑廿三\` 提供,让我们把掌声送给他。 + +### 交流 +1. 想进群交流的加 wechat: \`qq2214962083\` + `, +} diff --git a/packages/gpt-runner-web/server/src/helpers/app-config/release.config.ts b/packages/gpt-runner-web/server/src/helpers/app-config/release.config.ts new file mode 100644 index 00000000..abf668b3 --- /dev/null +++ b/packages/gpt-runner-web/server/src/helpers/app-config/release.config.ts @@ -0,0 +1,14 @@ +import type { ChangeLogConfig, ReleaseConfig } from '@nicepkg/gpt-runner-shared/common' + +const changeLogs: ChangeLogConfig[] = [ + { + releaseDate: '2023-07-24 23:40:59', + version: '1.2.0', + changes: 'fix some bug', + }, +] + +export const releaseConfig: ReleaseConfig = { + createAt: '2023-07-24 23:41:04', + changeLogs, +} diff --git a/packages/gpt-runner-web/server/src/helpers/app-config/vendors.config.ts b/packages/gpt-runner-web/server/src/helpers/app-config/vendors.config.ts new file mode 100644 index 00000000..ea11c809 --- /dev/null +++ b/packages/gpt-runner-web/server/src/helpers/app-config/vendors.config.ts @@ -0,0 +1,21 @@ +import type { VendorsConfig } from '@nicepkg/gpt-runner-shared/common' +import { ChatModelType } from '@nicepkg/gpt-runner-shared/common' + +export const vendorsConfig: VendorsConfig = { + createAt: '2023-07-24 23:40:49', + [ChatModelType.Openai]: [], + [ChatModelType.Anthropic]: [], +} + +export const cnVendorsConfig: VendorsConfig = { + createAt: '2023-07-24 23:40:49', + [ChatModelType.Openai]: [{ + vendorName: 'xabcai', + vendorSecrets: { + basePath: 'https://api.xabcai.com/v1', + // don't forgot it should be base64 + apiKey: 'c2stWHZQeGJQMVBySFduZDJFZ0xpa0lKTlQzOTNoc3pZdDdmN0NNZUozSE1pdkw2QVdx', + }, + }], + [ChatModelType.Anthropic]: [], +} diff --git a/packages/gpt-runner-web/server/src/services/handle-storage-key-set.ts b/packages/gpt-runner-web/server/src/helpers/handle-storage-key-set.ts similarity index 100% rename from packages/gpt-runner-web/server/src/services/handle-storage-key-set.ts rename to packages/gpt-runner-web/server/src/helpers/handle-storage-key-set.ts diff --git a/packages/gpt-runner-web/server/src/services/valid-path.ts b/packages/gpt-runner-web/server/src/helpers/valid-path.ts similarity index 100% rename from packages/gpt-runner-web/server/src/services/valid-path.ts rename to packages/gpt-runner-web/server/src/helpers/valid-path.ts diff --git a/packages/gpt-runner-web/server/src/services/app-config.service.ts b/packages/gpt-runner-web/server/src/services/app-config.service.ts new file mode 100644 index 00000000..d81ff5b0 --- /dev/null +++ b/packages/gpt-runner-web/server/src/services/app-config.service.ts @@ -0,0 +1,186 @@ +import type { AppConfig, ChatModelType, CommonAppConfig, CurrentAppConfig, GetModelConfigType, LastVisitModalDateRecord, MarkedAsVisitedType } from '@nicepkg/gpt-runner-shared/common' +import { EnvConfig, LocaleLang, ServerStorageName } from '@nicepkg/gpt-runner-shared/common' +import merge from 'lodash-es/merge' +import cloneDeep from 'lodash-es/cloneDeep' +import { getStorage } from '@nicepkg/gpt-runner-shared/node' +import { decode } from 'js-base64' + +export class AppConfigService implements CurrentAppConfig { + static _instance: AppConfigService + static REMOTE_CONFIG_LINK = 'https://raw.githubusercontent.com/nicepkg/gpt-runner/main/packages/gpt-runner-web/assets/app-config.json' + static UNSAFE_SECRETS_KEY = ['apiKey', 'accessToken'] + static LAST_VISIT_MODAL_DATE_KEY = 'last-visit-modal-date' + private loadAppConfigPromise?: Promise + private langId: LocaleLang + + public showNotificationModal: boolean + public showReleaseModal: boolean + public appConfig?: AppConfig | undefined + + public get currentConfig(): CommonAppConfig | undefined { + if (!this.appConfig) + return undefined + return AppConfigService.mergeAndGetCurrentAppConfig(this.appConfig, this.langId) + } + + static get instance(): AppConfigService { + if (!AppConfigService._instance) + AppConfigService._instance = new AppConfigService() + + return AppConfigService._instance + } + + constructor() { + this.langId = LocaleLang.English + this.showNotificationModal = false + this.showReleaseModal = false + } + + static async getAppConfig(): Promise { + return EnvConfig.get('NODE_ENV') === 'development' ? (await import('../../../assets/app-config.json')).default : await fetch(`${AppConfigService.REMOTE_CONFIG_LINK}?timestamp=${Date.now()}`).then(res => res.json()) + } + + static mergeAndGetCurrentAppConfig(appConfig: AppConfig, currentLang: LocaleLang): CommonAppConfig { + const commonConfig = appConfig.common + const currentLangConfig = appConfig[currentLang] + + if (!currentLangConfig) + return commonConfig + + const finalAppConfig: CommonAppConfig = merge({}, commonConfig, currentLangConfig) + + return finalAppConfig + } + + updateLangId(langId: LocaleLang) { + this.langId = langId + } + + async getStorage() { + const { storage } = await getStorage(ServerStorageName.GlobalState) + return storage + } + + async getCurrentAppConfig(safe = true): Promise { + if (!this.appConfig) + await this.loadAppConfig() + + await this.updateShouldShowModal() + + const result = { + showNotificationModal: this.showNotificationModal, + showReleaseModal: this.showReleaseModal, + currentConfig: this.currentConfig, + } + + const unsafeSecretKey = AppConfigService.UNSAFE_SECRETS_KEY + + if (result.currentConfig) { + const oldVendorsConfig = result.currentConfig.vendorsConfig + const newVendorsConfig = cloneDeep(oldVendorsConfig) + + Object.entries(oldVendorsConfig).forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach((modelVendorConfig, modelVendorConfigIndex) => { + Object.entries(modelVendorConfig?.vendorSecrets || {}).forEach(([secretKey, secretValue]) => { + if (unsafeSecretKey.includes(secretKey)) { + const decodedSecretValue = decode(String(secretValue || '')) + ;(newVendorsConfig as any)[key][modelVendorConfigIndex].vendorSecrets[secretKey] = safe ? '*'.repeat(decodedSecretValue.length) : decodedSecretValue + } + }) + }) + } + }) + + result.currentConfig.vendorsConfig = newVendorsConfig + } + + return result + } + + async getSecretsConfig(props: { + modelType: T + vendorName: string + }): Promise | undefined> { + if (!this.appConfig) + await this.loadAppConfig() + + const { modelType, vendorName } = props + const { currentConfig } = await this.getCurrentAppConfig(false) + let result: GetModelConfigType | undefined + + if (currentConfig) { + const modelVendors = currentConfig.vendorsConfig[modelType] + result = modelVendors?.find(vendor => vendor.vendorName === vendorName)?.vendorSecrets + } + + return result + } + + async loadAppConfig(): Promise { + if (this.appConfig) + return + + try { + if (!this.loadAppConfigPromise) + this.loadAppConfigPromise = AppConfigService.getAppConfig() + + const appConfig = await this.loadAppConfigPromise + this.appConfig = appConfig || null + } + finally { + this.loadAppConfigPromise = undefined + } + } + + async updateShouldShowModal(): Promise { + if (!this.appConfig) + await this.loadAppConfig() + + const currentConfig = this.currentConfig + const storage = await this.getStorage() + + const lastVisitModalDateRecord: LastVisitModalDateRecord | undefined | null = await storage.get(AppConfigService.LAST_VISIT_MODAL_DATE_KEY) + + const notificationDateFromConfig = currentConfig?.notificationConfig?.createAt + const notificationDateFromStorage = lastVisitModalDateRecord?.notificationDate + + const releaseDateFromConfig = currentConfig?.releaseConfig?.createAt + const releaseDateFromStorage = lastVisitModalDateRecord?.releaseDate + + /** + * date like 2021-02-03 12:30:21 + * return a is after b + */ + const dateIsAfter = (a: string | undefined | null, b: string | undefined | null, defaultValue = false) => { + if (!a || !b) + return defaultValue + + const aDate = new Date(a).getTime() + const bDate = new Date(b).getTime() + return aDate > bDate + } + + this.showNotificationModal = dateIsAfter(notificationDateFromConfig, notificationDateFromStorage, true) + this.showReleaseModal = dateIsAfter(releaseDateFromConfig, releaseDateFromStorage, true) + } + + async markedAsVisited(types: MarkedAsVisitedType[]): Promise { + const storage = await this.getStorage() + const currentConfig = this.currentConfig + const notificationDate = currentConfig?.notificationConfig?.createAt + const releaseDate = currentConfig?.releaseConfig?.createAt + const oldValue = await storage.get(AppConfigService.LAST_VISIT_MODAL_DATE_KEY) || {} + const newValue = { + ...oldValue, + } + + if (types.includes('notificationDate')) + newValue.notificationDate = notificationDate + + if (types.includes('releaseDate')) + newValue.releaseDate = releaseDate + + await storage.set(AppConfigService.LAST_VISIT_MODAL_DATE_KEY, newValue) + } +} diff --git a/packages/gpt-runner-web/server/src/services/llm.service.ts b/packages/gpt-runner-web/server/src/services/llm.service.ts new file mode 100644 index 00000000..9eabb396 --- /dev/null +++ b/packages/gpt-runner-web/server/src/services/llm.service.ts @@ -0,0 +1,127 @@ +import { ChatModelType, type ChatStreamReqParams, type SingleFileConfig, toUnixPath } from '@nicepkg/gpt-runner-shared/common' +import type { LLMChainParams } from '@nicepkg/gpt-runner-core' +import { createFileContext, getSecrets, loadUserConfig, parseGptFile } from '@nicepkg/gpt-runner-core' +import { PathUtils } from '@nicepkg/gpt-runner-shared/node' +import { getValidFinalPath } from '../helpers/valid-path' +import { AppConfigService } from './app-config.service' + +export class LLMService { + static async getLLMChainParams(params: ChatStreamReqParams): Promise { + const { + messages = [], + systemPrompt: systemPromptFromParams = '', + singleFilePath, + singleFileConfig: singleFileConfigFromParams, + appendSystemPrompt = '', + systemPromptAsUserPrompt = false, + contextFilePaths, + editingFilePath, + overrideModelType, + modelTypeVendorNameMap, + overrideModelsConfig, + rootPath, + } = params + + const finalPath = getValidFinalPath({ + path: rootPath, + assertType: 'directory', + fieldName: 'rootPath', + }) + + const { config: userConfig } = await loadUserConfig(finalPath) + + let singleFileConfig: SingleFileConfig | undefined = singleFileConfigFromParams + + if (singleFilePath && PathUtils.isFile(singleFilePath)) { + // keep realtime config + singleFileConfig = await parseGptFile({ + filePath: singleFilePath, + userConfig, + }) + } + + if (overrideModelType && overrideModelType !== singleFileConfig?.model?.type) { + singleFileConfig = { + model: { + type: overrideModelType, + }, + } + } + + const model = { + type: ChatModelType.Openai, + ...singleFileConfig?.model, + ...overrideModelsConfig?.[singleFileConfig?.model?.type as ChatModelType || ''], + } as SingleFileConfig['model'] + + const secretFromUserConfig = userConfig.model?.type === model?.type ? userConfig.model?.secrets : undefined + let secretsFromStorage = await getSecrets(model?.type as ChatModelType || null) + // if some secret value is '' or null or undefined, should remove + secretsFromStorage = Object.fromEntries(Object.entries(secretsFromStorage || {}).filter(([_, value]) => value != null && value !== '' && value !== undefined)) + + // if user use vendor secrets + const currentVendorName = modelTypeVendorNameMap?.[model!.type] || '' + const vendorSecrets = await AppConfigService.instance.getSecretsConfig({ + modelType: model!.type, + vendorName: currentVendorName, + }) + + const finalSecrets = vendorSecrets || { + ...secretFromUserConfig, + ...secretsFromStorage, + } + + const finalSystemPrompt = await LLMService.getFinalSystemPrompt({ + finalPath, + systemPrompt: systemPromptFromParams, + singleFileConfig, + appendSystemPrompt, + contextFilePaths, + editingFilePath, + }) + + return { + messages, + systemPrompt: finalSystemPrompt, + systemPromptAsUserPrompt, + model: { + ...model!, + secrets: finalSecrets, + }, + } + } + + static async getFinalSystemPrompt(params: { + finalPath: string + systemPrompt: string + singleFileConfig?: SingleFileConfig + appendSystemPrompt: string + contextFilePaths?: string[] + editingFilePath?: string + }): Promise { + const { + finalPath, + systemPrompt: systemPromptFromParams = '', + singleFileConfig, + appendSystemPrompt = '', + contextFilePaths, + editingFilePath, + } = params + + let finalSystemPrompt = systemPromptFromParams || singleFileConfig?.systemPrompt || '' + + // provide file context + if (contextFilePaths && finalPath) { + const fileContext = await createFileContext({ + rootPath: finalPath, + filePaths: contextFilePaths?.map(toUnixPath), + editingFilePath: toUnixPath(editingFilePath), + }) + + finalSystemPrompt += `\n${fileContext}\n` + } + + finalSystemPrompt += appendSystemPrompt + return finalSystemPrompt + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3227472d..cfb26d84 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@antfu/eslint-config': specifier: ^0.39.8 - version: 0.39.8(eslint@8.44.0)(typescript@5.1.6) + version: 0.39.8(eslint@8.45.0)(typescript@5.1.6) '@nicepkg/gpt-runner': specifier: workspace:* version: link:packages/gpt-runner @@ -36,8 +36,8 @@ importers: specifier: ^18.2.15 version: 18.2.15 '@vitejs/plugin-legacy': - specifier: ^4.1.0 - version: 4.1.0(terser@5.19.1)(vite@4.4.4) + specifier: ^4.1.1 + version: 4.1.1(terser@5.19.2)(vite@4.4.7) '@vitest/ui': specifier: ^0.33.0 version: 0.33.0(vitest@0.33.0) @@ -45,8 +45,8 @@ importers: specifier: ^9.1.1 version: 9.1.1 eslint: - specifier: 8.44.0 - version: 8.44.0 + specifier: 8.45.0 + version: 8.45.0 esno: specifier: ^0.17.0 version: 0.17.0 @@ -54,8 +54,8 @@ importers: specifier: ^7.1.1 version: 7.1.1 fast-glob: - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^3.3.1 + version: 3.3.1 fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -69,11 +69,11 @@ importers: specifier: ^13.2.3 version: 13.2.3 msw: - specifier: 1.2.2 - version: 1.2.2(typescript@5.1.6) + specifier: 1.2.3 + version: 1.2.3(typescript@5.1.6) pnpm: - specifier: 8.6.9 - version: 8.6.9 + specifier: 8.6.10 + version: 8.6.10 prettier: specifier: ^3.0.0 version: 3.0.0 @@ -87,14 +87,14 @@ importers: specifier: ^7.5.4 version: 7.5.4 simple-git-hooks: - specifier: ^2.8.1 - version: 2.8.1 + specifier: ^2.9.0 + version: 2.9.0 taze: specifier: ^0.11.2 version: 0.11.2 terser: - specifier: ^5.19.1 - version: 5.19.1 + specifier: ^5.19.2 + version: 5.19.2 tsup: specifier: ^7.1.0 version: 7.1.0(typescript@5.1.6) @@ -108,17 +108,17 @@ importers: specifier: ^0.16.6 version: 0.16.6(rollup@3.26.3) vite: - specifier: ^4.4.4 - version: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + specifier: ^4.4.7 + version: 4.4.7(@types/node@18.16.19)(terser@5.19.2) vite-plugin-inspect: specifier: ^0.7.33 - version: 0.7.33(rollup@3.26.3)(vite@4.4.4) + version: 0.7.33(rollup@3.26.3)(vite@4.4.7) vite-plugin-pages: specifier: ^0.31.0 - version: 0.31.0(vite@4.4.4) + version: 0.31.0(vite@4.4.7) vitest: specifier: ^0.33.0 - version: 0.33.0(@vitest/ui@0.33.0)(jsdom@22.1.0)(terser@5.19.1) + version: 0.33.0(@vitest/ui@0.33.0)(jsdom@22.1.0)(terser@5.19.2) packages/gpt-runner: dependencies: @@ -165,8 +165,8 @@ importers: specifier: ^5.2.4 version: 5.2.4 langchain: - specifier: ^0.0.112 - version: 0.0.112(ignore@5.2.4) + specifier: ^0.0.116 + version: 0.0.116(ignore@5.2.4) unconfig: specifier: ^0.3.9 version: 0.3.9 @@ -177,17 +177,17 @@ importers: packages/gpt-runner-shared: dependencies: '@kvs/node-localstorage': - specifier: ^2.1.3 - version: 2.1.3 + specifier: ^2.1.5 + version: 2.1.5 '@kvs/storage': - specifier: ^2.1.3 - version: 2.1.3 + specifier: ^2.1.4 + version: 2.1.4 axios: specifier: 1.3.4 version: 1.3.4(debug@4.3.4) cachedir: - specifier: ^2.3.0 - version: 2.3.0 + specifier: ^2.4.0 + version: 2.4.0 debug: specifier: ^4.3.4 version: 4.3.4 @@ -280,11 +280,11 @@ importers: specifier: ^3.1.1 version: 3.1.1(react-hook-form@7.45.2) '@kvs/node-localstorage': - specifier: ^2.1.3 - version: 2.1.3 + specifier: ^2.1.5 + version: 2.1.5 '@kvs/storage': - specifier: ^2.1.3 - version: 2.1.3 + specifier: ^2.1.4 + version: 2.1.4 '@microsoft/fetch-event-source': specifier: ^2.0.1 version: 2.0.1 @@ -298,8 +298,8 @@ importers: specifier: workspace:* version: link:../gpt-runner-shared '@tanstack/react-query': - specifier: ^4.29.25 - version: 4.29.25(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.32.0 + version: 4.32.0(react-dom@18.2.0)(react@18.2.0) '@types/connect-history-api-fallback': specifier: ^1.5.0 version: 1.5.0 @@ -335,7 +335,7 @@ importers: version: 10.2.27(react@18.2.0) '@vitejs/plugin-react': specifier: ^4.0.3 - version: 4.0.3(vite@4.4.4) + version: 4.0.3(vite@4.4.7) '@vscode/webview-ui-toolkit': specifier: ^1.2.2 version: 1.2.2(react@18.2.0) @@ -361,8 +361,8 @@ importers: specifier: ^4.18.2 version: 4.18.2 framer-motion: - specifier: ^10.13.0 - version: 10.13.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^10.13.1 + version: 10.13.1(react-dom@18.2.0)(react@18.2.0) fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -378,6 +378,9 @@ importers: i18next-http-backend: specifier: ^2.2.1 version: 2.2.1 + js-base64: + specifier: ^3.7.5 + version: 3.7.5 keyboardjs: specifier: ^2.7.0 version: 2.7.0 @@ -424,8 +427,8 @@ importers: specifier: ^3.0.1 version: 3.0.1 styled-components: - specifier: ^6.0.4 - version: 6.0.4(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.0.5 + version: 6.0.5(react-dom@18.2.0)(react@18.2.0) undici: specifier: ^5.22.1 version: 5.22.1 @@ -436,14 +439,14 @@ importers: specifier: ^9.0.0 version: 9.0.0 vite: - specifier: ^4.4.4 - version: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + specifier: ^4.4.7 + version: 4.4.7(@types/node@18.16.19)(terser@5.19.2) vite-plugin-monaco-editor: specifier: ^1.1.0 version: 1.1.0(monaco-editor@0.40.0) vite-plugin-svgr: specifier: ^3.2.0 - version: 3.2.0(rollup@3.26.3)(vite@4.4.4) + version: 3.2.0(rollup@3.26.3)(vite@4.4.7) zustand: specifier: ^4.3.9 version: 4.3.9(react@18.2.0) @@ -464,34 +467,34 @@ importers: version: 1.23.3 '@docusaurus/core': specifier: ^2.4.1 - version: 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/logger': specifier: ^2.4.1 version: 2.4.1 '@docusaurus/plugin-client-redirects': specifier: ^2.4.1 - version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/plugin-ideal-image': specifier: ^2.4.1 - version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/plugin-pwa': specifier: ^2.4.1 - version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/preset-classic': specifier: ^2.4.1 - version: 2.4.1(@algolia/client-search@4.17.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@algolia/client-search@4.17.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/remark-plugin-npm2yarn': specifier: ^2.4.1 version: 2.4.1 '@docusaurus/theme-classic': specifier: ^2.4.1 - version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/theme-common': specifier: ^2.4.1 - version: 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/theme-mermaid': specifier: ^2.4.1 - version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + version: 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/utils': specifier: ^2.4.1 version: 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) @@ -567,7 +570,7 @@ importers: devDependencies: '@docusaurus/eslint-plugin': specifier: ^2.4.1 - version: 2.4.1(eslint@8.44.0)(typescript@5.1.6) + version: 2.4.1(eslint@8.45.0)(typescript@5.1.6) '@tsconfig/docusaurus': specifier: ^1.0.7 version: 1.0.7 @@ -712,24 +715,24 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - /@antfu/eslint-config-basic@0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6): + /@antfu/eslint-config-basic@0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-HvxNu11NRpX/DHmcMcA2KenY/IIy3THEn5tpizg6vPIp3ZYSNkW3ov6sK2wxCd1S8Rwl/65566wplJ8xTYe0EA==} peerDependencies: eslint: '>=7.4.0' dependencies: - eslint: 8.44.0 - eslint-plugin-antfu: 0.39.8(eslint@8.44.0)(typescript@5.1.6) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.44.0) + eslint: 8.45.0 + eslint-plugin-antfu: 0.39.8(eslint@8.45.0)(typescript@5.1.6) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.45.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.1.0)(eslint@8.44.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.44.0) - eslint-plugin-markdown: 3.0.0(eslint@8.44.0) - eslint-plugin-n: 16.0.1(eslint@8.44.0) + eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.1.0)(eslint@8.45.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.45.0) + eslint-plugin-markdown: 3.0.0(eslint@8.45.0) + eslint-plugin-n: 16.0.1(eslint@8.45.0) eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-promise: 6.1.1(eslint@8.44.0) - eslint-plugin-unicorn: 48.0.0(eslint@8.44.0) - eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.44.0) - eslint-plugin-yml: 1.8.0(eslint@8.44.0) + eslint-plugin-promise: 6.1.1(eslint@8.45.0) + eslint-plugin-unicorn: 48.0.0(eslint@8.45.0) + eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.45.0) + eslint-plugin-yml: 1.8.0(eslint@8.45.0) jsonc-eslint-parser: 2.3.0 yaml-eslint-parser: 1.2.2 transitivePeerDependencies: @@ -741,17 +744,17 @@ packages: - typescript dev: true - /@antfu/eslint-config-ts@0.39.8(eslint@8.44.0)(typescript@5.1.6): + /@antfu/eslint-config-ts@0.39.8(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-oMkIzxxD+sdHpO7Ctk+ej1SCZAoSbPMGyqjfaGLqpaxh87gP7LSFlm6QpsdIWllnTyYB75Hk8LMqFQWCJU9dxw==} peerDependencies: eslint: '>=7.4.0' typescript: '>=3.9' dependencies: - '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/parser': 6.1.0(eslint@8.44.0)(typescript@5.1.6) - eslint: 8.44.0 - eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.44.0)(typescript@5.1.6) + '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.45.0)(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -760,15 +763,15 @@ packages: - supports-color dev: true - /@antfu/eslint-config-vue@0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6): + /@antfu/eslint-config-vue@0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-BeBRdI8Bm0d9ppomvmPkrIim4IEW4ZHZHsGw2qSw/mSDZwprLyGi9tgNMnoHbN9OBGQwveuurdKFlJz5SlCjrA==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6) - '@antfu/eslint-config-ts': 0.39.8(eslint@8.44.0)(typescript@5.1.6) - eslint: 8.44.0 - eslint-plugin-vue: 9.15.1(eslint@8.44.0) + '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + '@antfu/eslint-config-ts': 0.39.8(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 + eslint-plugin-vue: 9.15.1(eslint@8.45.0) local-pkg: 0.4.3 transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' @@ -780,24 +783,24 @@ packages: - typescript dev: true - /@antfu/eslint-config@0.39.8(eslint@8.44.0)(typescript@5.1.6): + /@antfu/eslint-config@0.39.8(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-KnDjLw6UEoHdEzB6CzQMm+EkA4ZI94r1Of1rRRw0qxhkFhD/+SQ2BTBgmF5d4wTsU0IT1Dk5JjJ6J/cVFKdXWQ==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-vue': 0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/parser': 6.1.0(eslint@8.44.0)(typescript@5.1.6) - eslint: 8.44.0 - eslint-plugin-eslint-comments: 3.2.0(eslint@8.44.0) + '@antfu/eslint-config-vue': 0.39.8(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 + eslint-plugin-eslint-comments: 3.2.0(eslint@8.45.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.1.0)(eslint@8.44.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.44.0) - eslint-plugin-n: 16.0.1(eslint@8.44.0) - eslint-plugin-promise: 6.1.1(eslint@8.44.0) - eslint-plugin-unicorn: 48.0.0(eslint@8.44.0) - eslint-plugin-vue: 9.15.1(eslint@8.44.0) - eslint-plugin-yml: 1.8.0(eslint@8.44.0) + eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.1.0)(eslint@8.45.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.45.0) + eslint-plugin-n: 16.0.1(eslint@8.45.0) + eslint-plugin-promise: 6.1.1(eslint@8.45.0) + eslint-plugin-unicorn: 48.0.0(eslint@8.45.0) + eslint-plugin-vue: 9.15.1(eslint@8.45.0) + eslint-plugin-yml: 1.8.0(eslint@8.45.0) jsonc-eslint-parser: 2.3.0 yaml-eslint-parser: 1.2.2 transitivePeerDependencies: @@ -820,19 +823,17 @@ packages: resolution: {integrity: sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg==} dev: true - /@anthropic-ai/sdk@0.5.4: - resolution: {integrity: sha512-XgBPW1VNwIh3u6rIsY3+cio6Z5kw2nIFxodrM8Y4bQG+nTFaGVX56kTyZkBzDzNkrBl9xnux+iflWCVTebBhBw==} + /@anthropic-ai/sdk@0.5.8: + resolution: {integrity: sha512-iHenjcE2Q/az6VZiP1DueOSvKNRmxsly6Rx2yjJBoy7OBYVFGVjEdgs2mPQHtTX0ibKAR7tPq6F6MQbKDPWcKg==} dependencies: '@types/node': 18.16.19 '@types/node-fetch': 2.6.4 - '@types/qs': 6.9.7 abort-controller: 3.0.0 agentkeepalive: 4.3.0 digest-fetch: 1.3.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.6.11 - qs: 6.11.0 transitivePeerDependencies: - encoding - supports-color @@ -885,13 +886,18 @@ packages: resolution: {integrity: sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==} engines: {node: '>=6.9.0'} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.12.9: resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.7 - '@babel/helper-module-transforms': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.12.9) '@babel/helpers': 7.22.6 '@babel/parser': 7.22.7 '@babel/template': 7.22.5 @@ -953,6 +959,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.22.9: + resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helpers': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator@7.22.5: resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} @@ -971,6 +1000,15 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 + /@babel/generator@7.22.9: + resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -1036,6 +1074,34 @@ packages: browserslist: 4.21.9 lru-cache: 5.1.1 + /@babel/helper-compilation-targets@7.22.6(@babel/core@7.22.9): + resolution: {integrity: sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.6 + '@babel/core': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + '@nicolo-ribaudo/semver-v6': 6.3.3 + browserslist: 4.21.9 + lru-cache: 5.1.1 + dev: true + + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.21.8(@babel/core@7.22.5): resolution: {integrity: sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==} engines: {node: '>=6.9.0'} @@ -1056,6 +1122,25 @@ packages: - supports-color dev: false + /@babel/helper-create-class-features-plugin@7.21.8(@babel/core@7.22.8): + resolution: {integrity: sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.5 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} engines: {node: '>=6.9.0'} @@ -1095,6 +1180,26 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-create-regexp-features-plugin@7.21.8(@babel/core@7.22.5): resolution: {integrity: sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g==} engines: {node: '>=6.9.0'} @@ -1118,6 +1223,18 @@ packages: regexpu-core: 5.3.2 semver: 6.3.0 + /@babel/helper-create-regexp-features-plugin@7.21.8(@babel/core@7.22.9): + resolution: {integrity: sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.0 + dev: true + /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} engines: {node: '>=6.9.0'} @@ -1141,6 +1258,18 @@ packages: regexpu-core: 5.3.2 semver: 6.3.0 + /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.0 + dev: true + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.22.5): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: @@ -1186,10 +1315,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-define-polyfill-provider@0.4.1(@babel/core@7.22.9): + resolution: {integrity: sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.6(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-environment-visitor@7.21.5: resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} @@ -1201,7 +1344,6 @@ packages: dependencies: '@babel/template': 7.22.5 '@babel/types': 7.22.5 - dev: false /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} @@ -1228,7 +1370,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: false /@babel/helper-member-expression-to-functions@7.22.5: resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} @@ -1273,12 +1414,39 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms@7.22.9(@babel/core@7.12.9): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + dev: false + + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + dev: true + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: false /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -1327,6 +1495,21 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.22.5 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-replace-supers@7.21.5: resolution: {integrity: sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg==} engines: {node: '>=6.9.0'} @@ -1339,7 +1522,6 @@ packages: '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-replace-supers@7.22.5: resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} @@ -1372,7 +1554,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: false /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} @@ -1385,7 +1566,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: false /@babel/helper-split-export-declaration@7.22.5: resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} @@ -1508,6 +1688,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.22.5): resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} @@ -1531,6 +1721,18 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.8) + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) + dev: true + /@babel/plugin-external-helpers@7.18.6(@babel/core@7.22.8): resolution: {integrity: sha512-wNqc87qjLvsD1PIMQBzLn1bMuTlGzqLzM/1VGQ22Wm51cbCWS9k71ydp5iZS4hjwQNuTWSn/xbZkkusNENwtZg==} engines: {node: '>=6.9.0'} @@ -1760,6 +1962,15 @@ packages: dependencies: '@babel/core': 7.22.8 + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + dev: true + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} @@ -1781,6 +1992,17 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.21.8(@babel/core@7.22.8) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.9): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.21.8(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1798,6 +2020,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -1815,6 +2046,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -1834,6 +2074,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.9): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: @@ -1851,6 +2101,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.21.5 + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: @@ -1868,6 +2127,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.5): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} @@ -1887,6 +2155,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} @@ -1896,6 +2174,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1913,6 +2201,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.9): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -1930,7 +2227,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1975,6 +2281,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -1992,6 +2307,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -2009,6 +2333,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2035,6 +2368,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2052,6 +2394,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -2069,6 +2420,15 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -2088,6 +2448,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.9): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -2107,6 +2477,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.5): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} @@ -2136,6 +2516,17 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.8) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.9): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.5): resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} engines: {node: '>=6.9.0'} @@ -2155,6 +2546,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-async-generator-functions@7.22.7(@babel/core@7.22.8): resolution: {integrity: sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==} engines: {node: '>=6.9.0'} @@ -2169,6 +2570,21 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-async-generator-functions@7.22.7(@babel/core@7.22.9): + resolution: {integrity: sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.5): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} @@ -2196,6 +2612,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.9) + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} @@ -2215,6 +2645,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.5): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} @@ -2234,6 +2674,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} @@ -2246,6 +2696,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} engines: {node: '>=6.9.0'} @@ -2259,6 +2722,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.5): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} @@ -2298,6 +2775,26 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.9): + resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.6(@babel/core@7.22.9) + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.5): resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} engines: {node: '>=6.9.0'} @@ -2319,6 +2816,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.5 + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.5 + dev: true + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.5): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} @@ -2338,6 +2846,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} @@ -2370,6 +2888,17 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.8) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.5): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} @@ -2389,6 +2918,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} engines: {node: '>=6.9.0'} @@ -2399,6 +2938,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.8) + /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} @@ -2420,6 +2970,17 @@ packages: '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} engines: {node: '>=6.9.0'} @@ -2430,6 +2991,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.8) + /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.5): resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} engines: {node: '>=6.9.0'} @@ -2449,6 +3021,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.5): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} @@ -2472,6 +3054,18 @@ packages: '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.6(@babel/core@7.22.9) + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} engines: {node: '>=6.9.0'} @@ -2482,6 +3076,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.8) + /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.5): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} @@ -2501,6 +3106,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} engines: {node: '>=6.9.0'} @@ -2511,6 +3126,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.8) + /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} @@ -2530,6 +3156,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.5): resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} @@ -2555,6 +3191,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.5): resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} engines: {node: '>=6.9.0'} @@ -2582,6 +3231,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.22.5): resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} @@ -2611,6 +3274,21 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} @@ -2636,6 +3314,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.22.5): resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} @@ -2657,6 +3348,17 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.8) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} @@ -2667,24 +3369,45 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.8): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.8): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.8 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.8): + resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.8) - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.8): + /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.9): resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.8) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + dev: true /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} @@ -2696,6 +3419,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.8) + /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} engines: {node: '>=6.9.0'} @@ -2709,6 +3443,20 @@ packages: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.8) '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.8) + /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.6 + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.6(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} @@ -2734,6 +3482,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} engines: {node: '>=6.9.0'} @@ -2744,6 +3505,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.8) + /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-optional-chaining@7.22.6(@babel/core@7.22.8): resolution: {integrity: sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==} engines: {node: '>=6.9.0'} @@ -2755,6 +3527,18 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.8) + /@babel/plugin-transform-optional-chaining@7.22.6(@babel/core@7.22.9): + resolution: {integrity: sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + dev: true + /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.22.5): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} engines: {node: '>=6.9.0'} @@ -2794,6 +3578,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} @@ -2806,6 +3600,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} engines: {node: '>=6.9.0'} @@ -2820,6 +3627,21 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} @@ -2839,6 +3661,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-react-constant-elements@7.22.3(@babel/core@7.22.8): resolution: {integrity: sha512-b5J6muxQYp4H7loAQv/c7GO5cPuRA6H5hx4gO+/Hn+Cu9MRQU0PNiUoWq1L//8sq6kFSNxGXFb2XTaUfa9y+Pg==} engines: {node: '>=6.9.0'} @@ -2976,6 +3808,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.1 + /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.1 + dev: true + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} @@ -2995,6 +3838,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.5): resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} engines: {node: '>=6.9.0'} @@ -3031,6 +3884,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.5): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} @@ -3052,6 +3915,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} @@ -3071,6 +3945,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.5): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} @@ -3090,6 +3974,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.5): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} @@ -3109,6 +4003,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-typescript@7.21.3(@babel/core@7.22.5): resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==} engines: {node: '>=6.9.0'} @@ -3131,9 +4035,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.8 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.8) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.8(@babel/core@7.22.8) + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.8) transitivePeerDependencies: - supports-color @@ -3157,6 +4061,16 @@ packages: '@babel/core': 7.22.8 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} @@ -3167,6 +4081,17 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.8) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} @@ -3188,6 +4113,17 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.8) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.8): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} @@ -3198,6 +4134,17 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.8) '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/preset-env@7.21.5(@babel/core@7.22.5): resolution: {integrity: sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==} engines: {node: '>=6.9.0'} @@ -3375,6 +4322,97 @@ packages: transitivePeerDependencies: - supports-color + /@babel/preset-env@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-async-generator-functions': 7.22.7(@babel/core@7.22.9) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.9) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.9) + '@babel/preset-modules': 0.1.5(@babel/core@7.22.9) + '@babel/types': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.4(@babel/core@7.22.9) + babel-plugin-polyfill-corejs3: 0.8.2(@babel/core@7.22.9) + babel-plugin-polyfill-regenerator: 0.5.1(@babel/core@7.22.9) + core-js-compat: 3.31.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/preset-modules@0.1.5(@babel/core@7.22.5): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: @@ -3400,6 +4438,19 @@ packages: '@babel/types': 7.22.5 esutils: 2.0.3 + /@babel/preset-modules@0.1.5(@babel/core@7.22.9): + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) + '@babel/types': 7.22.5 + esutils: 2.0.3 + dev: true + /@babel/preset-react@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} engines: {node: '>=6.9.0'} @@ -3631,7 +4682,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/core@2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==} engines: {node: '>=16.14'} hasBin: true @@ -3690,7 +4741,7 @@ packages: postcss-loader: 7.3.2(postcss@8.4.23)(webpack@5.88.1) prompts: 2.4.2 react: 17.0.2 - react-dev-utils: 12.0.1(eslint@8.44.0)(typescript@5.1.6)(webpack@5.88.1) + react-dev-utils: 12.0.1(eslint@8.45.0)(typescript@5.1.6)(webpack@5.88.1) react-dom: 17.0.2(react@17.0.2) react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) @@ -3741,14 +4792,14 @@ packages: tslib: 2.5.0 dev: false - /@docusaurus/eslint-plugin@2.4.1(eslint@8.44.0)(typescript@5.1.6): + /@docusaurus/eslint-plugin@2.4.1(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-Sb+aLgf07v2xenPHlcBtvADFkE6xi1Nx9cKNb98Tq5MGoywHpxUfwT3RHar+eA8vCjR3fu0npSzuRt26AJa5lw==} engines: {node: '>=16.14'} peerDependencies: eslint: '>=6' dependencies: - '@typescript-eslint/utils': 5.60.0(eslint@8.44.0)(typescript@5.1.6) - eslint: 8.44.0 + '@typescript-eslint/utils': 5.60.0(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 tslib: 2.5.0 transitivePeerDependencies: - supports-color @@ -3834,14 +4885,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-client-redirects@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-client-redirects@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-tp0j16gaLIJ4p+IR0P6KDOFsTOGGMY54MNPnmM61Vaqqt5omLqsuKUO8UlCGU1oW/4EIQOhXYy99XYY5MjE+7A==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/logger': 2.4.1 '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) @@ -3871,14 +4922,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-content-blog@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-E2i7Knz5YIbE1XELI6RlTnZnGgS52cUO4BlCiCUCvQHbR+s1xeIWz4C6BtaVnlug0Ccz7nFSksfwDpVlkujg5Q==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/logger': 2.4.1 '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) @@ -3914,14 +4965,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-content-docs@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-Lo7lSIcpswa2Kv4HEeUcGYqaasMUQNpjTXpV0N8G6jXgZaQurqp7E8NGYeGbDXnb48czmHWbzDL4S3+BbK0VzA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/logger': 2.4.1 '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/module-type-aliases': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) @@ -3957,14 +5008,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-content-pages@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-/UjuH/76KLaUlL+o1OvyORynv6FURzjurSjvn2lbWTFc4tpYY2qLYTlKpTCBVPhlLUQsfyFnshEJDLmPneq2oA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) @@ -3992,14 +5043,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@2.4.1(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-debug@2.4.1(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-7Yu9UPzRShlrH/G8btOpR0e6INFZr0EegWplMjOqelIwAcx3PKyR8mgPTxGTxcqiYj6hxSCRN0D8R7YrzImwNA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) fs-extra: 10.1.0 @@ -4027,14 +5078,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-google-analytics@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-dyZJdJiCoL+rcfnm0RPkLt/o732HvLiEwmtoNzOoz9MSZz117UH2J6U2vUDtzUzwtFLIf32KkeyzisbwUCgcaQ==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) react: 17.0.2 @@ -4058,14 +5109,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-google-gtag@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-mKIefK+2kGTQBYvloNEKtDmnRD7bxHLsBcxgnbt4oZwzi2nxCGjPX6+9SQO2KCN5HZbNrYmGo5GJfMgoRvy6uA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) react: 17.0.2 @@ -4089,14 +5140,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-google-tag-manager@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-Zg4Ii9CMOLfpeV2nG74lVTWNtisFaH9QNtEw48R5QE1KIwDBdTVaiSA18G1EujZjrzJJzXN79VhINSbOJO/r3g==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) react: 17.0.2 @@ -4120,7 +5171,7 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-ideal-image@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-ideal-image@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-jxvgCGPmHxdae2Y2uskzxIbMCA4WLTfzkufsLbD4mEAjCRIkt6yzux6q5kqKTrO+AxzpANVcJNGmaBtKZGv5aw==} engines: {node: '>=16.14'} peerDependencies: @@ -4131,7 +5182,7 @@ packages: jimp: optional: true dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/lqip-loader': 2.4.1(webpack@5.88.1) '@docusaurus/responsive-loader': 1.7.0(sharp@0.30.7) '@docusaurus/theme-translations': 2.4.1 @@ -4163,7 +5214,7 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-pwa@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-pwa@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-kiD4qu5u3Nhwa6dPFrBDGInJYI/MWu01mbeLJFLk7oFqbkvLrHPKyB6KxrKQQfx/sAJKro79RYejigUDj0Ahig==} engines: {node: '>=16.14'} peerDependencies: @@ -4172,8 +5223,8 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/preset-env': 7.21.5(@babel/core@7.22.5) - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/theme-translations': 2.4.1 '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) @@ -4209,14 +5260,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/plugin-sitemap@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-lZx+ijt/+atQ3FVE8FOHV/+X3kuok688OydDXrqKRJyXBJZKgGjA2Qa8RjQ4f27V2woaXhtnyrdPop/+OjVMRg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/logger': 2.4.1 '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) @@ -4245,25 +5296,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@2.4.1(@algolia/client-search@4.17.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/preset-classic@2.4.1(@algolia/client-search@4.17.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-P4//+I4zDqQJ+UDgoFrjIFaQ1MeS9UD1cvxVQaI6O7iBmiHQm0MGROP1TbE7HlxlDPXFJjZUK3x3cAoK63smGQ==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-content-blog': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-content-pages': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-debug': 2.4.1(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-google-analytics': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-google-gtag': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-google-tag-manager': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-sitemap': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/theme-classic': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/theme-search-algolia': 2.4.1(@algolia/client-search@4.17.1)(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-blog': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-pages': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-debug': 2.4.1(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-google-analytics': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-google-gtag': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-google-tag-manager': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-sitemap': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/theme-classic': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/theme-search-algolia': 2.4.1(@algolia/client-search@4.17.1)(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -4323,20 +5374,20 @@ packages: sharp: 0.30.7 dev: false - /@docusaurus/theme-classic@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/theme-classic@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-Rz0wKUa+LTW1PLXmwnf8mn85EBzaGSt6qamqtmnh9Hflkc+EqiYMhtUJeLdV+wsgYq4aG0ANc+bpUDpsUhdnwg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/module-type-aliases': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/plugin-content-blog': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-content-pages': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-blog': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-pages': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/theme-translations': 2.4.1 '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) @@ -4375,7 +5426,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/theme-common@2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-G7Zau1W5rQTaFFB3x3soQoZpkgMbl/SYNG8PfMFIjKa3M3q8n0m/GRf5/H/e5BqOvt8c+ZWIXGCiz+kUCSHovA==} engines: {node: '>=16.14'} peerDependencies: @@ -4384,9 +5435,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/module-type-aliases': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/plugin-content-blog': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/plugin-content-pages': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-blog': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-pages': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) '@types/history': 4.7.11 @@ -4419,16 +5470,16 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-mermaid@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/theme-mermaid@2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-cM0ImKIqZfjmlaC+uAjep39kNBvb1bjz429QBHGs32maob4+UnRzVPPpCUCltyPVb4xjG5h1Tyq4pHzhtIikqA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/module-type-aliases': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/types': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(react-dom@17.0.2)(react@17.0.2) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) '@mdx-js/react': 1.6.22(react@17.0.2) @@ -4454,7 +5505,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@2.4.1(@algolia/client-search@4.17.1)(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): + /@docusaurus/theme-search-algolia@2.4.1(@algolia/client-search@4.17.1)(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(@types/react@18.2.15)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6): resolution: {integrity: sha512-6BcqW2lnLhZCXuMAvPRezFs1DpmEKzXFKlYjruuas+Xy3AQeFzDJKTJFIm49N77WFCTyxff8d3E4Q9pi/+5McQ==} engines: {node: '>=16.14'} peerDependencies: @@ -4462,10 +5513,10 @@ packages: react-dom: ^16.8.4 || ^17.0.0 dependencies: '@docsearch/react': 3.4.0(@algolia/client-search@4.17.1)(@types/react@18.2.15)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/logger': 2.4.1 - '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) - '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.44.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/plugin-content-docs': 2.4.1(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18)(eslint@8.45.0)(react-dom@17.0.2)(react@17.0.2)(typescript@5.1.6) '@docusaurus/theme-translations': 2.4.1 '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1)(@swc/core@1.3.68)(esbuild@0.15.18) @@ -5251,13 +6302,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.44.0 + eslint: 8.45.0 eslint-visitor-keys: 3.4.1 /@eslint-community/regexpp@4.5.1: @@ -5404,21 +6455,20 @@ packages: type-detect: 4.0.8 dev: true - /@kvs/node-localstorage@2.1.3: - resolution: {integrity: sha512-/c9/9Vg7zXWCHElrQeA7NgL/m1RLtOwsaOcw3/FOrJATrR6TIODqcxqMPflHA0AfrtDCcG/VcG4RI/kMVO6t5Q==} + /@kvs/node-localstorage@2.1.5: + resolution: {integrity: sha512-9WDg5VcbuL3ABDvP+icYYOAMoGyjO5StD9p6q2RzyFFo99qrufsPYmrzXCJRCEw3dKws4THpXc3becgB5cNRZQ==} dependencies: - '@kvs/storage': 2.1.3 + '@kvs/storage': 2.1.4 app-root-path: 3.1.0 - mkdirp: 1.0.4 node-localstorage: 2.2.1 - /@kvs/storage@2.1.3: - resolution: {integrity: sha512-yiwsPRhkLlNczWoBCQ1ZgKIuhQfrUHGXyyYYN4BeMMZ2Z0DtnOrMo1xd5P/1Vlyz25J1QmAtQxLlzdmWIqfvfg==} + /@kvs/storage@2.1.4: + resolution: {integrity: sha512-d4sdTdCjAsyX9v9Q3rFciG9rUs24KNIMUzRv3fVIpbehlnfTWZ5TACucN6LAMFZaqgEnBKLxghwfUCrsaYDzig==} dependencies: - '@kvs/types': 2.1.1 + '@kvs/types': 2.1.4 - /@kvs/types@2.1.1: - resolution: {integrity: sha512-HRDt5IeTE7BZYCey3ZhTWzpYtv5mhXU8Nx3dHD99sXoovbakSy7BEcIWckHZf+4kwC3oyhr9Ee3lsQFOacTz3Q==} + /@kvs/types@2.1.4: + resolution: {integrity: sha512-XtTOUatnJrDcuYNPfN+9x1xuVp11IuyPi9zOLVJPpfnKp+vUCatka/Crp2cfz0uKt4QE1Pb4Dg/TNYgVYA2Org==} /@leichtgewicht/ip-codec@2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} @@ -6263,12 +7313,12 @@ packages: defer-to-connect: 1.1.3 dev: false - /@tanstack/query-core@4.29.25: - resolution: {integrity: sha512-DI4y4VC6Uw4wlTpOocEXDky69xeOScME1ezLKsj+hOk7DguC9fkqXtp6Hn39BVb9y0b5IBrY67q6kIX623Zj4Q==} + /@tanstack/query-core@4.32.0: + resolution: {integrity: sha512-ei4IYwL2kmlKSlCw9WgvV7PpXi0MiswVwfQRxawhJA690zWO3dU49igaQ/UMTl+Jy9jj9dK5IKAYvbX7kUvviQ==} dev: true - /@tanstack/react-query@4.29.25(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-c1+Ezu+XboYrdAMdusK2fTdRqXPMgPAnyoTrzHOZQqr8Hqz6PNvV9DSKl8agUo6nXX4np7fdWabIprt+838dLg==} + /@tanstack/react-query@4.32.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-B8WUMcByYAH9500ENejDCATOmEZhqjtS9wsfiQ3BNa+s+yAynY8SESI8WWHhSqUmjd0pmCSFRP6BOUGSda3QXA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6279,7 +7329,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.29.25 + '@tanstack/query-core': 4.32.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) @@ -6724,7 +7774,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: false - /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -6736,13 +7786,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 6.1.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/type-utils': 6.1.0(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.1.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -6754,7 +7804,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.1.0(eslint@8.44.0)(typescript@5.1.6): + /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -6769,7 +7819,7 @@ packages: '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 typescript: 5.1.6 transitivePeerDependencies: - supports-color @@ -6799,7 +7849,7 @@ packages: '@typescript-eslint/visitor-keys': 6.1.0 dev: true - /@typescript-eslint/type-utils@6.1.0(eslint@8.44.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -6810,9 +7860,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.1.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: @@ -6897,19 +7947,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.60.0(eslint@8.44.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.60.0(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.11 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.60.0 '@typescript-eslint/types': 5.60.0 '@typescript-eslint/typescript-estree': 5.60.0(typescript@5.1.6) - eslint: 8.44.0 + eslint: 8.45.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -6917,19 +7967,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.61.0(eslint@8.44.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.61.0(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.61.0 '@typescript-eslint/types': 5.61.0 '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.1.6) - eslint: 8.44.0 + eslint: 8.45.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -6937,19 +7987,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.1.0(eslint@8.44.0)(typescript@5.1.6): + /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 6.1.0 '@typescript-eslint/types': 6.1.0 '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) - eslint: 8.44.0 + eslint: 8.45.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -6993,27 +8043,27 @@ packages: react: 18.2.0 dev: true - /@vitejs/plugin-legacy@4.1.0(terser@5.19.1)(vite@4.4.4): - resolution: {integrity: sha512-bLPHaKAKtPq40Cx2Hauz/VE39kStx7gUC21RM+0/OvBgiOlqrK3b1mIMUc4Cak1xLOrK99j174/7xczfu4OLHA==} + /@vitejs/plugin-legacy@4.1.1(terser@5.19.2)(vite@4.4.7): + resolution: {integrity: sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: terser: ^5.4.0 vite: ^4.0.0 dependencies: - '@babel/core': 7.22.8 - '@babel/preset-env': 7.22.7(@babel/core@7.22.8) + '@babel/core': 7.22.9 + '@babel/preset-env': 7.22.9(@babel/core@7.22.9) browserslist: 4.21.9 - core-js: 3.31.0 + core-js: 3.31.1 magic-string: 0.30.0 regenerator-runtime: 0.13.11 systemjs: 6.14.1 - terser: 5.19.1 - vite: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + terser: 5.19.2 + vite: 4.4.7(@types/node@18.16.19)(terser@5.19.2) transitivePeerDependencies: - supports-color dev: true - /@vitejs/plugin-react@4.0.3(vite@4.4.4): + /@vitejs/plugin-react@4.0.3(vite@4.4.7): resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -7023,7 +8073,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.8) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.8) react-refresh: 0.14.0 - vite: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + vite: 4.4.7(@types/node@18.16.19)(terser@5.19.2) transitivePeerDependencies: - supports-color dev: true @@ -7064,13 +8114,13 @@ packages: vitest: '>=0.30.1 <1' dependencies: '@vitest/utils': 0.33.0 - fast-glob: 3.3.0 + fast-glob: 3.3.1 fflate: 0.8.0 flatted: 3.2.7 pathe: 1.1.1 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 0.33.0(@vitest/ui@0.33.0)(jsdom@22.1.0)(terser@5.19.1) + vitest: 0.33.0(@vitest/ui@0.33.0)(jsdom@22.1.0)(terser@5.19.2) dev: true /@vitest/utils@0.33.0: @@ -7675,6 +8725,19 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-corejs2@0.4.4(@babel/core@7.22.9): + resolution: {integrity: sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.6 + '@babel/core': 7.22.9 + '@babel/helper-define-polyfill-provider': 0.4.1(@babel/core@7.22.9) + '@nicolo-ribaudo/semver-v6': 6.3.3 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.22.5): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: @@ -7710,6 +8773,18 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-corejs3@0.8.2(@babel/core@7.22.9): + resolution: {integrity: sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-define-polyfill-provider': 0.4.1(@babel/core@7.22.9) + core-js-compat: 3.31.1 + transitivePeerDependencies: + - supports-color + dev: true + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.22.5): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: @@ -7742,6 +8817,17 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-regenerator@0.5.1(@babel/core@7.22.9): + resolution: {integrity: sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-define-polyfill-provider': 0.4.1(@babel/core@7.22.9) + transitivePeerDependencies: + - supports-color + dev: true + /bail@1.0.5: resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} dev: false @@ -7924,7 +9010,7 @@ packages: '@jsdevtools/ez-spawn': 3.0.4 c12: 1.4.1 cac: 6.7.14 - fast-glob: 3.3.0 + fast-glob: 3.3.1 prompts: 2.4.2 semver: 7.5.4 transitivePeerDependencies: @@ -8043,8 +9129,8 @@ packages: responselike: 1.0.2 dev: false - /cachedir@2.3.0: - resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + /cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} dev: false @@ -8555,7 +9641,7 @@ packages: peerDependencies: webpack: ^5.1.0 dependencies: - fast-glob: 3.3.0 + fast-glob: 3.3.1 glob-parent: 6.0.2 globby: 13.1.4 normalize-path: 3.0.0 @@ -8585,8 +9671,8 @@ packages: requiresBuild: true dev: false - /core-js@3.31.0: - resolution: {integrity: sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==} + /core-js@3.31.1: + resolution: {integrity: sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==} requiresBuild: true dev: true @@ -10374,7 +11460,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.44.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -10395,43 +11481,43 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.1.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) debug: 3.2.7 - eslint: 8.44.0 + eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-antfu@0.39.8(eslint@8.44.0)(typescript@5.1.6): + /eslint-plugin-antfu@0.39.8(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-VsQF1mofv0pg+9rhSohNhrxcufOzSsGyQdKqdyJHPMTT2mMwXAPgKW/v8SC6W7UDk1q/j2EHZ+UUOEAKRnkd7g==} dependencies: - '@typescript-eslint/utils': 6.1.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) transitivePeerDependencies: - eslint - supports-color - typescript dev: true - /eslint-plugin-es-x@7.1.0(eslint@8.44.0): + /eslint-plugin-es-x@7.1.0(eslint@8.45.0): resolution: {integrity: sha512-AhiaF31syh4CCQ+C5ccJA0VG6+kJK8+5mXKKE7Qs1xcPRg02CDPOj3mWlQxuWS/AYtg7kxrDNgW9YW3vc0Q+Mw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@eslint-community/regexpp': 4.5.1 - eslint: 8.44.0 + eslint: 8.45.0 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.44.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.45.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.44.0 + eslint: 8.45.0 ignore: 5.2.4 dev: true @@ -10441,7 +11527,7 @@ packages: htmlparser2: 8.0.2 dev: true - /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.1.0)(eslint@8.44.0): + /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.1.0)(eslint@8.45.0): resolution: {integrity: sha512-X3Z+dp9nZw7d/y41EDO6JyFw4WVMOT91SFuoJvL0C0/4M1l6NxQ5mLTjXHuYhq0AazW75pAmj25yMk5wPMzjsw==} engines: {node: '>=12'} peerDependencies: @@ -10449,9 +11535,9 @@ packages: dependencies: debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.44.0 + eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.44.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.1.0)(eslint-import-resolver-node@0.3.7)(eslint@8.45.0) get-tsconfig: 4.6.2 is-glob: 4.0.3 minimatch: 3.1.2 @@ -10464,7 +11550,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.44.0)(typescript@5.1.6): + /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.45.0)(typescript@5.1.6): resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -10477,48 +11563,48 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.1.6) - eslint: 8.44.0 + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.61.0(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsonc@2.9.0(eslint@8.44.0): + /eslint-plugin-jsonc@2.9.0(eslint@8.45.0): resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) - eslint: 8.44.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + eslint: 8.45.0 jsonc-eslint-parser: 2.3.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown@3.0.0(eslint@8.44.0): + /eslint-plugin-markdown@3.0.0(eslint@8.45.0): resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.44.0 + eslint: 8.45.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@16.0.1(eslint@8.44.0): + /eslint-plugin-n@16.0.1(eslint@8.45.0): resolution: {integrity: sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) builtins: 5.0.1 - eslint: 8.44.0 - eslint-plugin-es-x: 7.1.0(eslint@8.44.0) + eslint: 8.45.0 + eslint-plugin-es-x: 7.1.0(eslint@8.45.0) ignore: 5.2.4 is-core-module: 2.12.1 minimatch: 3.1.2 @@ -10531,26 +11617,26 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-promise@6.1.1(eslint@8.44.0): + /eslint-plugin-promise@6.1.1(eslint@8.45.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.44.0 + eslint: 8.45.0 dev: true - /eslint-plugin-unicorn@48.0.0(eslint@8.44.0): + /eslint-plugin-unicorn@48.0.0(eslint@8.45.0): resolution: {integrity: sha512-8fk/v3p1ro34JSVDBEmtOq6EEQRpMR0iTir79q69KnXFZ6DJyPkT3RAi+ZoTqhQMdDSpGh8BGR68ne1sP5cnAA==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.44.0' dependencies: '@babel/helper-validator-identifier': 7.22.5 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) ci-info: 3.8.0 clean-regexp: 1.0.0 - eslint: 8.44.0 + eslint: 8.45.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -10564,7 +11650,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.44.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.1.0)(eslint@8.45.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -10574,37 +11660,37 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.44.0)(typescript@5.1.6) - eslint: 8.44.0 + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 eslint-rule-composer: 0.3.0 dev: true - /eslint-plugin-vue@9.15.1(eslint@8.44.0): + /eslint-plugin-vue@9.15.1(eslint@8.45.0): resolution: {integrity: sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) - eslint: 8.44.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + eslint: 8.45.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.12 semver: 7.5.4 - vue-eslint-parser: 9.3.0(eslint@8.44.0) + vue-eslint-parser: 9.3.0(eslint@8.45.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml@1.8.0(eslint@8.44.0): + /eslint-plugin-yml@1.8.0(eslint@8.45.0): resolution: {integrity: sha512-fgBiJvXD0P2IN7SARDJ2J7mx8t0bLdG6Zcig4ufOqW5hOvSiFxeUyc2g5I1uIm8AExbo26NNYCcTGZT0MXTsyg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -10635,12 +11721,12 @@ packages: resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint@8.44.0: - resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} + /eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.1.0 '@eslint/js': 8.44.0 @@ -10665,7 +11751,6 @@ packages: globals: 13.20.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -10677,7 +11762,6 @@ packages: natural-compare: 1.4.0 optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -10893,8 +11977,8 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11131,7 +12215,7 @@ packages: signal-exit: 4.0.2 dev: true - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.44.0)(typescript@5.1.6)(webpack@5.88.1): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.45.0)(typescript@5.1.6)(webpack@5.88.1): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -11151,7 +12235,7 @@ packages: chokidar: 3.5.3 cosmiconfig: 6.0.0 deepmerge: 4.3.1 - eslint: 8.44.0 + eslint: 8.45.0 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.3 @@ -11205,8 +12289,8 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false - /framer-motion@10.13.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xKhw9VCizmwEHbopOfluaoVunGHSZyMztGbTvsgOYqCjaKu6qtlwWY1J+6GhL41NY1P157JgEikjDm67XCFnvQ==} + /framer-motion@10.13.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uiKsaLEoySeln3eOPy8wUB3FkNtRRiVga5xJOkgs7C0sHVyvpJajXJFSoabt+emBojgnMQY0epnjl0ppoYPxkQ==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -11524,7 +12608,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -11534,7 +12618,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 @@ -11869,7 +12953,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.19.1 + terser: 5.19.2 dev: false /html-parse-stringify@3.0.1: @@ -12683,6 +13767,10 @@ packages: engines: {node: '>=10'} dev: true + /js-base64@3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + dev: true + /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} dev: true @@ -12882,11 +13970,12 @@ packages: engines: {node: '>= 8'} dev: false - /langchain@0.0.112(ignore@5.2.4): - resolution: {integrity: sha512-RWx/PepDayyMZipEh3UUeKjXiQpYjmErpRqw9ZbJr+5vUk1zSwuYW9SP8vRB5celY87QKzhbj5DgypcFytmYuA==} + /langchain@0.0.116(ignore@5.2.4): + resolution: {integrity: sha512-bFXj5MDWPKkSiQUhx//p6zDLrSo2aFZnewhmUwJYRKkSPkXE4MxTzPqxZa8E0hv9EqyOb6dA8RVcvh6xp1hUkw==} engines: {node: '>=18'} peerDependencies: '@aws-sdk/client-dynamodb': ^3.310.0 + '@aws-sdk/client-kendra': ^3.352.0 '@aws-sdk/client-lambda': ^3.310.0 '@aws-sdk/client-s3': ^3.310.0 '@aws-sdk/client-sagemaker-runtime': ^3.310.0 @@ -12902,6 +13991,7 @@ packages: '@notionhq/client': ^2.2.5 '@opensearch-project/opensearch': '*' '@pinecone-database/pinecone': '*' + '@planetscale/database': ^1.8.0 '@qdrant/js-client-rest': ^1.2.0 '@supabase/postgrest-js': ^1.1.1 '@supabase/supabase-js': ^2.10.0 @@ -12932,6 +14022,7 @@ packages: pdf-parse: 1.1.1 peggy: ^3.0.2 pg: ^8.11.0 + pg-copy-streams: ^6.0.5 pickleparser: ^0.1.0 playwright: ^1.32.1 puppeteer: ^19.7.2 @@ -12946,6 +14037,8 @@ packages: peerDependenciesMeta: '@aws-sdk/client-dynamodb': optional: true + '@aws-sdk/client-kendra': + optional: true '@aws-sdk/client-lambda': optional: true '@aws-sdk/client-s3': @@ -12976,6 +14069,8 @@ packages: optional: true '@pinecone-database/pinecone': optional: true + '@planetscale/database': + optional: true '@qdrant/js-client-rest': optional: true '@supabase/postgrest-js': @@ -13036,6 +14131,8 @@ packages: optional: true pg: optional: true + pg-copy-streams: + optional: true pickleparser: optional: true playwright: @@ -13059,7 +14156,7 @@ packages: weaviate-ts-client: optional: true dependencies: - '@anthropic-ai/sdk': 0.5.4 + '@anthropic-ai/sdk': 0.5.8 ansi-styles: 5.2.0 binary-extensions: 2.2.0 camelcase: 6.3.0 @@ -13070,7 +14167,7 @@ packages: js-tiktoken: 1.0.7 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.0.9 + langsmith: 0.0.14 ml-distance: 4.0.0 object-hash: 3.0.0 openai: 3.3.0 @@ -13087,8 +14184,8 @@ packages: - supports-color dev: false - /langsmith@0.0.9: - resolution: {integrity: sha512-CSn2WjBKnLFaw52A3II9FSKMAkzazbas9mdZ9O0/OP1U2D1uTwyRHeUVh2g0deo0HfFWx9xo9rgPAyMKYqT1Ew==} + /langsmith@0.0.14: + resolution: {integrity: sha512-56K2AkhxsbniK2beCn28zRdHtlRlnVBWnKPsjAhSRBFESNZ0X00J2BXM/Z55M5Rt+Fpud0VldK8V+F25htYTDw==} hasBin: true dependencies: '@types/uuid': 9.0.2 @@ -14129,6 +15226,7 @@ packages: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true + dev: true /mkdist@0.3.13(typescript@4.9.5): resolution: {integrity: sha512-+eCPpkr8l2X630y5PIlkts2tzYEsb+aGIgXdrQv9ZGtWE2bLlD6kVIFfI6FJwFpjjw4dPPyorxQc6Uhm/oXlvg==} @@ -14229,8 +15327,8 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /msw@1.2.2(typescript@5.1.6): - resolution: {integrity: sha512-GsW3PE/Es/a1tYThXcM8YHOZ1S1MtivcS3He/LQbbTCx3rbWJYCtWD5XXyJ53KlNPT7O1VI9sCW3xMtgFe8XpQ==} + /msw@1.2.3(typescript@5.1.6): + resolution: {integrity: sha512-Fqy/TaLKR32x4IkMwudJHJysBzVM/v/lSoMPS9f3QaHLOmb3xHN9YurSUnRt+2eEvNXLjVPij1wMBQtLmTbKsg==} engines: {node: '>=14'} hasBin: true requiresBuild: true @@ -15065,8 +16163,8 @@ packages: engines: {node: '>=4'} dev: true - /pnpm@8.6.9: - resolution: {integrity: sha512-LPEaCGvlV4dVGeJeHqi/pCR/SETooqmScv2wcr0gTqGUebpkt1w9TIEX0awLMhLO29p7pcXfz5ZO59B70Tnc0w==} + /pnpm@8.6.10: + resolution: {integrity: sha512-EBlPdgrAqmIDK6lflNm8M4lueWGM4PKJIDngt6vJ1+fmzh3e0482tg52nUjiuGvkzZ2sngA181GLqknXhAHgIg==} engines: {node: '>=16.14'} hasBin: true dev: true @@ -15784,6 +16882,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss@8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} @@ -16039,7 +17146,7 @@ packages: pure-color: 1.3.0 dev: false - /react-dev-utils@12.0.1(eslint@8.44.0)(typescript@5.1.6)(webpack@5.88.1): + /react-dev-utils@12.0.1(eslint@8.45.0)(typescript@5.1.6)(webpack@5.88.1): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -16058,7 +17165,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.44.0)(typescript@5.1.6)(webpack@5.88.1) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.45.0)(typescript@5.1.6)(webpack@5.88.1) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -16882,7 +17989,7 @@ packages: jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.19.1 + terser: 5.19.2 dev: false /rollup@2.79.1: @@ -17086,6 +18193,11 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + /semver@7.5.1: resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} @@ -17301,8 +18413,8 @@ packages: once: 1.4.0 simple-concat: 1.0.1 - /simple-git-hooks@2.8.1: - resolution: {integrity: sha512-DYpcVR1AGtSfFUNzlBdHrQGPsOhuuEJ/FkmPOOlFysP60AHd3nsEpkGq/QEOdtUyT1Qhk7w9oLmFoMG+75BDog==} + /simple-git-hooks@2.9.0: + resolution: {integrity: sha512-waSQ5paUQtyGC0ZxlHmcMmD9I1rRXauikBwX31bX58l5vTOhCEcBC5Bi+ZDkPXTjDnZAF8TbCqKBY+9+sVPScw==} hasBin: true requiresBuild: true dev: true @@ -17797,8 +18909,8 @@ packages: inline-style-parser: 0.1.1 dev: true - /styled-components@6.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lRJt4vg8hKJhlVG+VKz8QEqPCXKyTryZZ59odyK0UC0HHV3u/mshWTfSay8NpkN0Xijw1iN9r0Leld3dcCcp/w==} + /styled-components@6.0.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-308zi5o7LrA9cVaP4nPD0TaUpOjGPePkAUFb/OGB0xRI3I9ozpW5UyASvRVi9wJcYASG+Y3mLDLDUZC7nqzimw==} engines: {node: '>= 16'} peerDependencies: babel-plugin-styled-components: '>= 2' @@ -18046,12 +19158,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.2.0 serialize-javascript: 6.0.1 - terser: 5.19.1 + terser: 5.19.2 webpack: 5.88.1(@swc/core@1.3.68)(esbuild@0.15.18) dev: false - /terser@5.19.1: - resolution: {integrity: sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==} + /terser@5.19.2: + resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -18578,7 +19690,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2(rollup@3.26.3) escape-string-regexp: 5.0.0 - fast-glob: 3.3.0 + fast-glob: 3.3.1 local-pkg: 0.4.3 magic-string: 0.30.0 mlly: 1.4.0 @@ -18769,7 +19881,7 @@ packages: dependencies: '@antfu/utils': 0.7.5 '@rollup/pluginutils': 5.0.2(rollup@3.26.3) - fast-glob: 3.3.0 + fast-glob: 3.3.1 local-pkg: 0.4.3 magic-string: 0.30.0 minimatch: 9.0.3 @@ -19043,7 +20155,7 @@ packages: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - /vite-node@0.33.0(@types/node@18.16.19)(terser@5.19.1): + /vite-node@0.33.0(@types/node@18.16.19)(terser@5.19.2): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -19053,7 +20165,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + vite: 4.4.7(@types/node@18.16.19)(terser@5.19.2) transitivePeerDependencies: - '@types/node' - less @@ -19065,7 +20177,7 @@ packages: - terser dev: true - /vite-plugin-inspect@0.7.33(rollup@3.26.3)(vite@4.4.4): + /vite-plugin-inspect@0.7.33(rollup@3.26.3)(vite@4.4.7): resolution: {integrity: sha512-cQRLQKa/+Ua++5hN0IZfqNn1JYXBg2eCQOSUatPTwhXMO7nwfSvhhSc45E1nXfBBEhzLLOxgr1OdbDu55PiDDA==} engines: {node: '>=14'} peerDependencies: @@ -19078,7 +20190,7 @@ packages: open: 9.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vite: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + vite: 4.4.7(@types/node@18.16.19)(terser@5.19.2) transitivePeerDependencies: - rollup - supports-color @@ -19092,7 +20204,7 @@ packages: monaco-editor: 0.40.0 dev: true - /vite-plugin-pages@0.31.0(vite@4.4.4): + /vite-plugin-pages@0.31.0(vite@4.4.7): resolution: {integrity: sha512-fw3onBfVTXQI7rOzAbSZhmfwvk50+3qNnGZpERjmD93c8nEjrGLyd53eFXYMxcJV4KA1vzi4qIHt2+6tS4dEMw==} peerDependencies: '@vue/compiler-sfc': ^2.7.0 || ^3.0.0 @@ -19105,17 +20217,17 @@ packages: debug: 4.3.4 deep-equal: 2.2.1 extract-comments: 1.1.0 - fast-glob: 3.3.0 + fast-glob: 3.3.1 json5: 2.2.3 local-pkg: 0.4.3 picocolors: 1.0.0 - vite: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + vite: 4.4.7(@types/node@18.16.19)(terser@5.19.2) yaml: 2.3.1 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr@3.2.0(rollup@3.26.3)(vite@4.4.4): + /vite-plugin-svgr@3.2.0(rollup@3.26.3)(vite@4.4.7): resolution: {integrity: sha512-Uvq6niTvhqJU6ga78qLKBFJSDvxWhOnyfQSoKpDPMAGxJPo5S3+9hyjExE5YDj6Lpa4uaLkGc1cBgxXov+LjSw==} peerDependencies: vite: ^2.6.0 || 3 || 4 @@ -19123,14 +20235,14 @@ packages: '@rollup/pluginutils': 5.0.2(rollup@3.26.3) '@svgr/core': 7.0.0 '@svgr/plugin-jsx': 7.0.0 - vite: 4.4.4(@types/node@18.16.19)(terser@5.19.1) + vite: 4.4.7(@types/node@18.16.19)(terser@5.19.2) transitivePeerDependencies: - rollup - supports-color dev: true - /vite@4.4.4(@types/node@18.16.19)(terser@5.19.1): - resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} + /vite@4.4.7(@types/node@18.16.19)(terser@5.19.2): + resolution: {integrity: sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -19159,14 +20271,14 @@ packages: dependencies: '@types/node': 18.16.19 esbuild: 0.18.11 - postcss: 8.4.25 + postcss: 8.4.27 rollup: 3.26.3 - terser: 5.19.1 + terser: 5.19.2 optionalDependencies: fsevents: 2.3.2 dev: true - /vitest@0.33.0(@vitest/ui@0.33.0)(jsdom@22.1.0)(terser@5.19.1): + /vitest@0.33.0(@vitest/ui@0.33.0)(jsdom@22.1.0)(terser@5.19.2): resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -19220,8 +20332,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.4(@types/node@18.16.19)(terser@5.19.1) - vite-node: 0.33.0(@types/node@18.16.19)(terser@5.19.1) + vite: 4.4.7(@types/node@18.16.19)(terser@5.19.2) + vite-node: 0.33.0(@types/node@18.16.19)(terser@5.19.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -19238,14 +20350,14 @@ packages: engines: {node: '>=0.10.0'} dev: true - /vue-eslint-parser@9.3.0(eslint@8.44.0): + /vue-eslint-parser@9.3.0(eslint@8.45.0): resolution: {integrity: sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.1 espree: 9.6.0