From b24de2321900815e0f4b618f1345be9a07b0ce8f Mon Sep 17 00:00:00 2001 From: fullex <0xfullex@gmail.com> Date: Mon, 26 May 2025 20:25:57 +0800 Subject: [PATCH 001/388] feat: integrate custom CSS support in SelectionAssistant --- .../selection/action/SelectionActionApp.tsx | 16 +++++++++++++++- .../selection/toolbar/SelectionToolbar.tsx | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/windows/selection/action/SelectionActionApp.tsx b/src/renderer/src/windows/selection/action/SelectionActionApp.tsx index 2514c95ec9..58a7269b7a 100644 --- a/src/renderer/src/windows/selection/action/SelectionActionApp.tsx +++ b/src/renderer/src/windows/selection/action/SelectionActionApp.tsx @@ -15,7 +15,7 @@ import ActionGeneral from './components/ActionGeneral' import ActionTranslate from './components/ActionTranslate' const SelectionActionApp: FC = () => { - const { language } = useSettings() + const { language, customCss } = useSettings() const { t } = useTranslation() @@ -61,6 +61,20 @@ const SelectionActionApp: FC = () => { i18n.changeLanguage(language || navigator.language || defaultLanguage) }, [language]) + useEffect(() => { + let customCssElement = document.getElementById('user-defined-custom-css') as HTMLStyleElement + if (customCssElement) { + customCssElement.remove() + } + + if (customCss) { + customCssElement = document.createElement('style') + customCssElement.id = 'user-defined-custom-css' + customCssElement.textContent = customCss + document.head.appendChild(customCssElement) + } + }, [customCss]) + useEffect(() => { const contentEl = contentElementRef.current if (contentEl) { diff --git a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx index 0679c0a42e..e7eb26e849 100644 --- a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx +++ b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx @@ -95,7 +95,7 @@ const ActionIcons: FC<{ * demo is used in the settings page */ const SelectionToolbar: FC<{ demo?: boolean }> = ({ demo = false }) => { - const { language } = useSettings() + const { language, customCss } = useSettings() const { isCompact, actionItems } = useSelectionAssistant() const [animateKey, setAnimateKey] = useState(0) const [copyIconStatus, setCopyIconStatus] = useState<'normal' | 'success' | 'fail'>('normal') @@ -150,6 +150,20 @@ const SelectionToolbar: FC<{ demo?: boolean }> = ({ demo = false }) => { i18n.changeLanguage(language || navigator.language || defaultLanguage) }, [language]) + useEffect(() => { + let customCssElement = document.getElementById('user-defined-custom-css') as HTMLStyleElement + if (customCssElement) { + customCssElement.remove() + } + + if (customCss) { + customCssElement = document.createElement('style') + customCssElement.id = 'user-defined-custom-css' + customCssElement.textContent = customCss + document.head.appendChild(customCssElement) + } + }, [customCss]) + const onHideCleanUp = () => { setCopyIconStatus('normal') setCopyIconAnimation('none') From 44b07ee35d7ce68869587043c2540322a7d145fe Mon Sep 17 00:00:00 2001 From: beyondkmp Date: Mon, 26 May 2025 16:25:59 +0800 Subject: [PATCH 002/388] fix: adjust order of tools in CodeToolbar constants for correct display --- src/renderer/src/components/CodeToolbar/constants.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/components/CodeToolbar/constants.ts b/src/renderer/src/components/CodeToolbar/constants.ts index 00e7fa7958..4eeec0fa15 100644 --- a/src/renderer/src/components/CodeToolbar/constants.ts +++ b/src/renderer/src/components/CodeToolbar/constants.ts @@ -5,12 +5,12 @@ export const TOOL_SPECS: Record = { copy: { id: 'copy', type: 'core', - order: 10 + order: 11 }, download: { id: 'download', type: 'core', - order: 11 + order: 10 }, edit: { id: 'edit', From 11daf9309457be9c6d3605f2e8a90e22675d12f1 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Mon, 26 May 2025 19:15:57 +0800 Subject: [PATCH 003/388] chore: update @google/genai to version 1.0.1 and remove GeminiService references - Updated the @google/genai dependency in package.json and yarn.lock to version 1.0.1. - Removed the GeminiService and its related references from the codebase to streamline functionality. - Introduced a new CacheService for managing cached data effectively. --- package.json | 4 +- src/main/ipc.ts | 8 - src/main/services/GeminiService.ts | 79 ----- src/renderer/src/pages/files/ContentView.tsx | 6 - src/renderer/src/pages/files/FileList.tsx | 5 - src/renderer/src/pages/files/GeminiFiles.tsx | 102 ------- .../providers/AiProvider/GeminiProvider.ts | 70 ++++- src/renderer/src/services/CacheService.ts | 74 +++++ yarn.lock | 285 ++++++++++++------ 9 files changed, 340 insertions(+), 293 deletions(-) delete mode 100644 src/main/services/GeminiService.ts delete mode 100644 src/renderer/src/pages/files/GeminiFiles.tsx create mode 100644 src/renderer/src/services/CacheService.ts diff --git a/package.json b/package.json index f2cfcf2402..58d02378f6 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "@emotion/is-prop-valid": "^1.3.1", "@eslint-react/eslint-plugin": "^1.36.1", "@eslint/js": "^9.22.0", - "@google/genai": "^0.13.0", + "@google/genai": "^1.0.1", "@hello-pangea/dnd": "^16.6.0", "@kangfenmao/keyv-storage": "^0.1.0", "@modelcontextprotocol/sdk": "^1.11.4", @@ -137,7 +137,6 @@ "@types/react-infinite-scroll-component": "^5.0.0", "@types/react-window": "^1", "@types/tinycolor2": "^1", - "@types/ws": "^8", "@uiw/codemirror-extensions-langs": "^4.23.12", "@uiw/codemirror-themes-all": "^4.23.12", "@uiw/react-codemirror": "^4.23.12", @@ -219,7 +218,6 @@ "pdf-parse@npm:1.1.1": "patch:pdf-parse@npm%3A1.1.1#~/.yarn/patches/pdf-parse-npm-1.1.1-04a6109b2a.patch", "@langchain/openai@npm:^0.3.16": "patch:@langchain/openai@npm%3A0.3.16#~/.yarn/patches/@langchain-openai-npm-0.3.16-e525b59526.patch", "@langchain/openai@npm:>=0.1.0 <0.4.0": "patch:@langchain/openai@npm%3A0.3.16#~/.yarn/patches/@langchain-openai-npm-0.3.16-e525b59526.patch", - "node-gyp": "^9.1.0", "libsql@npm:^0.4.4": "patch:libsql@npm%3A0.4.7#~/.yarn/patches/libsql-npm-0.4.7-444e260fb1.patch", "openai@npm:^4.77.0": "patch:openai@npm%3A4.96.0#~/.yarn/patches/openai-npm-4.96.0-0665b05cb9.patch", "pkce-challenge@npm:^4.1.0": "patch:pkce-challenge@npm%3A4.1.0#~/.yarn/patches/pkce-challenge-npm-4.1.0-fbc51695a3.patch", diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 9c75b514c1..408af62c33 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -18,7 +18,6 @@ import CopilotService from './services/CopilotService' import { ExportService } from './services/ExportService' import FileService from './services/FileService' import FileStorage from './services/FileStorage' -import { GeminiService } from './services/GeminiService' import KnowledgeService from './services/KnowledgeService' import mcpService from './services/MCPService' import NotificationService from './services/NotificationService' @@ -298,13 +297,6 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { } }) - // gemini - ipcMain.handle(IpcChannel.Gemini_UploadFile, GeminiService.uploadFile) - ipcMain.handle(IpcChannel.Gemini_Base64File, GeminiService.base64File) - ipcMain.handle(IpcChannel.Gemini_RetrieveFile, GeminiService.retrieveFile) - ipcMain.handle(IpcChannel.Gemini_ListFiles, GeminiService.listFiles) - ipcMain.handle(IpcChannel.Gemini_DeleteFile, GeminiService.deleteFile) - // mini window ipcMain.handle(IpcChannel.MiniWindow_Show, () => windowService.showMiniWindow()) ipcMain.handle(IpcChannel.MiniWindow_Hide, () => windowService.hideMiniWindow()) diff --git a/src/main/services/GeminiService.ts b/src/main/services/GeminiService.ts deleted file mode 100644 index e7b8310664..0000000000 --- a/src/main/services/GeminiService.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { File, FileState, GoogleGenAI, Pager } from '@google/genai' -import { FileType } from '@types' -import fs from 'fs' - -import { CacheService } from './CacheService' - -export class GeminiService { - private static readonly FILE_LIST_CACHE_KEY = 'gemini_file_list' - private static readonly CACHE_DURATION = 3000 - - static async uploadFile( - _: Electron.IpcMainInvokeEvent, - file: FileType, - { apiKey, baseURL }: { apiKey: string; baseURL: string } - ): Promise { - const sdk = new GoogleGenAI({ - vertexai: false, - apiKey, - httpOptions: { - baseUrl: baseURL - } - }) - - return await sdk.files.upload({ - file: file.path, - config: { - mimeType: 'application/pdf', - name: file.id, - displayName: file.origin_name - } - }) - } - - static async base64File(_: Electron.IpcMainInvokeEvent, file: FileType) { - return { - data: Buffer.from(fs.readFileSync(file.path)).toString('base64'), - mimeType: 'application/pdf' - } - } - - static async retrieveFile(_: Electron.IpcMainInvokeEvent, file: FileType, apiKey: string): Promise { - const sdk = new GoogleGenAI({ vertexai: false, apiKey }) - const cachedResponse = CacheService.get(GeminiService.FILE_LIST_CACHE_KEY) - if (cachedResponse) { - return GeminiService.processResponse(cachedResponse, file) - } - - const response = await sdk.files.list() - CacheService.set(GeminiService.FILE_LIST_CACHE_KEY, response, GeminiService.CACHE_DURATION) - - return GeminiService.processResponse(response, file) - } - - private static async processResponse(response: Pager, file: FileType) { - for await (const f of response) { - if (f.state === FileState.ACTIVE) { - if (f.displayName === file.origin_name && Number(f.sizeBytes) === file.size) { - return f - } - } - } - - return undefined - } - - static async listFiles(_: Electron.IpcMainInvokeEvent, apiKey: string): Promise { - const sdk = new GoogleGenAI({ vertexai: false, apiKey }) - const files: File[] = [] - for await (const f of await sdk.files.list()) { - files.push(f) - } - return files - } - - static async deleteFile(_: Electron.IpcMainInvokeEvent, fileId: string, apiKey: string) { - const sdk = new GoogleGenAI({ vertexai: false, apiKey }) - await sdk.files.delete({ name: fileId }) - } -} diff --git a/src/renderer/src/pages/files/ContentView.tsx b/src/renderer/src/pages/files/ContentView.tsx index 6e3d34283b..6630962921 100644 --- a/src/renderer/src/pages/files/ContentView.tsx +++ b/src/renderer/src/pages/files/ContentView.tsx @@ -5,8 +5,6 @@ import { Col, Image, Row, Spin, Table } from 'antd' import React, { memo } from 'react' import styled from 'styled-components' -import GeminiFiles from './GeminiFiles' - interface ContentViewProps { id: FileTypes | 'all' | string files?: FileType[] @@ -45,10 +43,6 @@ const ContentView: React.FC = ({ id, files, dataSource, column ) } - if (id.startsWith('gemini_')) { - return - } - return ( = ({ id, list, files }) => { ) } - if (id.startsWith('gemini_')) { - return - } - return ( = ({ id }) => { - const { provider } = useProvider(id) - const [files, setFiles] = useState([]) - const [loading, setLoading] = useState(false) - - const fetchFiles = useCallback(async () => { - const files = await window.api.gemini.listFiles(provider.apiKey) - files && setFiles(files.filter((file) => file.state === 'ACTIVE')) - }, [provider]) - - useEffect(() => { - runAsyncFunction(async () => { - try { - setLoading(true) - await fetchFiles() - setLoading(false) - } catch (error: any) { - console.error('Failed to fetch files:', error) - window.message.error(error.message) - setLoading(false) - } - }) - }, [fetchFiles]) - - useEffect(() => { - setFiles([]) - }, [id]) - - if (loading) { - return ( - - - - - - ) - } - - return ( - - - {files.map((file) => ( - { - setFiles(files.filter((f) => f.name !== file.name)) - window.api.gemini.deleteFile(file.name!, provider.apiKey).catch((error) => { - console.error('Failed to delete file:', error) - setFiles((prev) => [...prev, file]) - }) - }} - /> - ) - }} - /> - ))} - - - ) -} - -const Container = styled.div` - width: 100%; -` - -const FileListContainer = styled.div` - display: flex; - flex-direction: column; - gap: 8px; -` - -const LoadingWrapper = styled.div` - display: flex; - justify-content: center; - align-items: center; - min-height: 200px; -` - -export default GeminiFiles diff --git a/src/renderer/src/providers/AiProvider/GeminiProvider.ts b/src/renderer/src/providers/AiProvider/GeminiProvider.ts index 35c8654d32..9a6515b00a 100644 --- a/src/renderer/src/providers/AiProvider/GeminiProvider.ts +++ b/src/renderer/src/providers/AiProvider/GeminiProvider.ts @@ -1,6 +1,7 @@ import { Content, File, + FileState, FinishReason, FunctionCall, GenerateContentConfig, @@ -9,6 +10,7 @@ import { HarmBlockThreshold, HarmCategory, Modality, + Pager, Part, PartUnion, SafetySetting, @@ -27,6 +29,7 @@ import { import { getStoreSetting } from '@renderer/hooks/useSettings' import i18n from '@renderer/i18n' import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/AssistantService' +import { CacheService } from '@renderer/services/CacheService' import { EVENT_NAMES } from '@renderer/services/EventService' import { filterContextMessages, @@ -91,7 +94,7 @@ export default class GeminiProvider extends BaseProvider { const isSmallFile = file.size < smallFileSize if (isSmallFile) { - const { data, mimeType } = await window.api.gemini.base64File(file) + const { data, mimeType } = await this.base64File(file) return { inlineData: { data, @@ -101,7 +104,7 @@ export default class GeminiProvider extends BaseProvider { } // Retrieve file from Gemini uploaded files - const fileMetadata: File | undefined = await window.api.gemini.retrieveFile(file, this.apiKey) + const fileMetadata: File | undefined = await this.retrieveFile(file) if (fileMetadata) { return { @@ -113,10 +116,7 @@ export default class GeminiProvider extends BaseProvider { } // If file is not found, upload it to Gemini - const result = await window.api.gemini.uploadFile(file, { - apiKey: this.apiKey, - baseURL: this.getBaseURL() - }) + const result = await this.uploadFile(file) return { fileData: { @@ -1153,4 +1153,62 @@ export default class GeminiProvider extends BaseProvider { } return } + + private async uploadFile(file: FileType): Promise { + return await this.sdk.files.upload({ + file: file.path, + config: { + mimeType: 'application/pdf', + name: file.id, + displayName: file.origin_name + } + }) + } + + private async base64File(file: FileType) { + const { data } = await window.api.file.base64File(file.id + file.ext) + return { + data, + mimeType: 'application/pdf' + } + } + + private async retrieveFile(file: FileType): Promise { + const cachedResponse = CacheService.get('gemini_file_list') + + if (cachedResponse) { + return this.processResponse(cachedResponse, file) + } + + const response = await this.sdk.files.list() + CacheService.set('gemini_file_list', response, 3000) + + return this.processResponse(response, file) + } + + private async processResponse(response: Pager, file: FileType) { + for await (const f of response) { + if (f.state === FileState.ACTIVE) { + if (f.displayName === file.origin_name && Number(f.sizeBytes) === file.size) { + return f + } + } + } + + return undefined + } + + // @ts-ignore unused + private async listFiles(): Promise { + const files: File[] = [] + for await (const f of await this.sdk.files.list()) { + files.push(f) + } + return files + } + + // @ts-ignore unused + private async deleteFile(fileId: string) { + await this.sdk.files.delete({ name: fileId }) + } } diff --git a/src/renderer/src/services/CacheService.ts b/src/renderer/src/services/CacheService.ts new file mode 100644 index 0000000000..d2984a9984 --- /dev/null +++ b/src/renderer/src/services/CacheService.ts @@ -0,0 +1,74 @@ +interface CacheItem { + data: T + timestamp: number + duration: number +} + +export class CacheService { + private static cache: Map> = new Map() + + /** + * Set cache + * @param key Cache key + * @param data Cache data + * @param duration Cache duration (in milliseconds) + */ + static set(key: string, data: T, duration: number): void { + this.cache.set(key, { + data, + timestamp: Date.now(), + duration + }) + } + + /** + * Get cache + * @param key Cache key + * @returns Returns data if cache exists and not expired, otherwise returns null + */ + static get(key: string): T | null { + const item = this.cache.get(key) + if (!item) return null + + const now = Date.now() + if (now - item.timestamp > item.duration) { + this.remove(key) + return null + } + + return item.data + } + + /** + * Remove specific cache + * @param key Cache key + */ + static remove(key: string): void { + this.cache.delete(key) + } + + /** + * Clear all cache + */ + static clear(): void { + this.cache.clear() + } + + /** + * Check if cache exists and is valid + * @param key Cache key + * @returns boolean + */ + static has(key: string): boolean { + const item = this.cache.get(key) + if (!item) return false + + const now = Date.now() + if (now - item.timestamp > item.duration) { + this.remove(key) + return false + } + + return true + } +} diff --git a/yarn.lock b/yarn.lock index 48d47a1405..d25e6a5b09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2009,15 +2009,17 @@ __metadata: languageName: node linkType: hard -"@google/genai@npm:^0.13.0": - version: 0.13.0 - resolution: "@google/genai@npm:0.13.0" +"@google/genai@npm:^1.0.1": + version: 1.0.1 + resolution: "@google/genai@npm:1.0.1" dependencies: google-auth-library: "npm:^9.14.2" ws: "npm:^8.18.0" zod: "npm:^3.22.4" zod-to-json-schema: "npm:^3.22.4" - checksum: 10c0/b520e6154bd9cefa725f897ee521e97c59c287d23031a36c946385eef409e411d34dd8e43d5a7c618e3572ea5fd5bef86474585ba936d5b42f7655e03b83290b + peerDependencies: + "@modelcontextprotocol/sdk": ^1.11.0 + checksum: 10c0/1b908e4497ba6717598d93369ce54814059fb4879fb7fe9563059bae2298f4b8ceb50fd5ab3908b8fa04ccb90043d69ea824d530794e582476b8392c2d94303b languageName: node linkType: hard @@ -3503,6 +3505,19 @@ __metadata: languageName: node linkType: hard +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + languageName: node + linkType: hard + "@npmcli/fs@npm:^2.1.0": version: 2.1.2 resolution: "@npmcli/fs@npm:2.1.2" @@ -3513,6 +3528,15 @@ __metadata: languageName: node linkType: hard +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + languageName: node + linkType: hard + "@npmcli/move-file@npm:^2.0.0": version: 2.0.1 resolution: "@npmcli/move-file@npm:2.0.1" @@ -5086,7 +5110,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8, @types/ws@npm:^8.5.4": +"@types/ws@npm:^8.5.4": version: 8.18.1 resolution: "@types/ws@npm:8.18.1" dependencies: @@ -5941,7 +5965,7 @@ __metadata: "@emotion/is-prop-valid": "npm:^1.3.1" "@eslint-react/eslint-plugin": "npm:^1.36.1" "@eslint/js": "npm:^9.22.0" - "@google/genai": "npm:^0.13.0" + "@google/genai": "npm:^1.0.1" "@hello-pangea/dnd": "npm:^16.6.0" "@kangfenmao/keyv-storage": "npm:^0.1.0" "@langchain/community": "npm:^0.3.36" @@ -5970,7 +5994,6 @@ __metadata: "@types/react-infinite-scroll-component": "npm:^5.0.0" "@types/react-window": "npm:^1" "@types/tinycolor2": "npm:^1" - "@types/ws": "npm:^8" "@uiw/codemirror-extensions-langs": "npm:^4.23.12" "@uiw/codemirror-themes-all": "npm:^4.23.12" "@uiw/react-codemirror": "npm:^4.23.12" @@ -6079,6 +6102,13 @@ __metadata: languageName: node linkType: hard +"abbrev@npm:^3.0.0": + version: 3.0.1 + resolution: "abbrev@npm:3.0.1" + checksum: 10c0/21ba8f574ea57a3106d6d35623f2c4a9111d9ee3e9a5be47baed46ec2457d2eac46e07a5c4a60186f88cb98abbe3e24f2d4cca70bc2b12f1692523e2209a9ccf + languageName: node + linkType: hard + "abort-controller@npm:^3.0.0": version: 3.0.0 resolution: "abort-controller@npm:3.0.0" @@ -6436,13 +6466,6 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 - languageName: node - linkType: hard - "archiver-utils@npm:^5.0.0, archiver-utils@npm:^5.0.2": version: 5.0.2 resolution: "archiver-utils@npm:5.0.2" @@ -6473,16 +6496,6 @@ __metadata: languageName: node linkType: hard -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: "npm:^1.0.0" - readable-stream: "npm:^3.6.0" - checksum: 10c0/8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 - languageName: node - linkType: hard - "are-we-there-yet@npm:~1.1.2": version: 1.1.7 resolution: "are-we-there-yet@npm:1.1.7" @@ -7009,6 +7022,26 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" + dependencies: + "@npmcli/fs": "npm:^4.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c + languageName: node + linkType: hard + "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" @@ -7522,15 +7555,6 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 10c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 - languageName: node - linkType: hard - "color@npm:^5.0.0": version: 5.0.0 resolution: "color@npm:5.0.0" @@ -7701,7 +7725,7 @@ __metadata: languageName: node linkType: hard -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0, console-control-strings@npm:~1.1.0": +"console-control-strings@npm:^1.0.0, console-control-strings@npm:~1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 @@ -10606,6 +10630,15 @@ __metadata: languageName: node linkType: hard +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" @@ -10658,22 +10691,6 @@ __metadata: languageName: node linkType: hard -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: "npm:^1.0.3 || ^2.0.0" - color-support: "npm:^1.1.3" - console-control-strings: "npm:^1.1.0" - has-unicode: "npm:^2.0.1" - signal-exit: "npm:^3.0.7" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - wide-align: "npm:^1.1.5" - checksum: 10c0/ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c - languageName: node - linkType: hard - "gauge@npm:~2.7.3": version: 2.7.4 resolution: "gauge@npm:2.7.4" @@ -10858,7 +10875,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.0.0, glob@npm:^10.3.12, glob@npm:^10.3.7, glob@npm:^10.4.1": +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.12, glob@npm:^10.3.7, glob@npm:^10.4.1": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -10874,7 +10891,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": +"glob@npm:^7.1.3, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -11130,7 +11147,7 @@ __metadata: languageName: node linkType: hard -"has-unicode@npm:^2.0.0, has-unicode@npm:^2.0.1": +"has-unicode@npm:^2.0.0": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c @@ -12108,6 +12125,13 @@ __metadata: languageName: node linkType: hard +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -13012,7 +13036,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb @@ -13114,7 +13138,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.2.1": +"make-fetch-happen@npm:^10.2.1": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" dependencies: @@ -13138,6 +13162,25 @@ __metadata: languageName: node linkType: hard +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" + dependencies: + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^4.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 + languageName: node + linkType: hard + "mammoth@npm:1.6.0": version: 1.6.0 resolution: "mammoth@npm:1.6.0" @@ -14359,6 +14402,15 @@ __metadata: languageName: node linkType: hard +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + "minipass-fetch@npm:^2.0.3": version: 2.1.2 resolution: "minipass-fetch@npm:2.1.2" @@ -14374,6 +14426,21 @@ __metadata: languageName: node linkType: hard +"minipass-fetch@npm:^4.0.0": + version: 4.0.1 + resolution: "minipass-fetch@npm:4.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c + languageName: node + linkType: hard + "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" @@ -14417,7 +14484,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.4, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 @@ -14736,24 +14803,23 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^9.1.0": - version: 9.4.1 - resolution: "node-gyp@npm:9.4.1" +"node-gyp@npm:latest": + version: 11.2.0 + resolution: "node-gyp@npm:11.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" - glob: "npm:^7.1.4" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^10.0.3" - nopt: "npm:^6.0.0" - npmlog: "npm:^6.0.0" - rimraf: "npm:^3.0.2" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^2.0.2" + tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/f7d676cfa79f27d35edf17fe9c80064123670362352d19729e5dc9393d7e99f1397491c3107eddc0c0e8941442a6244a7ba6c860cfbe4b433b4cae248a55fe10 + checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 languageName: node linkType: hard @@ -14789,6 +14855,17 @@ __metadata: languageName: node linkType: hard +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" + dependencies: + abbrev: "npm:^3.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef + languageName: node + linkType: hard + "normalize-package-data@npm:^2.3.2": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" @@ -14843,18 +14920,6 @@ __metadata: languageName: node linkType: hard -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: "npm:^3.0.0" - console-control-strings: "npm:^1.1.0" - gauge: "npm:^4.0.3" - set-blocking: "npm:^2.0.0" - checksum: 10c0/0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 - languageName: node - linkType: hard - "npx-scope-finder@npm:^1.2.0": version: 1.3.0 resolution: "npx-scope-finder@npm:1.3.0" @@ -15206,6 +15271,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c + languageName: node + linkType: hard + "p-queue@npm:^6.6.2": version: 6.6.2 resolution: "p-queue@npm:6.6.2" @@ -15907,6 +15979,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -16902,7 +16981,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:3, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -17896,7 +17975,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 @@ -18023,7 +18102,7 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.5": +"socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.5": version: 8.0.5 resolution: "socks-proxy-agent@npm:8.0.5" dependencies: @@ -18164,6 +18243,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d + languageName: node + linkType: hard + "ssri@npm:^9.0.0": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -18612,7 +18700,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.12, tar@npm:^6.1.2, tar@npm:^6.2.1": +"tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.12, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -19221,6 +19309,15 @@ __metadata: languageName: node linkType: hard +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" + dependencies: + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc + languageName: node + linkType: hard + "unique-slug@npm:^3.0.0": version: 3.0.0 resolution: "unique-slug@npm:3.0.0" @@ -19230,6 +19327,15 @@ __metadata: languageName: node linkType: hard +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 + languageName: node + linkType: hard + "unist-util-find-after@npm:^5.0.0": version: 5.0.0 resolution: "unist-util-find-after@npm:5.0.0" @@ -19975,6 +20081,17 @@ __metadata: languageName: node linkType: hard +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + languageName: node + linkType: hard + "why-is-node-running@npm:^2.3.0": version: 2.3.0 resolution: "why-is-node-running@npm:2.3.0" @@ -19994,7 +20111,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.0, wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.0": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: From c77d6270779b4fab4fe81afdf19e2394232ccb51 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Mon, 26 May 2025 19:37:31 +0800 Subject: [PATCH 004/388] chore: update electron-builder configuration to refine file exclusion patterns - Added exclusions for various distribution directories and module types to optimize the build process. - Updated license file exclusions to be more inclusive of different casing variations. --- electron-builder.yml | 5 +- electron.vite.config.ts | 20 +- .../WebSearchProvider/BochaProvider.ts | 2 +- src/renderer/src/types/index.ts | 4 +- src/renderer/src/types/model.ts | 222 ------------------ src/renderer/src/types/newMessage.ts | 2 +- src/renderer/src/{types => utils}/bocha.ts | 0 7 files changed, 9 insertions(+), 246 deletions(-) delete mode 100644 src/renderer/src/types/model.ts rename src/renderer/src/{types => utils}/bocha.ts (100%) diff --git a/electron-builder.yml b/electron-builder.yml index 5e1f97f001..631b483cdc 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -36,8 +36,11 @@ files: - '!**/*.{spec,test}.{js,jsx,ts,tsx}' - '!**/*.min.*.map' - '!**/*.d.ts' + - '!**/dist/es6/**' + - '!**/dist/demo/**' + - '!**/amd/**' - '!**/{.DS_Store,Thumbs.db,thumbs.db,__pycache__}' - - '!**/{LICENSE,LICENSE.txt,LICENSE-MIT.txt,*.LICENSE.txt,NOTICE.txt,README.md,readme.md,CHANGELOG.md}' + - '!**/{LICENSE,license,LICENSE.*,*.LICENSE.txt,NOTICE.txt,README.md,readme.md,CHANGELOG.md}' - '!node_modules/rollup-plugin-visualizer' - '!node_modules/js-tiktoken' - '!node_modules/@tavily/core/node_modules/js-tiktoken' diff --git a/electron.vite.config.ts b/electron.vite.config.ts index b6e0148e81..7f4a4e3a66 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -9,25 +9,7 @@ const visualizerPlugin = (type: 'renderer' | 'main') => { export default defineConfig({ main: { - plugins: [ - externalizeDepsPlugin({ - exclude: [ - '@cherrystudio/embedjs', - '@cherrystudio/embedjs-openai', - '@cherrystudio/embedjs-loader-web', - '@cherrystudio/embedjs-loader-markdown', - '@cherrystudio/embedjs-loader-msoffice', - '@cherrystudio/embedjs-loader-xml', - '@cherrystudio/embedjs-loader-pdf', - '@cherrystudio/embedjs-loader-sitemap', - '@cherrystudio/embedjs-libsql', - '@cherrystudio/embedjs-loader-image', - 'p-queue', - 'webdav' - ] - }), - ...visualizerPlugin('main') - ], + plugins: [externalizeDepsPlugin(), ...visualizerPlugin('main')], resolve: { alias: { '@main': resolve('src/main'), diff --git a/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts b/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts index 63ef9b0a9e..6d2bc2401e 100644 --- a/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts @@ -1,6 +1,6 @@ import { WebSearchState } from '@renderer/store/websearch' import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' -import { BochaSearchParams, BochaSearchResponse } from '@renderer/types/bocha' +import { BochaSearchParams, BochaSearchResponse } from '@renderer/utils/bocha' import BaseWebSearchProvider from './BaseWebSearchProvider' diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 4b29fb5caa..e85c45a6af 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -1,7 +1,7 @@ import type { WebSearchResultBlock } from '@anthropic-ai/sdk/resources' import type { GroundingMetadata } from '@google/genai' import type OpenAI from 'openai' -import React from 'react' +import type { CSSProperties } from 'react' import type { Message } from './newMessage' @@ -274,7 +274,7 @@ export type MinAppType = { url: string bodered?: boolean background?: string - style?: React.CSSProperties + style?: CSSProperties addTime?: string type?: 'Custom' | 'Default' // Added the 'type' property } diff --git a/src/renderer/src/types/model.ts b/src/renderer/src/types/model.ts deleted file mode 100644 index ed3763e2a5..0000000000 --- a/src/renderer/src/types/model.ts +++ /dev/null @@ -1,222 +0,0 @@ -import { z } from 'zod' - -export const InputType = z.enum(['text', 'image', 'audio', 'video', 'document']) -export type InputType = z.infer - -export const OutputType = z.enum(['text', 'image', 'audio', 'video', 'vector']) -export type OutputType = z.infer - -export const OutputMode = z.enum(['sync', 'streaming']) -export type OutputMode = z.infer - -export const ModelCapability = z.enum([ - 'audioGeneration', - 'cache', - 'codeExecution', - 'embedding', - 'fineTuning', - 'imageGeneration', - 'OCR', - 'realTime', - 'rerank', - 'reasoning', - 'streaming', - 'structuredOutput', - 'textGeneration', - 'translation', - 'transcription', - 'toolUse', - 'videoGeneration', - 'webSearch' -]) -export type ModelCapability = z.infer - -export const ModelSchema = z - .object({ - id: z.string(), - modelId: z.string(), - providerId: z.string(), - name: z.string(), - group: z.string(), - description: z.string().optional(), - owned_by: z.string().optional(), - - supportedInputs: z.array(InputType), - supportedOutputs: z.array(OutputType), - supportedOutputModes: z.array(OutputMode), - - limits: z - .object({ - inputTokenLimit: z.number().optional(), - outputTokenLimit: z.number().optional(), - contextWindow: z.number().optional() - }) - .optional(), - - price: z - .object({ - inputTokenPrice: z.number().optional(), - outputTokenPrice: z.number().optional() - }) - .optional(), - - capabilities: z.array(ModelCapability) - }) - .refine( - (data) => { - // 如果模型支持streaming,则必须支持streamingOutputMode - if (data.capabilities.includes('streaming') && !data.supportedOutputModes.includes('streaming')) { - return false - } - - // 如果模型有OCR能力,则必须支持图像输入类型或者文件输入类型 - if ( - data.capabilities.includes('OCR') && - !data.supportedInputs.includes('image') && - !data.supportedInputs.includes('document') - ) { - return false - } - - // 如果模型有图像生成能力,则必须支持图像输出 - if (data.capabilities.includes('imageGeneration') && !data.supportedOutputs.includes('image')) { - return false - } - - // 如果有音频生成能力,则必须支持音频输出类型 - if (data.capabilities.includes('audioGeneration') && !data.supportedOutputs.includes('audio')) { - return false - } - - // 如果有音频识别能力,则必须支持音频输入类型 - if ( - (data.capabilities.includes('transcription') || data.capabilities.includes('translation')) && - !data.supportedInputs.includes('audio') - ) { - return false - } - - // 如果有视频生成能力,则必须支持视频输出类型 - if (data.capabilities.includes('videoGeneration') && !data.supportedOutputs.includes('video')) { - return false - } - - // 如果模型有embedding能力,则必须支持向量输出类型 - if (data.capabilities.includes('embedding') && !data.supportedOutputs.includes('vector')) { - return false - } - - // 如果模型有toolUse, Reasoning, streaming, cache, codeExecution, imageGeneration, audioGeneration, videoGeneration, webSearch能力,则必须支持文字的输入 - if ( - (data.capabilities.includes('toolUse') || - data.capabilities.includes('reasoning') || - data.capabilities.includes('streaming') || - data.capabilities.includes('cache') || - data.capabilities.includes('codeExecution') || - data.capabilities.includes('imageGeneration') || - data.capabilities.includes('audioGeneration') || - data.capabilities.includes('videoGeneration') || - data.capabilities.includes('webSearch')) && - !data.supportedInputs.includes('text') - ) { - return false - } - - // 如果模型有toolUse, Reasoning, streaming, cache, codeExecution, OCR, textGeneration, translation, transcription, webSearch, structuredOutput能力,则必须支持文字的输出 - if ( - (data.capabilities.includes('toolUse') || - data.capabilities.includes('reasoning') || - data.capabilities.includes('streaming') || - data.capabilities.includes('cache') || - data.capabilities.includes('codeExecution') || - data.capabilities.includes('OCR') || - data.capabilities.includes('textGeneration') || - data.capabilities.includes('translation') || - data.capabilities.includes('transcription') || - data.capabilities.includes('webSearch') || - data.capabilities.includes('structuredOutput')) && - !data.supportedOutputs.includes('text') - ) { - return false - } - - return true - }, - { - message: 'ModelCard has inconsistent capabilities and supported input/output type' - } - ) - -export type ModelCard = z.infer - -export function createModelCard(model: ModelCard): ModelCard { - return ModelSchema.parse(model) -} - -export function supportesInputType(model: ModelCard, inputType: InputType) { - return model.supportedInputs.includes(inputType) -} - -export function supportesOutputType(model: ModelCard, outputType: OutputType) { - return model.supportedOutputs.includes(outputType) -} - -export function supportesOutputMode(model: ModelCard, outputMode: OutputMode) { - return model.supportedOutputModes.includes(outputMode) -} - -export function supportesCapability(model: ModelCard, capability: ModelCapability) { - return model.capabilities.includes(capability) -} - -export function isVisionModel(model: ModelCard) { - return supportesInputType(model, 'image') -} - -export function isImageGenerationModel(model: ModelCard) { - return isVisionModel(model) && supportesCapability(model, 'imageGeneration') -} - -export function isAudioModel(model: ModelCard) { - return supportesInputType(model, 'audio') -} - -export function isAudioGenerationModel(model: ModelCard) { - return supportesCapability(model, 'audioGeneration') -} - -export function isVideoModel(model: ModelCard) { - return supportesInputType(model, 'video') -} - -export function isEmbedModel(model: ModelCard) { - return supportesOutputType(model, 'vector') && supportesCapability(model, 'embedding') -} - -export function isTextEmbeddingModel(model: ModelCard) { - return isEmbedModel(model) && supportesInputType(model, 'text') && model.supportedInputs.length === 1 -} - -export function isMultiModalEmbeddingModel(model: ModelCard) { - return isEmbedModel(model) && model.supportedInputs.length > 1 -} - -export function isRerankModel(model: ModelCard) { - return supportesCapability(model, 'rerank') -} - -export function isReasoningModel(model: ModelCard) { - return supportesCapability(model, 'reasoning') -} - -export function isToolUseModel(model: ModelCard) { - return supportesCapability(model, 'toolUse') -} - -export function isOnlyStreamingModel(model: ModelCard) { - return ( - supportesCapability(model, 'streaming') && - supportesOutputMode(model, 'streaming') && - model.supportedOutputModes.length === 1 - ) -} diff --git a/src/renderer/src/types/newMessage.ts b/src/renderer/src/types/newMessage.ts index 6005d75db8..5e9a263ae2 100644 --- a/src/renderer/src/types/newMessage.ts +++ b/src/renderer/src/types/newMessage.ts @@ -1,4 +1,4 @@ -import { CompletionUsage } from 'openai/resources' +import type { CompletionUsage } from 'openai/resources' import type { Assistant, diff --git a/src/renderer/src/types/bocha.ts b/src/renderer/src/utils/bocha.ts similarity index 100% rename from src/renderer/src/types/bocha.ts rename to src/renderer/src/utils/bocha.ts From 2a996e2c9ad2916e4fa2ca35595c6e7bbbac3065 Mon Sep 17 00:00:00 2001 From: MyPrototypeWhat <43230886+MyPrototypeWhat@users.noreply.github.com> Date: Tue, 27 May 2025 12:10:09 +0800 Subject: [PATCH 005/388] fix(MainTextBlock): adjust whiteSpace style for user role messages (#6501) --- src/renderer/src/pages/home/Messages/Blocks/MainTextBlock.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/src/pages/home/Messages/Blocks/MainTextBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/MainTextBlock.tsx index 3e12940c28..403e59fa60 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/MainTextBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/MainTextBlock.tsx @@ -163,7 +163,7 @@ const MainTextBlock: React.FC = ({ block, citationBlockId, role, mentions )} {role === 'user' && !renderInputMessageAsMarkdown ? ( -

+

{block.content}

) : ( From 737b8f02b14999bc71a747ba384ef98b098d98a8 Mon Sep 17 00:00:00 2001 From: shiquda Date: Tue, 27 May 2025 12:51:49 +0800 Subject: [PATCH 006/388] feat: add title to selection action button in compact mode (#6498) * feat: add title prototype to selection action button in compact mode * fix: optimize the display name logic for action buttons in the selection toolbar --- .../src/windows/selection/toolbar/SelectionToolbar.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx index e7eb26e849..0b087a11ea 100644 --- a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx +++ b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx @@ -65,8 +65,10 @@ const ActionIcons: FC<{ const renderActionButton = useCallback( (action: ActionItem) => { + const displayName = action.isBuiltIn ? t(action.name) : action.name + return ( - handleAction(action)}> + handleAction(action)} title={isCompact ? displayName : undefined}> {action.id === 'copy' ? ( renderCopyIcon() @@ -79,9 +81,7 @@ const ActionIcons: FC<{ /> )} - {!isCompact && ( - {action.isBuiltIn ? t(action.name) : action.name} - )} + {!isCompact && {displayName}} ) }, From 253075e33246bd02cd7f80f1adf8f8826b8e2c19 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 27 May 2025 16:57:18 +0800 Subject: [PATCH 007/388] fix: remove tiktoken --- ...langchain-core-npm-0.3.44-41d5c3cb0a.patch | 37 +++++++++++++++++++ package.json | 3 +- yarn.lock | 22 ++++++++++- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 .yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch diff --git a/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch b/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch new file mode 100644 index 0000000000..e1be294752 --- /dev/null +++ b/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch @@ -0,0 +1,37 @@ +diff --git a/dist/utils/tiktoken.js b/dist/utils/tiktoken.js +index 8e41ee6f00f2f9c7fa2c59fa2b2f4297634b97aa..6708abfaabee108b8967c3fbd7fccc8dfb95e693 100644 +--- a/dist/utils/tiktoken.js ++++ b/dist/utils/tiktoken.js +@@ -3,18 +3,20 @@ import { AsyncCaller } from "./async_caller.js"; + const cache = {}; + const caller = /* #__PURE__ */ new AsyncCaller({}); + export async function getEncoding(encoding) { +- if (!(encoding in cache)) { +- cache[encoding] = caller +- .fetch(`https://tiktoken.pages.dev/js/${encoding}.json`) +- .then((res) => res.json()) +- .then((data) => new Tiktoken(data)) +- .catch((e) => { +- delete cache[encoding]; +- throw e; +- }); +- } +- return await cache[encoding]; ++ // if (!(encoding in cache)) { ++ // cache[encoding] = caller ++ // .fetch(`https://tiktoken.pages.dev/js/${encoding}.json`) ++ // .then((res) => res.json()) ++ // .then((data) => new Tiktoken(data)) ++ // .catch((e) => { ++ // delete cache[encoding]; ++ // throw e; ++ // }); ++ // } ++ // return await cache[encoding]; ++ throw new Error("TikToken Not implemented"); + } + export async function encodingForModel(model) { +- return getEncoding(getEncodingNameForModel(model)); ++ // return getEncoding(getEncodingNameForModel(model)); ++ throw new Error("TikToken Not implemented"); + } diff --git a/package.json b/package.json index 58d02378f6..e4f05157d0 100644 --- a/package.json +++ b/package.json @@ -223,7 +223,8 @@ "pkce-challenge@npm:^4.1.0": "patch:pkce-challenge@npm%3A4.1.0#~/.yarn/patches/pkce-challenge-npm-4.1.0-fbc51695a3.patch", "app-builder-lib@npm:26.0.13": "patch:app-builder-lib@npm%3A26.0.13#~/.yarn/patches/app-builder-lib-npm-26.0.13-a064c9e1d0.patch", "openai@npm:^4.87.3": "patch:openai@npm%3A4.96.0#~/.yarn/patches/openai-npm-4.96.0-0665b05cb9.patch", - "app-builder-lib@npm:26.0.15": "patch:app-builder-lib@npm%3A26.0.15#~/.yarn/patches/app-builder-lib-npm-26.0.15-360e5b0476.patch" + "app-builder-lib@npm:26.0.15": "patch:app-builder-lib@npm%3A26.0.15#~/.yarn/patches/app-builder-lib-npm-26.0.15-360e5b0476.patch", + "@langchain/core@npm:^0.3.26": "patch:@langchain/core@npm%3A0.3.44#~/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch" }, "packageManager": "yarn@4.9.1", "lint-staged": { diff --git a/yarn.lock b/yarn.lock index d25e6a5b09..674a075f6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3001,7 +3001,7 @@ __metadata: languageName: node linkType: hard -"@langchain/core@npm:^0.3.26": +"@langchain/core@npm:0.3.44": version: 0.3.44 resolution: "@langchain/core@npm:0.3.44" dependencies: @@ -3021,6 +3021,26 @@ __metadata: languageName: node linkType: hard +"@langchain/core@patch:@langchain/core@npm%3A0.3.44#~/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch": + version: 0.3.44 + resolution: "@langchain/core@patch:@langchain/core@npm%3A0.3.44#~/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch::version=0.3.44&hash=c14420" + dependencies: + "@cfworker/json-schema": "npm:^4.0.2" + ansi-styles: "npm:^5.0.0" + camelcase: "npm:6" + decamelize: "npm:1.2.0" + js-tiktoken: "npm:^1.0.12" + langsmith: "npm:>=0.2.8 <0.4.0" + mustache: "npm:^4.2.0" + p-queue: "npm:^6.6.2" + p-retry: "npm:4" + uuid: "npm:^10.0.0" + zod: "npm:^3.22.4" + zod-to-json-schema: "npm:^3.22.3" + checksum: 10c0/184fa7720f49fe4619661bcc5f12ed2a778520dd9f0da3c2d97f1b404f0a8697fa4b3f5cf96652234ae96c29b07fb4f9ec48260c3d1233e92286c87bca56f5fd + languageName: node + linkType: hard + "@langchain/openai@npm:0.3.16": version: 0.3.16 resolution: "@langchain/openai@npm:0.3.16" From 332aa456184e7033ab8b066f56316ccd1a762a8e Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 27 May 2025 16:57:31 +0800 Subject: [PATCH 008/388] chore: remove electron-icon-builder --- package.json | 2 - yarn.lock | 1754 +------------------------------------------------- 2 files changed, 23 insertions(+), 1733 deletions(-) diff --git a/package.json b/package.json index e4f05157d0..5a6d7c4546 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "publish": "yarn build:check && yarn release patch push", "pulish:artifacts": "cd packages/artifacts && npm publish && cd -", "generate:agents": "yarn workspace @cherry-studio/database agents", - "generate:icons": "electron-icon-builder --input=./build/logo.png --output=build", "analyze:renderer": "VISUALIZER_RENDERER=true yarn build", "analyze:main": "VISUALIZER_MAIN=true yarn build", "typecheck": "npm run typecheck:node && npm run typecheck:web", @@ -157,7 +156,6 @@ "electron": "35.4.0", "electron-builder": "26.0.15", "electron-devtools-installer": "^3.2.0", - "electron-icon-builder": "^2.0.1", "electron-vite": "^3.1.0", "emittery": "^1.0.3", "emoji-picker-element": "^1.22.1", diff --git a/yarn.lock b/yarn.lock index 674a075f6a..e3335893ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -421,7 +421,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.10.4, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.16.7, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.6, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.1, @babel/runtime@npm:^7.24.4, @babel/runtime@npm:^7.24.7, @babel/runtime@npm:^7.24.8, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.10.4, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.16.7, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.6, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.1, @babel/runtime@npm:^7.24.4, @babel/runtime@npm:^7.24.7, @babel/runtime@npm:^7.24.8, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.9.2": version: 7.27.0 resolution: "@babel/runtime@npm:7.27.0" dependencies: @@ -2132,430 +2132,6 @@ __metadata: languageName: node linkType: hard -"@jimp/bmp@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/bmp@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - bmp-js: "npm:^0.1.0" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/f1c848f2347eca262d7a63c90909d32d7469db9d841a476184228ac9761c5fffe5c5f3ed55bbf77ed7c7467deb6b27a70b0bed6b1d98800489acd3cc94ca8379 - languageName: node - linkType: hard - -"@jimp/core@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/core@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - any-base: "npm:^1.1.0" - buffer: "npm:^5.2.0" - exif-parser: "npm:^0.1.12" - file-type: "npm:^16.5.4" - load-bmfont: "npm:^1.3.1" - mkdirp: "npm:^0.5.1" - phin: "npm:^2.9.1" - pixelmatch: "npm:^4.0.2" - tinycolor2: "npm:^1.4.1" - checksum: 10c0/6554c98da909050164850bcc34b12d08cb156d16b5684bddb9cc97e51ca317b9ac310faf09a6d1813d8cbf7b8853365388acf1ee62be25134e9fc09afb573e9a - languageName: node - linkType: hard - -"@jimp/custom@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/custom@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/core": "npm:^0.16.13" - checksum: 10c0/b494873e9477e8baf709d24cfa90f9b4576c76d72e682229a2f64751677b43044528932df0c6af125c228929d1ddc2d13e8acec7048c91964da4addec4d3edd5 - languageName: node - linkType: hard - -"@jimp/gif@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/gif@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - gifwrap: "npm:^0.9.2" - omggif: "npm:^1.0.9" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/eea13192429371fcd814f3321f8f236d15e4fdd1ae7ae3f28dbe6cde5d43adffcc7ee3459cf420a0b963581f8f9331f19cc10637b6f419900be10bf8a1679212 - languageName: node - linkType: hard - -"@jimp/jpeg@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/jpeg@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - jpeg-js: "npm:^0.4.2" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/2d0765fd996d5ebe376ab09ad225f25c6efe404fe10d658d07c48746b0e124a8e0b5a37145d0f464e1ad2b2a7aca329b04b59db624106a0e21566707630bb357 - languageName: node - linkType: hard - -"@jimp/plugin-blit@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-blit@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/3093a89dd9869adb0fa35bab3d701d016f34acc040bd5ad39a1515db84187c5f507a77b2fa8070aeed248280653e5cf3a8b97e9ffaa5a1445eb10edb1843dfac - languageName: node - linkType: hard - -"@jimp/plugin-blur@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-blur@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/c9b71941e767b525dd9ad4f6af796435561a1993a9c8030bbae17d25f1ae45542b7fbace0302e862a020bc4982001a0f17ab5f5b8a72afd2000838eb1107d2aa - languageName: node - linkType: hard - -"@jimp/plugin-circle@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-circle@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/a60e9815cb8ddc48910bd725c121e43b3ccf2bdf3e700d1137889346ab55f1f988ea9ebac89e6e35c7d8972d29a02fb0cbaa57805e7ae4ffd714b33d5284aebc - languageName: node - linkType: hard - -"@jimp/plugin-color@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-color@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - tinycolor2: "npm:^1.4.1" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/45774210868a90a05773e441234e1238d0a54cc906f3eac4dc11b919b73fb1eb7fe35939a8e821cc540ce039ccb93e1e9b2921f74e110ebefa101b2d74335d2b - languageName: node - linkType: hard - -"@jimp/plugin-contain@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-contain@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-blit": ">=0.3.5" - "@jimp/plugin-resize": ">=0.3.5" - "@jimp/plugin-scale": ">=0.3.5" - checksum: 10c0/cbde61ed91de8137a9a7b456e45fcec72152a86c5766304072b6d155179a7d93e6483ece86f162aa45f3e3b12c0de90efcd8264215cce05cdfb50b8c36107ad1 - languageName: node - linkType: hard - -"@jimp/plugin-cover@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-cover@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-crop": ">=0.3.5" - "@jimp/plugin-resize": ">=0.3.5" - "@jimp/plugin-scale": ">=0.3.5" - checksum: 10c0/8ba286d728530a9574d08864a071e8cb6e2622a58877310a130c69a88fde01e71357baf625ae5f0d1c2662530b73c78544cb22194cf927c6f9090d45ff3f38ad - languageName: node - linkType: hard - -"@jimp/plugin-crop@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-crop@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/83ba3169c25591376cb55e8f099315b6e83a778611d357af3bfbdd7b68389f99e127555c81326cff177e86e320fd88c547639e8d83b032c853766cc3eb916643 - languageName: node - linkType: hard - -"@jimp/plugin-displace@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-displace@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/6ded4193dd6633f2d1bb46016c10bb017ded32aa5fd54d38424c51e0a5d85fec34e4f9d8bc30d93266a14e65506a9328e37d35043f662e5f9ed0777cccdfa213 - languageName: node - linkType: hard - -"@jimp/plugin-dither@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-dither@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/463fc30327f661a46d4acf3d0f9aa78b1c0dc4d06407ae1c375775c294b3b7bd28c010db2d334b7c5dc9edd402302edad4522c2d324554ec3f34ce94da44a956 - languageName: node - linkType: hard - -"@jimp/plugin-fisheye@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-fisheye@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/21c3600e289bc2e696ad5933dcbe885c9b42a02bd1afc6a3ab0b67728d96b8a09fd4db1ef757588039716801e49290016d7dea1d0e9e32ca43ca028d7c2cf132 - languageName: node - linkType: hard - -"@jimp/plugin-flip@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-flip@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-rotate": ">=0.3.5" - checksum: 10c0/6487156ad8fb94f51706506ff5f9418a1b804efc8cdb9dbf62a80bd72930d88aade881a606b7c1ee76ad610179e5d8ff09ed139a9bb43d42bf0319f09194418b - languageName: node - linkType: hard - -"@jimp/plugin-gaussian@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-gaussian@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/9ea4fc2b6a4f03ebbfd545e1ec75fccd91e6a7d200bde84cfdaefcb0c5f945c138984accbdcb8ac326cacae395e3a22a8b05a742042d1f04b1b029bb793ca5ed - languageName: node - linkType: hard - -"@jimp/plugin-invert@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-invert@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/fb606b5324aa16f2dd73c7bccc0d67b536235d726d53f0dd209ca54c8ce5cfee3932ace9876991f093a35a551105102a9abb0424dee37152d873f56cf3811b3f - languageName: node - linkType: hard - -"@jimp/plugin-mask@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-mask@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/fb14710a69dde875ce88d70549176bfa73fd46ce16960520e8328a00d31bcc2e9d73f0f9b125fca15f2e37963abe4be1880ba9d6c8d3c186d6ece36c03f51bf1 - languageName: node - linkType: hard - -"@jimp/plugin-normalize@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-normalize@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/0bb9436c3283f8140a7eca1e2816e3eed1ed7dc227a12d4c775889fdbda6fe419475a595eed3e31592e4f210a099c31483bb256be815de7d5e471c759850e61a - languageName: node - linkType: hard - -"@jimp/plugin-print@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-print@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - load-bmfont: "npm:^1.4.0" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-blit": ">=0.3.5" - checksum: 10c0/dca1eee958e846708bc6304a01353fda2093146c91db47d5f650421d90828e979f127153b7ed13d857f643ba0367a761debaea31944c7a14d8fa4919f0278ccf - languageName: node - linkType: hard - -"@jimp/plugin-resize@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-resize@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/4eb26ed6408e33d4ce380007669cfdaa4f88cf36685dffb63093c330f5d5860d46ed552cfffa366f3f3d38686b365d45c1051499a9688a57f51cebc3d9e5a4d4 - languageName: node - linkType: hard - -"@jimp/plugin-rotate@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-rotate@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-blit": ">=0.3.5" - "@jimp/plugin-crop": ">=0.3.5" - "@jimp/plugin-resize": ">=0.3.5" - checksum: 10c0/2cd302a83ce20bcf8ee65f7d3bb68326fba44de16521f27df197df673c9076ad21a77d6d49922127f6a1a07b42a5bb00d7e95f9fbe220018d796df3df3417d92 - languageName: node - linkType: hard - -"@jimp/plugin-scale@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-scale@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-resize": ">=0.3.5" - checksum: 10c0/004df71ba5afa2e30f6ca3945f90b781adbe1e259b293ec40e3d0fabb1656d0dc61b47ec2985cf6f0400020a97e12a5e071dd48c827d5ebb6aee98df3883cb6a - languageName: node - linkType: hard - -"@jimp/plugin-shadow@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-shadow@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-blur": ">=0.3.5" - "@jimp/plugin-resize": ">=0.3.5" - checksum: 10c0/d40eb56482b881564847d96ff39bf3abff560c252bca583ed2b7424537c1ce2d0b9d8ad832176570dbfe48245ba61e3049afcc7b51b629dfe791af6546342d17 - languageName: node - linkType: hard - -"@jimp/plugin-threshold@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugin-threshold@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - peerDependencies: - "@jimp/custom": ">=0.3.5" - "@jimp/plugin-color": ">=0.8.0" - "@jimp/plugin-resize": ">=0.8.0" - checksum: 10c0/a06263e98284c5e22d729a0f75aaa4f0f0017dd98983006d77d55ac43641a9cc9840d327264e6cd8c60207c59d5023bf90324690d89cf4964be6812af0c0b8ac - languageName: node - linkType: hard - -"@jimp/plugins@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/plugins@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/plugin-blit": "npm:^0.16.13" - "@jimp/plugin-blur": "npm:^0.16.13" - "@jimp/plugin-circle": "npm:^0.16.13" - "@jimp/plugin-color": "npm:^0.16.13" - "@jimp/plugin-contain": "npm:^0.16.13" - "@jimp/plugin-cover": "npm:^0.16.13" - "@jimp/plugin-crop": "npm:^0.16.13" - "@jimp/plugin-displace": "npm:^0.16.13" - "@jimp/plugin-dither": "npm:^0.16.13" - "@jimp/plugin-fisheye": "npm:^0.16.13" - "@jimp/plugin-flip": "npm:^0.16.13" - "@jimp/plugin-gaussian": "npm:^0.16.13" - "@jimp/plugin-invert": "npm:^0.16.13" - "@jimp/plugin-mask": "npm:^0.16.13" - "@jimp/plugin-normalize": "npm:^0.16.13" - "@jimp/plugin-print": "npm:^0.16.13" - "@jimp/plugin-resize": "npm:^0.16.13" - "@jimp/plugin-rotate": "npm:^0.16.13" - "@jimp/plugin-scale": "npm:^0.16.13" - "@jimp/plugin-shadow": "npm:^0.16.13" - "@jimp/plugin-threshold": "npm:^0.16.13" - timm: "npm:^1.6.1" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/ecf1a7e0d0d34b2930541fd491f75362cc3271d47976a051c1750c5edfd70f4e2cb912c1211384cee42af14c3975a4943d870f9076680c0b9a28dbb0bfd0b71c - languageName: node - linkType: hard - -"@jimp/png@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/png@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/utils": "npm:^0.16.13" - pngjs: "npm:^3.3.3" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/24823791c9daa07a85c69a17a9c7ef7cf4927b084da8c28f2d58304aa44973254a9801721c69771ce410e439fd52d8ed3f4b0a2aec52111bad56032f0a81cbbe - languageName: node - linkType: hard - -"@jimp/tiff@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/tiff@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - utif: "npm:^2.0.1" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/7b900fa7dd899f6a51c3227ad2e2788ff26861128f1c8ecda961b9e6494dd69dba18cae7005a22aac99d27de4eb81fe9cbeddb2944c4db60f6dc1a815f19ae68 - languageName: node - linkType: hard - -"@jimp/types@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/types@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/bmp": "npm:^0.16.13" - "@jimp/gif": "npm:^0.16.13" - "@jimp/jpeg": "npm:^0.16.13" - "@jimp/png": "npm:^0.16.13" - "@jimp/tiff": "npm:^0.16.13" - timm: "npm:^1.6.1" - peerDependencies: - "@jimp/custom": ">=0.3.5" - checksum: 10c0/abe87276aebc6c3711d93fff57b7de385cd279d2727c82a683016d2196ed77076a3a87005aab336dec1c80b3ac1478a2c7ad025ac01fe1bb7cd5bd4aa069b586 - languageName: node - linkType: hard - -"@jimp/utils@npm:^0.16.13": - version: 0.16.13 - resolution: "@jimp/utils@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - regenerator-runtime: "npm:^0.13.3" - checksum: 10c0/632fcd0d4336d2f381aea5d5f64e4b7b1cce4016c5ff511ce4767ebd216550a383eb5246098a997e215c6925ef04cfe0ae58e30e8889ea0774ca255017218be5 - languageName: node - linkType: hard - "@jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.8 resolution: "@jridgewell/gen-mapping@npm:0.3.8" @@ -4973,13 +4549,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:16.9.1": - version: 16.9.1 - resolution: "@types/node@npm:16.9.1" - checksum: 10c0/17877153b2fe748e85dd85432c7d6776cfaced7fd69f1998d005812d4865ac02e192a3adde7869ba8f449550f0a80ea6e3369e449a07c587e71222c56478e7d4 - languageName: node - linkType: hard - "@types/node@npm:^18.11.18, @types/node@npm:^18.19.9": version: 18.19.86 resolution: "@types/node@npm:18.19.86" @@ -6038,7 +5607,6 @@ __metadata: electron: "npm:35.4.0" electron-builder: "npm:26.0.15" electron-devtools-installer: "npm:^3.2.0" - electron-icon-builder: "npm:^2.0.1" electron-log: "npm:^5.1.5" electron-store: "npm:^8.2.0" electron-updater: "npm:6.6.4" @@ -6231,7 +5799,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4": +"ajv@npm:^6.10.0, ajv@npm:^6.12.0, ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -6285,15 +5853,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b - languageName: node - linkType: hard - "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -6377,13 +5936,6 @@ __metadata: languageName: node linkType: hard -"any-base@npm:^1.1.0": - version: 1.1.0 - resolution: "any-base@npm:1.1.0" - checksum: 10c0/1255cccb2c2ead4aa182eca000fd8aa0c1991d91781ff54e26323c132117ed23eb10eef057c0dcf1d919ab30d78e5b11bd8d88940352fc84586ecb961cc76466 - languageName: node - linkType: hard - "app-builder-bin@npm:5.0.0-alpha.12": version: 5.0.0-alpha.12 resolution: "app-builder-bin@npm:5.0.0-alpha.12" @@ -6542,18 +6094,6 @@ __metadata: languageName: node linkType: hard -"args@npm:^5.0.1": - version: 5.0.3 - resolution: "args@npm:5.0.3" - dependencies: - camelcase: "npm:5.0.0" - chalk: "npm:2.4.2" - leven: "npm:2.1.0" - mri: "npm:1.1.4" - checksum: 10c0/213871ae97d6f5990dc4637f53e48feef8566b2fd6d5cc9cb46ef78dc1db835b2f90fd536c1414441eaa0b5cb8f2a5ab94b973400b5fea096ee20b9893d3b573 - languageName: node - linkType: hard - "aria-query@npm:5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" @@ -6570,23 +6110,7 @@ __metadata: languageName: node linkType: hard -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - -"asn1@npm:~0.2.3": - version: 0.2.6 - resolution: "asn1@npm:0.2.6" - dependencies: - safer-buffer: "npm:~2.1.0" - checksum: 10c0/00c8a06c37e548762306bcb1488388d2f76c74c36f70c803f0c081a01d3bdf26090fc088cd812afc5e56a6d49e33765d451a5f8a68ab9c2b087eba65d2e980e0 - languageName: node - linkType: hard - -"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": +"assert-plus@npm:^1.0.0": version: 1.0.0 resolution: "assert-plus@npm:1.0.0" checksum: 10c0/b194b9d50c3a8f872ee85ab110784911e696a4d49f7ee6fc5fb63216dedbefd2c55999c70cb2eaeb4cf4a0e0338b44e9ace3627117b5bf0d42460e9132f21b91 @@ -6660,20 +6184,6 @@ __metadata: languageName: node linkType: hard -"aws-sign2@npm:~0.7.0": - version: 0.7.0 - resolution: "aws-sign2@npm:0.7.0" - checksum: 10c0/021d2cc5547d4d9ef1633e0332e746a6f447997758b8b68d6fb33f290986872d2bff5f0c37d5832f41a7229361f093cd81c40898d96ed153493c0fb5cd8575d2 - languageName: node - linkType: hard - -"aws4@npm:^1.8.0": - version: 1.13.2 - resolution: "aws4@npm:1.13.2" - checksum: 10c0/c993d0d186d699f685d73113733695d648ec7d4b301aba2e2a559d0cd9c1c902308cc52f4095e1396b23fddbc35113644e7f0a6a32753636306e41e3ed6f1e79 - languageName: node - linkType: hard - "axios@npm:^1.7.3": version: 1.8.4 resolution: "axios@npm:1.8.4" @@ -6741,15 +6251,6 @@ __metadata: languageName: node linkType: hard -"bcrypt-pbkdf@npm:^1.0.0": - version: 1.0.2 - resolution: "bcrypt-pbkdf@npm:1.0.2" - dependencies: - tweetnacl: "npm:^0.14.3" - checksum: 10c0/ddfe85230b32df25aeebfdccfbc61d3bc493ace49c884c9c68575de1f5dcf733a5d7de9def3b0f318b786616b8d85bad50a28b1da1750c43e0012c93badcc148 - languageName: node - linkType: hard - "bignumber.js@npm:^9.0.0": version: 9.2.1 resolution: "bignumber.js@npm:9.2.1" @@ -6799,13 +6300,6 @@ __metadata: languageName: node linkType: hard -"bmp-js@npm:^0.1.0": - version: 0.1.0 - resolution: "bmp-js@npm:0.1.0" - checksum: 10c0/c651bd5936dcf8d67900050fac14dcbe30baf87c3d21c58f4934fcdf46172e152a87d8c0c3ca25caa2b4b2c7780ef3b5fcc6cd20afd8f0351856cadb1bef9694 - languageName: node - linkType: hard - "body-parser@npm:^2.2.0": version: 2.2.0 resolution: "body-parser@npm:2.2.0" @@ -6919,13 +6413,6 @@ __metadata: languageName: node linkType: hard -"buffer-equal@npm:0.0.1": - version: 0.0.1 - resolution: "buffer-equal@npm:0.0.1" - checksum: 10c0/2fdcc84ac89032c1db8f393a550f6936f407796c15c9a2eac7b5d1cd1481621215e33d7c768a948e906ea6ae9cf054bbd5aa4492dd68d343f5a12fd48e1c1f67 - languageName: node - linkType: hard - "buffer-fill@npm:^1.0.0": version: 1.0.0 resolution: "buffer-fill@npm:1.0.0" @@ -6940,7 +6427,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.1.0, buffer@npm:^5.2.0, buffer@npm:^5.2.1, buffer@npm:^5.5.0": +"buffer@npm:^5.1.0, buffer@npm:^5.2.1, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -7133,13 +6620,6 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:5.0.0": - version: 5.0.0 - resolution: "camelcase@npm:5.0.0" - checksum: 10c0/515f1ce911d65949708d9e179f1a40af71eb7de668230a0c85961a35590f7da39af79cfb48d834883dbcc7995bdb7dd6bae8027b101e37a10d95337ec8732800 - languageName: node - linkType: hard - "camelcase@npm:6": version: 6.3.0 resolution: "camelcase@npm:6.3.0" @@ -7147,13 +6627,6 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^3.0.0": - version: 3.0.0 - resolution: "camelcase@npm:3.0.0" - checksum: 10c0/98871bb40b936430beca49490d325759f8d8ade32bea538ee63c20b17b326abb6bbd3e1d84daf63d9332b2fc7637f28696bf76da59180b1247051b955cb1da12 - languageName: node - linkType: hard - "camelize@npm:^1.0.0": version: 1.0.1 resolution: "camelize@npm:1.0.1" @@ -7168,13 +6641,6 @@ __metadata: languageName: node linkType: hard -"caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: 10c0/ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 - languageName: node - linkType: hard - "ccount@npm:^1.0.0": version: 1.1.0 resolution: "ccount@npm:1.1.0" @@ -7189,15 +6655,6 @@ __metadata: languageName: node linkType: hard -"centra@npm:^2.7.0": - version: 2.7.0 - resolution: "centra@npm:2.7.0" - dependencies: - follow-redirects: "npm:^1.15.6" - checksum: 10c0/ff0184fb3a8c72532550065dfee15f64ce619517e9e1323f2f2cf31333bd3b5f0b3fa1f10be51c26f43a83ed49b1d6c660d4c793a1e8b896ba1e288f766b7c35 - languageName: node - linkType: hard - "chai@npm:^5.2.0": version: 5.2.0 resolution: "chai@npm:5.2.0" @@ -7211,17 +6668,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 - languageName: node - linkType: hard - "chalk@npm:^3.0.0": version: 3.0.0 resolution: "chalk@npm:3.0.0" @@ -7447,17 +6893,6 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^3.2.0": - version: 3.2.0 - resolution: "cliui@npm:3.2.0" - dependencies: - string-width: "npm:^1.0.1" - strip-ansi: "npm:^3.0.1" - wrap-ansi: "npm:^2.0.0" - checksum: 10c0/07b121fac7fd33ff8dbf3523f0d3dca0329d4e457e57dee54502aa5f27a33cbd9e66aa3e248f0260d8a1431b65b2bad8f510cd97fb8ab6a8e0506310a92e18d5 - languageName: node - linkType: hard - "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" @@ -7518,15 +6953,6 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -7545,13 +6971,6 @@ __metadata: languageName: node linkType: hard -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - "color-name@npm:^2.0.0": version: 2.0.0 resolution: "color-name@npm:2.0.0" @@ -7592,7 +7011,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": +"combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -7636,13 +7055,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^6.2.0": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea - languageName: node - linkType: hard - "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -7691,18 +7103,6 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^1.6.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: "npm:^1.0.0" - inherits: "npm:^2.0.3" - readable-stream: "npm:^2.2.2" - typedarray: "npm:^0.0.6" - checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 - languageName: node - linkType: hard - "conf@npm:^10.2.0": version: 10.2.0 resolution: "conf@npm:10.2.0" @@ -8352,15 +7752,6 @@ __metadata: languageName: node linkType: hard -"dashdash@npm:^1.12.0": - version: 1.14.1 - resolution: "dashdash@npm:1.14.1" - dependencies: - assert-plus: "npm:^1.0.0" - checksum: 10c0/64589a15c5bd01fa41ff7007e0f2c6552c5ef2028075daa16b188a3721f4ba001841bf306dfc2eee6e2e6e7f76b38f5f17fb21fa847504192290ffa9e150118a - languageName: node - linkType: hard - "data-uri-to-buffer@npm:^4.0.0": version: 4.0.1 resolution: "data-uri-to-buffer@npm:4.0.1" @@ -8413,15 +7804,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: "npm:2.0.0" - checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 - languageName: node - linkType: hard - "debug@npm:^3.1.0": version: 3.2.7 resolution: "debug@npm:3.2.7" @@ -8431,7 +7813,7 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:1.2.0, decamelize@npm:^1.1.1": +"decamelize@npm:1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 @@ -8631,22 +8013,6 @@ __metadata: languageName: node linkType: hard -"del@npm:^6.0.0": - version: 6.1.1 - resolution: "del@npm:6.1.1" - dependencies: - globby: "npm:^11.0.1" - graceful-fs: "npm:^4.2.4" - is-glob: "npm:^4.0.1" - is-path-cwd: "npm:^2.2.0" - is-path-inside: "npm:^3.0.2" - p-map: "npm:^4.0.0" - rimraf: "npm:^3.0.2" - slash: "npm:^3.0.0" - checksum: 10c0/8a095c5ccade42c867a60252914ae485ec90da243d735d1f63ec1e64c1cfbc2b8810ad69a29ab6326d159d4fddaa2f5bad067808c42072351ec458efff86708f - languageName: node - linkType: hard - "delaunator@npm:5": version: 5.0.1 resolution: "delaunator@npm:5.0.1" @@ -8772,15 +8138,6 @@ __metadata: languageName: node linkType: hard -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - "dmg-builder@npm:26.0.15": version: 26.0.15 resolution: "dmg-builder@npm:26.0.15" @@ -8856,13 +8213,6 @@ __metadata: languageName: node linkType: hard -"dom-walk@npm:^0.1.0": - version: 0.1.2 - resolution: "dom-walk@npm:0.1.2" - checksum: 10c0/4d2ad9062a9423d890f8577aa202b597a6b85f9489bdde656b9443901b8b322b289655c3affefc58ec2e41931e0828dfee0a1d2db6829a607d76def5901fc5a9 - languageName: node - linkType: hard - "domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" @@ -8975,16 +8325,6 @@ __metadata: languageName: node linkType: hard -"ecc-jsbn@npm:~0.1.1": - version: 0.1.2 - resolution: "ecc-jsbn@npm:0.1.2" - dependencies: - jsbn: "npm:~0.1.0" - safer-buffer: "npm:^2.1.0" - checksum: 10c0/6cf168bae1e2dad2e46561d9af9cbabfbf5ff592176ad4e9f0f41eaaf5fe5e10bb58147fe0a804de62b1ee9dad42c28810c88d652b21b6013c47ba8efa274ca1 - languageName: node - linkType: hard - "ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" @@ -9045,19 +8385,6 @@ __metadata: languageName: node linkType: hard -"electron-icon-builder@npm:^2.0.1": - version: 2.0.1 - resolution: "electron-icon-builder@npm:2.0.1" - dependencies: - args: "npm:^5.0.1" - icon-gen: "npm:^2.0.0" - jimp: "npm:^0.16.1" - bin: - electron-icon-builder: index.js - checksum: 10c0/fb4019cd8e1c56c10bc4432657d473bd1862c3771573212770418f2bb05821c89c33c8f45fc091507972c8c25c6b4189ba80017bfd3d7329c649b29aa35cf17d - languageName: node - linkType: hard - "electron-log@npm:^5.1.5": version: 5.3.3 resolution: "electron-log@npm:5.3.3" @@ -9274,15 +8601,6 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.2.0": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: "npm:^0.2.1" - checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce - languageName: node - linkType: hard - "es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" @@ -9332,13 +8650,6 @@ __metadata: languageName: node linkType: hard -"es6-promise@npm:^4.0.3": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 10c0/2373d9c5e9a93bdd9f9ed32ff5cb6dd3dd785368d1c21e9bbbfd07d16345b3774ae260f2bd24c8f836a6903f432b4151e7816a7fa8891ccb4e1a55a028ec42c3 - languageName: node - linkType: hard - "esbuild@npm:^0.25.0": version: 0.25.2 resolution: "esbuild@npm:0.25.2" @@ -9525,13 +8836,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -10026,13 +9330,6 @@ __metadata: languageName: node linkType: hard -"exif-parser@npm:^0.1.12": - version: 0.1.12 - resolution: "exif-parser@npm:0.1.12" - checksum: 10c0/ef1df84edbba50621fcfe19510c8db3ddd9e7fb374459d3f77c9256c24584767c7fb4cf1b15aef46e87a06528d3c48e44de02cecc314656d22a5cf954a0e7192 - languageName: node - linkType: hard - "exifremove@npm:^1.0.1": version: 1.0.1 resolution: "exifremove@npm:1.0.1" @@ -10119,27 +9416,13 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": +"extend@npm:^3.0.0, extend@npm:^3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 languageName: node linkType: hard -"extract-zip@npm:^1.6.5": - version: 1.7.0 - resolution: "extract-zip@npm:1.7.0" - dependencies: - concat-stream: "npm:^1.6.2" - debug: "npm:^2.6.9" - mkdirp: "npm:^0.5.4" - yauzl: "npm:^2.10.0" - bin: - extract-zip: cli.js - checksum: 10c0/333f1349ee678d47268315f264dbfcd7003747d25640441e186e87c66efd7129f171f1bcfe8ff1151a24da19d5f8602daff002ee24145dc65516bc9a8e40ee08 - languageName: node - linkType: hard - "extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" @@ -10157,13 +9440,6 @@ __metadata: languageName: node linkType: hard -"extsprintf@npm:1.3.0": - version: 1.3.0 - resolution: "extsprintf@npm:1.3.0" - checksum: 10c0/f75114a8388f0cbce68e277b6495dc3930db4dde1611072e4a140c24e204affd77320d004b947a132e9a3b97b8253017b2b62dce661975fb0adced707abf1ab5 - languageName: node - linkType: hard - "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" @@ -10192,7 +9468,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": +"fast-glob@npm:^3.3.2": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -10365,13 +9641,6 @@ __metadata: languageName: node linkType: hard -"file-url@npm:^2.0.0": - version: 2.0.2 - resolution: "file-url@npm:2.0.2" - checksum: 10c0/4139623d983c8e22e72c5898032bdc4a852fdf422ddbc87588c0c312f1e08d2d592185cf315b10a9d3d608205360446654ca06773e32cdcf76bbf993c6e23b01 - languageName: node - linkType: hard - "filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" @@ -10404,16 +9673,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^1.0.0": - version: 1.1.2 - resolution: "find-up@npm:1.1.2" - dependencies: - path-exists: "npm:^2.0.0" - pinkie-promise: "npm:^2.0.0" - checksum: 10c0/51e35c62d9b7efe82d7d5cce966bfe10c2eaa78c769333f8114627e3a8a4a4f50747f5f50bff50b1094cbc6527776f0d3b9ff74d3561ef714a5290a17c80c2bc - languageName: node - linkType: hard - "find-up@npm:^3.0.0": version: 3.0.0 resolution: "find-up@npm:3.0.0" @@ -10479,13 +9738,6 @@ __metadata: languageName: node linkType: hard -"forever-agent@npm:~0.6.1": - version: 0.6.1 - resolution: "forever-agent@npm:0.6.1" - checksum: 10c0/364f7f5f7d93ab661455351ce116a67877b66f59aca199559a999bd39e3cfadbfbfacc10415a915255e2210b30c23febe9aec3ca16bf2d1ff11c935a1000e24c - languageName: node - linkType: hard - "form-data-encoder@npm:1.7.2": version: 1.7.2 resolution: "form-data-encoder@npm:1.7.2" @@ -10512,17 +9764,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.6" - mime-types: "npm:^2.1.12" - checksum: 10c0/706ef1e5649286b6a61e5bb87993a9842807fd8f149cd2548ee807ea4fb882247bdf7f6e64ac4720029c0cd5c80343de0e22eee1dc9e9882e12db9cc7bc016a4 - languageName: node - linkType: hard - "formdata-node@npm:^4.3.2": version: 4.4.1 resolution: "formdata-node@npm:4.4.1" @@ -10585,17 +9826,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^1.0.0": - version: 1.0.0 - resolution: "fs-extra@npm:1.0.0" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^2.1.0" - klaw: "npm:^1.0.0" - checksum: 10c0/1128e46b3364f458ca07fbd186a05010b05255ad6ab17abc2a262086600f1925a9e5a259b9436ee42f57875e9ebb171348f25d4289fecd395b05488db9ceeda8 - languageName: node - linkType: hard - "fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" @@ -10758,13 +9988,6 @@ __metadata: languageName: node linkType: hard -"get-caller-file@npm:^1.0.1": - version: 1.0.3 - resolution: "get-caller-file@npm:1.0.3" - checksum: 10c0/763dcee2de8ff60ae7e13a4bad8306205a2fbe108e555686344ddd9ef211b8bebfe459d3a739669257014c59e7cc1e7a44003c21af805c1214673e6a45f06c51 - languageName: node - linkType: hard - "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -10851,25 +10074,6 @@ __metadata: languageName: node linkType: hard -"getpass@npm:^0.1.1": - version: 0.1.7 - resolution: "getpass@npm:0.1.7" - dependencies: - assert-plus: "npm:^1.0.0" - checksum: 10c0/c13f8530ecf16fc509f3fa5cd8dd2129ffa5d0c7ccdf5728b6022d52954c2d24be3706b4cdf15333eec52f1fbb43feb70a01dabc639d1d10071e371da8aaa52f - languageName: node - linkType: hard - -"gifwrap@npm:^0.9.2": - version: 0.9.4 - resolution: "gifwrap@npm:0.9.4" - dependencies: - image-q: "npm:^4.0.0" - omggif: "npm:^1.0.10" - checksum: 10c0/a3ec76fce94c1d7c6326356d553c29361d7d7555aa393994880b41fef4b1e7a62a04f1b96d74f183013382e7ca8a214107b816f1eda388d1b1a523c8d1ca2da1 - languageName: node - linkType: hard - "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -10952,16 +10156,6 @@ __metadata: languageName: node linkType: hard -"global@npm:~4.4.0": - version: 4.4.0 - resolution: "global@npm:4.4.0" - dependencies: - min-document: "npm:^2.19.0" - process: "npm:^0.11.10" - checksum: 10c0/4a467aec6602c00a7c5685f310574ab04e289ad7f894f0f01c9c5763562b82f4b92d1e381ce6c5bbb12173e2a9f759c1b63dda6370cfb199970267e14d90aa91 - languageName: node - linkType: hard - "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -11000,20 +10194,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.1": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - "google-auth-library@npm:^9.14.2": version: 9.15.1 resolution: "google-auth-library@npm:9.15.1" @@ -11080,7 +10260,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -11111,30 +10291,6 @@ __metadata: languageName: node linkType: hard -"har-schema@npm:^2.0.0": - version: 2.0.0 - resolution: "har-schema@npm:2.0.0" - checksum: 10c0/3856cb76152658e0002b9c2b45b4360bb26b3e832c823caed8fcf39a01096030bf09fa5685c0f7b0f2cb3ecba6e9dce17edaf28b64a423d6201092e6be56e592 - languageName: node - linkType: hard - -"har-validator@npm:~5.1.3": - version: 5.1.5 - resolution: "har-validator@npm:5.1.5" - dependencies: - ajv: "npm:^6.12.3" - har-schema: "npm:^2.0.0" - checksum: 10c0/f1d606eb1021839e3a905be5ef7cca81c2256a6be0748efb8fefc14312214f9e6c15d7f2eaf37514104071207d84f627b68bb9f6178703da4e06fbd1a0649a5e - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -11184,16 +10340,6 @@ __metadata: languageName: node linkType: hard -"hasha@npm:^2.2.0": - version: 2.2.0 - resolution: "hasha@npm:2.2.0" - dependencies: - is-stream: "npm:^1.0.1" - pinkie-promise: "npm:^2.0.0" - checksum: 10c0/44dabdfe77d714f5a3927bf485da9997d6eb6916d8c02fb7d735993706c093da307144b417420d2621763f0f17ab1526717cbcd6b297def021b8ebb640e9097b - languageName: node - linkType: hard - "hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" @@ -11395,13 +10541,6 @@ __metadata: languageName: node linkType: hard -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 - languageName: node - linkType: hard - "hosted-git-info@npm:^4.1.0": version: 4.1.0 resolution: "hosted-git-info@npm:4.1.0" @@ -11537,17 +10676,6 @@ __metadata: languageName: node linkType: hard -"http-signature@npm:~1.2.0": - version: 1.2.0 - resolution: "http-signature@npm:1.2.0" - dependencies: - assert-plus: "npm:^1.0.0" - jsprim: "npm:^1.2.2" - sshpk: "npm:^1.7.0" - checksum: 10c0/582f7af7f354429e1fb19b3bbb9d35520843c69bb30a25b88ca3c5c2c10715f20ae7924e20cffbed220b1d3a726ef4fe8ccc48568d5744db87be9a79887d6733 - languageName: node - linkType: hard - "http2-wrapper@npm:^1.0.0-beta.5.2": version: 1.0.3 resolution: "http2-wrapper@npm:1.0.3" @@ -11622,22 +10750,6 @@ __metadata: languageName: node linkType: hard -"icon-gen@npm:^2.0.0": - version: 2.1.0 - resolution: "icon-gen@npm:2.1.0" - dependencies: - commander: "npm:^6.2.0" - del: "npm:^6.0.0" - mkdirp: "npm:^1.0.4" - pngjs: "npm:^6.0.0" - svg2png: "npm:4.1.1" - uuid: "npm:^8.3.1" - bin: - icon-gen: dist/bin/index.js - checksum: 10c0/a16469284c83bbf54ac97d3da5e58c6976e538763936c3429d8ebbcd301d223d4a15837dc1d39f7097c5acf4bfa989bba56466a4094c268bc309c69bfb6ef1e3 - languageName: node - linkType: hard - "iconv-corefoundation@npm:^1.1.7": version: 1.1.7 resolution: "iconv-corefoundation@npm:1.1.7" @@ -11671,15 +10783,6 @@ __metadata: languageName: node linkType: hard -"image-q@npm:^4.0.0": - version: 4.0.0 - resolution: "image-q@npm:4.0.0" - dependencies: - "@types/node": "npm:16.9.1" - checksum: 10c0/4463f8f4c0b6897c2213dfccf08c7731edcaa0ff8e2dab81ce3cafd5bb97d4eaa7bdd64f715d616910cf7b87aba718e4326ed4270b5d13bccc49af24bf5ce1a1 - languageName: node - linkType: hard - "immediate@npm:~3.0.5": version: 3.0.6 resolution: "immediate@npm:3.0.6" @@ -11777,13 +10880,6 @@ __metadata: languageName: node linkType: hard -"invert-kv@npm:^1.0.0": - version: 1.0.0 - resolution: "invert-kv@npm:1.0.0" - checksum: 10c0/9ccef12ada8494c56175cc0380b4cea18b6c0a368436f324a30e43a332db90bdfb83cd3a7987b71df359cdf931ce45b7daf35b677da56658565d61068e4bc20b - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -11835,13 +10931,6 @@ __metadata: languageName: node linkType: hard -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 - languageName: node - linkType: hard - "is-buffer@npm:^2.0.0": version: 2.0.5 resolution: "is-buffer@npm:2.0.5" @@ -11867,15 +10956,6 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.16.0": - version: 2.16.1 - resolution: "is-core-module@npm:2.16.1" - dependencies: - hasown: "npm:^2.0.2" - checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd - languageName: node - linkType: hard - "is-decimal@npm:^1.0.0": version: 1.0.4 resolution: "is-decimal@npm:1.0.4" @@ -11938,13 +11018,6 @@ __metadata: languageName: node linkType: hard -"is-function@npm:^1.0.1": - version: 1.0.2 - resolution: "is-function@npm:1.0.2" - checksum: 10c0/c55289042a0e828a773f1245e2652e0c029efacc78ebe03e61787746fda74e2c41006cd908f20b53c36e45f9e75464475a4b2d68b17f4c7b9f8018bcaec42f9e - languageName: node - linkType: hard - "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -12024,20 +11097,6 @@ __metadata: languageName: node linkType: hard -"is-path-cwd@npm:^2.2.0": - version: 2.2.0 - resolution: "is-path-cwd@npm:2.2.0" - checksum: 10c0/afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - "is-plain-obj@npm:^2.0.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" @@ -12066,7 +11125,7 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^1.0.1, is-stream@npm:^1.1.0": +"is-stream@npm:^1.1.0": version: 1.1.0 resolution: "is-stream@npm:1.1.0" checksum: 10c0/b8ae7971e78d2e8488d15f804229c6eed7ed36a28f8807a1815938771f4adff0e705218b7dab968270433f67103e4fef98062a0beea55d64835f705ee72c7002 @@ -12087,13 +11146,6 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:~1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec - languageName: node - linkType: hard - "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -12101,13 +11153,6 @@ __metadata: languageName: node linkType: hard -"is-utf8@npm:^0.2.0": - version: 0.2.1 - resolution: "is-utf8@npm:0.2.1" - checksum: 10c0/3ed45e5b4ddfa04ed7e32c63d29c61b980ecd6df74698f45978b8c17a54034943bcbffb6ae243202e799682a66f90fef526f465dd39438745e9fe70794c1ef09 - languageName: node - linkType: hard - "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -12152,13 +11197,6 @@ __metadata: languageName: node linkType: hard -"isstream@npm:~0.1.2": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 10c0/a6686a878735ca0a48e0d674dd6d8ad31aedfaf70f07920da16ceadc7577b46d67179a60b313f2e6860cb097a2c2eb3cbd0b89e921ae89199a59a17c3273d66f - languageName: node - linkType: hard - "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" @@ -12236,26 +11274,6 @@ __metadata: languageName: node linkType: hard -"jimp@npm:^0.16.1": - version: 0.16.13 - resolution: "jimp@npm:0.16.13" - dependencies: - "@babel/runtime": "npm:^7.7.2" - "@jimp/custom": "npm:^0.16.13" - "@jimp/plugins": "npm:^0.16.13" - "@jimp/types": "npm:^0.16.13" - regenerator-runtime: "npm:^0.13.3" - checksum: 10c0/ad6f495575e7d065aa64c99f155a7cb1c7ffeac1651def982556dbec131d742256a19f87ab35219849cbd6e762df35041c63453ab2144d4241bf5be5877b197c - languageName: node - linkType: hard - -"jpeg-js@npm:^0.4.2": - version: 0.4.4 - resolution: "jpeg-js@npm:0.4.4" - checksum: 10c0/4d0d5097f8e55d8bbce6f1dc32ffaf3f43f321f6222e4e6490734fdc6d005322e3bd6fb992c2df7f5b587343b1441a1c333281dc3285bc9116e369fd2a2b43a7 - languageName: node - linkType: hard - "js-base64@npm:^3.7.5": version: 3.7.7 resolution: "js-base64@npm:3.7.7" @@ -12297,13 +11315,6 @@ __metadata: languageName: node linkType: hard -"jsbn@npm:~0.1.0": - version: 0.1.1 - resolution: "jsbn@npm:0.1.1" - checksum: 10c0/e046e05c59ff880ee4ef68902dbdcb6d2f3c5d60c357d4d68647dc23add556c31c0e5f41bdb7e69e793dd63468bd9e085da3636341048ef577b18f5b713877c0 - languageName: node - linkType: hard - "jsdom@npm:^26.0.0": version: 26.1.0 resolution: "jsdom@npm:26.1.0" @@ -12383,13 +11394,6 @@ __metadata: languageName: node linkType: hard -"json-schema@npm:0.4.0": - version: 0.4.0 - resolution: "json-schema@npm:0.4.0" - checksum: 10c0/d4a637ec1d83544857c1c163232f3da46912e971d5bf054ba44fdb88f07d8d359a462b4aec46f2745efbc57053365608d88bc1d7b1729f7b4fc3369765639ed3 - languageName: node - linkType: hard - "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -12397,7 +11401,7 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": +"json-stringify-safe@npm:^5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 @@ -12422,18 +11426,6 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^2.1.0": - version: 2.4.0 - resolution: "jsonfile@npm:2.4.0" - dependencies: - graceful-fs: "npm:^4.1.6" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/02ad746d9490686519b3369bc9572694076eb982e1b4982c5ad9b91bc3c0ad30d10c866bb26b7a87f0c4025a80222cd2962cb57083b5a6a475a9031eab8c8962 - languageName: node - linkType: hard - "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -12475,18 +11467,6 @@ __metadata: languageName: node linkType: hard -"jsprim@npm:^1.2.2": - version: 1.4.2 - resolution: "jsprim@npm:1.4.2" - dependencies: - assert-plus: "npm:1.0.0" - extsprintf: "npm:1.3.0" - json-schema: "npm:0.4.0" - verror: "npm:1.10.0" - checksum: 10c0/5e4bca99e90727c2040eb4c2190d0ef1fe51798ed5714e87b841d304526190d960f9772acc7108fa1416b61e1122bcd60e4460c91793dce0835df5852aab55af - languageName: node - linkType: hard - "jszip@npm:^3.1.0, jszip@npm:^3.10.1, jszip@npm:^3.7.1": version: 3.10.1 resolution: "jszip@npm:3.10.1" @@ -12542,13 +11522,6 @@ __metadata: languageName: node linkType: hard -"kew@npm:^0.7.0": - version: 0.7.0 - resolution: "kew@npm:0.7.0" - checksum: 10c0/4f1aab58d0f961c36fd7539ca5a05a35dc5379b900fbe374e633df6df80f336d7f5c477a41af43b244b2669f50b3b4d519c2d0a469ca8f8587374e098b9ecb70 - languageName: node - linkType: hard - "keyv@npm:^4.0.0, keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -12565,18 +11538,6 @@ __metadata: languageName: node linkType: hard -"klaw@npm:^1.0.0": - version: 1.3.1 - resolution: "klaw@npm:1.3.1" - dependencies: - graceful-fs: "npm:^4.1.9" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/da994768b02b3843cc994c99bad3cf1c8c67716beb4dd2834133c919e9e9ee788669fbe27d88ab0ad9a3991349c28280afccbde01c2318229b662dd7a05e4728 - languageName: node - linkType: hard - "kolorist@npm:^1.8.0": version: 1.8.0 resolution: "kolorist@npm:1.8.0" @@ -12735,15 +11696,6 @@ __metadata: languageName: node linkType: hard -"lcid@npm:^1.0.0": - version: 1.0.0 - resolution: "lcid@npm:1.0.0" - dependencies: - invert-kv: "npm:^1.0.0" - checksum: 10c0/87fb32196c3c80458778f34f71c042e114f3134a3c86c0d60ee9c94f0750e467d7ca0c005a5224ffd9d49a6e449b5e5c31e1544f1827765a0ba8747298f5980e - languageName: node - linkType: hard - "leac@npm:^0.6.0": version: 0.6.0 resolution: "leac@npm:0.6.0" @@ -12751,13 +11703,6 @@ __metadata: languageName: node linkType: hard -"leven@npm:2.1.0": - version: 2.1.0 - resolution: "leven@npm:2.1.0" - checksum: 10c0/e685243900aad7e854212001c9b7fe6d0806081e184d5077a561a91d07425852e8b7d1edf76b948f4be520b64e0015960be3a5f3e9acb0bec75a0e4134b422df - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -12893,35 +11838,6 @@ __metadata: languageName: node linkType: hard -"load-bmfont@npm:^1.3.1, load-bmfont@npm:^1.4.0": - version: 1.4.2 - resolution: "load-bmfont@npm:1.4.2" - dependencies: - buffer-equal: "npm:0.0.1" - mime: "npm:^1.3.4" - parse-bmfont-ascii: "npm:^1.0.3" - parse-bmfont-binary: "npm:^1.0.5" - parse-bmfont-xml: "npm:^1.1.4" - phin: "npm:^3.7.1" - xhr: "npm:^2.0.1" - xtend: "npm:^4.0.0" - checksum: 10c0/bc85401964c5b5640ee98581895ddcda666a5e6420773e65a13ae948e2dd9a3e55206e3deb4c98e9bd4d111719d4eb71fc1ce326b1dd060f20afba942b056373 - languageName: node - linkType: hard - -"load-json-file@npm:^1.0.0": - version: 1.1.0 - resolution: "load-json-file@npm:1.1.0" - dependencies: - graceful-fs: "npm:^4.1.2" - parse-json: "npm:^2.2.0" - pify: "npm:^2.0.0" - pinkie-promise: "npm:^2.0.0" - strip-bom: "npm:^2.0.0" - checksum: 10c0/2a5344c2d88643735a938fdca8582c0504e1c290577faa74f56b9cc187fa443832709a15f36e5771f779ec0878215a03abc8faf97ec57bb86092ceb7e0caef22 - languageName: node - linkType: hard - "local-pkg@npm:^1.0.0": version: 1.1.1 resolution: "local-pkg@npm:1.1.1" @@ -13676,7 +12592,7 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": +"merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb @@ -14246,7 +13162,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.35, mime-types@npm:~2.1.19": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.35": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -14264,15 +13180,6 @@ __metadata: languageName: node linkType: hard -"mime@npm:^1.3.4": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 - languageName: node - linkType: hard - "mime@npm:^2.5.2": version: 2.6.0 resolution: "mime@npm:2.6.0" @@ -14347,15 +13254,6 @@ __metadata: languageName: node linkType: hard -"min-document@npm:^2.19.0": - version: 2.19.0 - resolution: "min-document@npm:2.19.0" - dependencies: - dom-walk: "npm:^0.1.0" - checksum: 10c0/783724da716fc73a51c171865d7b29bf2b855518573f82ef61c40d214f6898d7b91b5c5419e4d22693cdb78d4615873ebc3b37d7639d3dd00ca283e5a07c7af9 - languageName: node - linkType: hard - "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -14544,7 +13442,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.4": +"mkdirp@npm:^0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -14622,13 +13520,6 @@ __metadata: languageName: node linkType: hard -"mri@npm:1.1.4": - version: 1.1.4 - resolution: "mri@npm:1.1.4" - checksum: 10c0/eb577c2ef60385aa287afdac777e536996f4fd3144250c201097e7ec121568139d482c92cb9a512f90e428d6dc3e9ba8e9de89bc204424cb96f187a4bdc465c1 - languageName: node - linkType: hard - "mrmime@npm:^2.0.0": version: 2.0.1 resolution: "mrmime@npm:2.0.1" @@ -14636,13 +13527,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d - languageName: node - linkType: hard - "ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -14886,18 +13770,6 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^2.3.2": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: "npm:^2.1.4" - resolve: "npm:^1.10.0" - semver: "npm:2 || 3 || 4 || 5" - validate-npm-package-license: "npm:^3.0.1" - checksum: 10c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 - languageName: node - linkType: hard - "normalize-path@npm:^3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -14961,13 +13833,6 @@ __metadata: languageName: node linkType: hard -"oauth-sign@npm:~0.9.0": - version: 0.9.0 - resolution: "oauth-sign@npm:0.9.0" - checksum: 10c0/fc92a516f6ddbb2699089a2748b04f55c47b6ead55a77cd3a2cbbce5f7af86164cb9425f9ae19acfd066f1ad7d3a96a67b8928c6ea946426f6d6c29e448497c2 - languageName: node - linkType: hard - "object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.0": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -15021,13 +13886,6 @@ __metadata: languageName: node linkType: hard -"omggif@npm:^1.0.10, omggif@npm:^1.0.9": - version: 1.0.10 - resolution: "omggif@npm:1.0.10" - checksum: 10c0/5ddb6959555bf16ac93ee8724a6f600b0e97e77855515af9df0f657c69ebe0eb7d769763fdc4765f888827e4e64ca71ebeaf7255c7f51058e4bba5cc7950fe8e - languageName: node - linkType: hard - "on-finished@npm:^2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -15206,15 +14064,6 @@ __metadata: languageName: node linkType: hard -"os-locale@npm:^1.4.0": - version: 1.4.0 - resolution: "os-locale@npm:1.4.0" - dependencies: - lcid: "npm:^1.0.0" - checksum: 10c0/302173159d562000ddf982ed75c493a0d861e91372c9e1b13aab21590ff2e1ba264a41995b29be8dc5278a6127ffcd2ad5591779e8164a570fc5fa6c0787b057 - languageName: node - linkType: hard - "os-proxy-config@npm:^1.1.2": version: 1.1.2 resolution: "os-proxy-config@npm:1.1.2" @@ -15398,7 +14247,7 @@ __metadata: languageName: node linkType: hard -"pako@npm:^1.0.5, pako@npm:~1.0.2": +"pako@npm:~1.0.2": version: 1.0.11 resolution: "pako@npm:1.0.11" checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe @@ -15414,30 +14263,6 @@ __metadata: languageName: node linkType: hard -"parse-bmfont-ascii@npm:^1.0.3": - version: 1.0.6 - resolution: "parse-bmfont-ascii@npm:1.0.6" - checksum: 10c0/f76c57be4678fbb05221e263b21671fa3dbe03d0bae7be133b7f102dbe666958811759b615bfcfc81d76a34efeae1fb76c3305a5a4f28e14eb3baa9ec72c8c4f - languageName: node - linkType: hard - -"parse-bmfont-binary@npm:^1.0.5": - version: 1.0.6 - resolution: "parse-bmfont-binary@npm:1.0.6" - checksum: 10c0/2bcc4f041871ce9cec767105a9438704f114ef43c5827754c4dbcd821f792ec440f8120944d3a5396503e4387e68269ba68d933668a92a3322ad32a079911ea4 - languageName: node - linkType: hard - -"parse-bmfont-xml@npm:^1.1.4": - version: 1.1.6 - resolution: "parse-bmfont-xml@npm:1.1.6" - dependencies: - xml-parse-from-string: "npm:^1.0.0" - xml2js: "npm:^0.5.0" - checksum: 10c0/e18e816a2553d3d34795e5a60b584f64a327d4a92f83b48dcb01b9ec30fc75b5338488d9f9d25cd8b463665c13f59264464f39e73c0e8d8d3665ce7f4f128328 - languageName: node - linkType: hard - "parse-entities@npm:^2.0.0": version: 2.0.0 resolution: "parse-entities@npm:2.0.0" @@ -15467,22 +14292,6 @@ __metadata: languageName: node linkType: hard -"parse-headers@npm:^2.0.0": - version: 2.0.6 - resolution: "parse-headers@npm:2.0.6" - checksum: 10c0/3040ca567f7ceb9b80ffb353401c91c35761365052e30b6795328e78ab549a5fab22be24cbdbb60243500175918fe40812c43b32f689ad775e1c67ba7ba303e9 - languageName: node - linkType: hard - -"parse-json@npm:^2.2.0": - version: 2.2.0 - resolution: "parse-json@npm:2.2.0" - dependencies: - error-ex: "npm:^1.2.0" - checksum: 10c0/7a90132aa76016f518a3d5d746a21b3f1ad0f97a68436ed71b6f995b67c7151141f5464eea0c16c59aec9b7756519a0e3007a8f98cf3714632d509ec07736df6 - languageName: node - linkType: hard - "parse5@npm:^7.0.0, parse5@npm:^7.2.1": version: 7.2.1 resolution: "parse5@npm:7.2.1" @@ -15516,15 +14325,6 @@ __metadata: languageName: node linkType: hard -"path-exists@npm:^2.0.0": - version: 2.1.0 - resolution: "path-exists@npm:2.1.0" - dependencies: - pinkie-promise: "npm:^2.0.0" - checksum: 10c0/87352f1601c085d5a6eb202f60e5c016c1b790bd0bc09398af446ed3f5c4510b4531ff99cf8acac2d91868886e792927b4292f768b35a83dce12588fb7cbb46e - languageName: node - linkType: hard - "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -15560,13 +14360,6 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 - languageName: node - linkType: hard - "path-posix@npm:^1.0.0": version: 1.0.0 resolution: "path-posix@npm:1.0.0" @@ -15591,24 +14384,6 @@ __metadata: languageName: node linkType: hard -"path-type@npm:^1.0.0": - version: 1.1.0 - resolution: "path-type@npm:1.1.0" - dependencies: - graceful-fs: "npm:^4.1.2" - pify: "npm:^2.0.0" - pinkie-promise: "npm:^2.0.0" - checksum: 10c0/2b8c348cb52bbc0c0568afa10a0a5d8f6233adfe5ae75feb56064f6aed6324ab74185c61c2545f4e52ca08acdc76005f615da4e127ed6eecb866002cf491f350 - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - "pathe@npm:^2.0.1, pathe@npm:^2.0.3": version: 2.0.3 resolution: "pathe@npm:2.0.3" @@ -15678,48 +14453,6 @@ __metadata: languageName: node linkType: hard -"performance-now@npm:^2.1.0": - version: 2.1.0 - resolution: "performance-now@npm:2.1.0" - checksum: 10c0/22c54de06f269e29f640e0e075207af57de5052a3d15e360c09b9a8663f393f6f45902006c1e71aa8a5a1cdfb1a47fe268826f8496d6425c362f00f5bc3e85d9 - languageName: node - linkType: hard - -"phantomjs-prebuilt@npm:^2.1.14": - version: 2.1.16 - resolution: "phantomjs-prebuilt@npm:2.1.16" - dependencies: - es6-promise: "npm:^4.0.3" - extract-zip: "npm:^1.6.5" - fs-extra: "npm:^1.0.0" - hasha: "npm:^2.2.0" - kew: "npm:^0.7.0" - progress: "npm:^1.1.8" - request: "npm:^2.81.0" - request-progress: "npm:^2.0.1" - which: "npm:^1.2.10" - bin: - phantomjs: ./bin/phantomjs - checksum: 10c0/8dcebab8d9bb28cd207d9644a02c00cd3e72556d195bff85cbdaa8dc29c86a4fa087a688bba321230e63446c836355cb4342aef5f910532f3ac00d0bcb746e2a - languageName: node - linkType: hard - -"phin@npm:^2.9.1": - version: 2.9.3 - resolution: "phin@npm:2.9.3" - checksum: 10c0/5bb94493f1bf1f0b66ca08aee6aaa488c46f4a8af2722d94ef9c8e4aaa3a5952e19aeff37f832ed64a71c98124c73936a30caef42973be21350b36af5fc33ab8 - languageName: node - linkType: hard - -"phin@npm:^3.7.1": - version: 3.7.1 - resolution: "phin@npm:3.7.1" - dependencies: - centra: "npm:^2.7.0" - checksum: 10c0/114cb1eff5ec817ddaf6748de354b01f02375c755a8da5f2505e0014d2e4eecdb820158e94235cdf9a25fea22c485b113b15ddf053b7699b2e59945bbe3aeaf0 - languageName: node - linkType: hard - "picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" @@ -15750,7 +14483,7 @@ __metadata: languageName: node linkType: hard -"pify@npm:^2.0.0, pify@npm:^2.3.0": +"pify@npm:^2.3.0": version: 2.3.0 resolution: "pify@npm:2.3.0" checksum: 10c0/551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc @@ -15780,17 +14513,6 @@ __metadata: languageName: node linkType: hard -"pixelmatch@npm:^4.0.2": - version: 4.0.2 - resolution: "pixelmatch@npm:4.0.2" - dependencies: - pngjs: "npm:^3.0.0" - bin: - pixelmatch: bin/pixelmatch - checksum: 10c0/81fee4a8f3f8d462ada5fc7809399384f99c137fa44974e9eddd52dcd0f0d5838387e2c4cd2397f6adbbc2a6728688ff6124faf0091a1c776d57277f9d42e9fa - languageName: node - linkType: hard - "pkce-challenge@npm:^5.0.0": version: 5.0.0 resolution: "pkce-challenge@npm:5.0.0" @@ -15864,27 +14586,6 @@ __metadata: languageName: node linkType: hard -"pn@npm:^1.0.0": - version: 1.1.0 - resolution: "pn@npm:1.1.0" - checksum: 10c0/d844a08d8f0952033f4824072487310e9c9941264968c14411d8f1089d51a60f26ca4866b5a4ecac4d1d12487158dcba75ed2009126c37e4e8efd8080a2cc7c0 - languageName: node - linkType: hard - -"pngjs@npm:^3.0.0, pngjs@npm:^3.3.3": - version: 3.4.0 - resolution: "pngjs@npm:3.4.0" - checksum: 10c0/88ee73e2ad3f736e0b2573722309eb80bd2aa28916f0862379b4fd0f904751b4f61bb6bd1ecd7d4242d331f2b5c28c13309dd4b7d89a9b78306e35122fdc5011 - languageName: node - linkType: hard - -"pngjs@npm:^6.0.0": - version: 6.0.0 - resolution: "pngjs@npm:6.0.0" - checksum: 10c0/ac23ea329b1881d1a10575aff58116dc27b894ec3f5b84ba15c7f527d21e609fbce7ba16d48f8ccb86c7ce45ceed622472765476ab2875949d4bec55e153f87a - languageName: node - linkType: hard - "points-on-curve@npm:0.2.0, points-on-curve@npm:^0.2.0": version: 0.2.0 resolution: "points-on-curve@npm:0.2.0" @@ -16020,13 +14721,6 @@ __metadata: languageName: node linkType: hard -"progress@npm:^1.1.8": - version: 1.1.8 - resolution: "progress@npm:1.1.8" - checksum: 10c0/e50b51e5cc292d18eff0a9ec7ed267b7d39e2af712a238d5387f8b3e15631e25f504f493cbeb7e7b7f2e4c7d3154cdc4569b87dd5e736449cd8876ba04701f0a - languageName: node - linkType: hard - "progress@npm:^2.0.3": version: 2.0.3 resolution: "progress@npm:2.0.3" @@ -16105,15 +14799,6 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.28": - version: 1.15.0 - resolution: "psl@npm:1.15.0" - dependencies: - punycode: "npm:^2.3.1" - checksum: 10c0/d8d45a99e4ca62ca12ac3c373e63d80d2368d38892daa40cfddaa1eb908be98cd549ac059783ef3a56cfd96d57ae8e2fd9ae53d1378d90d42bc661ff924e102a - languageName: node - linkType: hard - "pump@npm:^3.0.0": version: 3.0.2 resolution: "pump@npm:3.0.2" @@ -16131,7 +14816,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": +"punycode@npm:^2.1.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 @@ -16147,13 +14832,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:~6.5.2": - version: 6.5.3 - resolution: "qs@npm:6.5.3" - checksum: 10c0/6631d4f2fa9d315e480662646745a4aa3a708817fbffe2cbdacec8ab9be130f92740c66191770fe9b704bc5fa9c1cc1f6596f55ad132fef7bd3ad1582f199eb0 - languageName: node - linkType: hard - "quansync@npm:^0.2.8": version: 0.2.10 resolution: "quansync@npm:0.2.10" @@ -16980,27 +15658,6 @@ __metadata: languageName: node linkType: hard -"read-pkg-up@npm:^1.0.1": - version: 1.0.1 - resolution: "read-pkg-up@npm:1.0.1" - dependencies: - find-up: "npm:^1.0.0" - read-pkg: "npm:^1.0.0" - checksum: 10c0/36c4fc8bd73edf77a4eeb497b6e43010819ea4aef64cbf8e393439fac303398751c5a299feab84e179a74507e3a1416e1ed033a888b1dac3463bf46d1765f7ac - languageName: node - linkType: hard - -"read-pkg@npm:^1.0.0": - version: 1.1.0 - resolution: "read-pkg@npm:1.1.0" - dependencies: - load-json-file: "npm:^1.0.0" - normalize-package-data: "npm:^2.3.2" - path-type: "npm:^1.0.0" - checksum: 10c0/51fce9f7066787dc7688ea7014324cedeb9f38daa7dace4f1147d526f22354a07189ef728710bc97e27fcf5ed3a03b68ad8b60afb4251984640b6f09c180d572 - languageName: node - linkType: hard - "readable-stream@npm:3, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -17012,7 +15669,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -17109,13 +15766,6 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.3": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 10c0/12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24 - languageName: node - linkType: hard - "regenerator-runtime@npm:^0.14.0": version: 0.14.1 resolution: "regenerator-runtime@npm:0.14.1" @@ -17314,43 +15964,6 @@ __metadata: languageName: node linkType: hard -"request-progress@npm:^2.0.1": - version: 2.0.1 - resolution: "request-progress@npm:2.0.1" - dependencies: - throttleit: "npm:^1.0.0" - checksum: 10c0/f8f532e69e7eb058112fb9d6f9f5b8180b3bce9fb57c82586d830d864a3486b691612815212ac67e449690cf550e3e83e6563c819e6380048b73f1478ce316db - languageName: node - linkType: hard - -"request@npm:^2.81.0": - version: 2.88.2 - resolution: "request@npm:2.88.2" - dependencies: - aws-sign2: "npm:~0.7.0" - aws4: "npm:^1.8.0" - caseless: "npm:~0.12.0" - combined-stream: "npm:~1.0.6" - extend: "npm:~3.0.2" - forever-agent: "npm:~0.6.1" - form-data: "npm:~2.3.2" - har-validator: "npm:~5.1.3" - http-signature: "npm:~1.2.0" - is-typedarray: "npm:~1.0.0" - isstream: "npm:~0.1.2" - json-stringify-safe: "npm:~5.0.1" - mime-types: "npm:~2.1.19" - oauth-sign: "npm:~0.9.0" - performance-now: "npm:^2.1.0" - qs: "npm:~6.5.2" - safe-buffer: "npm:^5.1.2" - tough-cookie: "npm:~2.5.0" - tunnel-agent: "npm:^0.6.0" - uuid: "npm:^3.3.2" - checksum: 10c0/0ec66e7af1391e51ad231de3b1c6c6aef3ebd0a238aa50d4191c7a792dcdb14920eea8d570c702dc5682f276fe569d176f9b8ebc6031a3cf4a630a691a431a63 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -17365,13 +15978,6 @@ __metadata: languageName: node linkType: hard -"require-main-filename@npm:^1.0.1": - version: 1.0.1 - resolution: "require-main-filename@npm:1.0.1" - checksum: 10c0/1ab87efb72a0e223a667154e92f29ca753fd42eb87f22db142b91c86d134e29ecf18af929111ccd255fd340b57d84a9d39489498d8dfd5136b300ded30a5f0b6 - languageName: node - linkType: hard - "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" @@ -17416,32 +16022,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" - dependencies: - is-core-module: "npm:^2.16.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin": - version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.16.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 - languageName: node - linkType: hard - "responselike@npm:^2.0.0": version: 2.0.1 resolution: "responselike@npm:2.0.1" @@ -17696,7 +16276,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -17710,7 +16290,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 @@ -17813,7 +16393,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0": +"semver@npm:^5.4.1, semver@npm:^5.5.0": version: 5.7.2 resolution: "semver@npm:5.7.2" bin: @@ -17880,7 +16460,7 @@ __metadata: languageName: node linkType: hard -"set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0": +"set-blocking@npm:~2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 @@ -18066,13 +16646,6 @@ __metadata: languageName: node linkType: hard -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b - languageName: node - linkType: hard - "slice-ansi@npm:^3.0.0": version: 3.0.0 resolution: "slice-ansi@npm:3.0.0" @@ -18181,40 +16754,6 @@ __metadata: languageName: node linkType: hard -"spdx-correct@npm:^3.0.0": - version: 3.2.0 - resolution: "spdx-correct@npm:3.2.0" - dependencies: - spdx-expression-parse: "npm:^3.0.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.5.0 - resolution: "spdx-exceptions@npm:2.5.0" - checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: "npm:^2.1.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 10c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.21 - resolution: "spdx-license-ids@npm:3.0.21" - checksum: 10c0/ecb24c698d8496aa9efe23e0b1f751f8a7a89faedcdfcbfabae772b546c2db46ccde8f3bc447a238eb86bbcd4f73fea88720ef3b8394f7896381bec3d7736411 - languageName: node - linkType: hard - "speech-rule-engine@npm:^4.0.6": version: 4.1.1 resolution: "speech-rule-engine@npm:4.1.1" @@ -18242,27 +16781,6 @@ __metadata: languageName: node linkType: hard -"sshpk@npm:^1.7.0": - version: 1.18.0 - resolution: "sshpk@npm:1.18.0" - dependencies: - asn1: "npm:~0.2.3" - assert-plus: "npm:^1.0.0" - bcrypt-pbkdf: "npm:^1.0.0" - dashdash: "npm:^1.12.0" - ecc-jsbn: "npm:~0.1.1" - getpass: "npm:^0.1.1" - jsbn: "npm:~0.1.0" - safer-buffer: "npm:^2.0.2" - tweetnacl: "npm:~0.14.0" - bin: - sshpk-conv: bin/sshpk-conv - sshpk-sign: bin/sshpk-sign - sshpk-verify: bin/sshpk-verify - checksum: 10c0/e516e34fa981cfceef45fd2e947772cc70dbd57523e5c608e2cd73752ba7f8a99a04df7c3ed751588e8d91956b6f16531590b35d3489980d1c54c38bebcd41b1 - languageName: node - linkType: hard - "ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" @@ -18375,7 +16893,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.1, string-width@npm:^1.0.2": +"string-width@npm:^1.0.1": version: 1.0.2 resolution: "string-width@npm:1.0.2" dependencies: @@ -18463,15 +16981,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-bom@npm:2.0.0" - dependencies: - is-utf8: "npm:^0.2.0" - checksum: 10c0/4fcbb248af1d5c1f2d710022b7d60245077e7942079bfb7ef3fc8c1ae78d61e96278525ba46719b15ab12fced5c7603777105bc898695339d7c97c64d300ed0b - languageName: node - linkType: hard - "strip-dirs@npm:^2.0.0": version: 2.1.0 resolution: "strip-dirs@npm:2.1.0" @@ -18613,15 +17122,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -18631,27 +17131,6 @@ __metadata: languageName: node linkType: hard -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 - languageName: node - linkType: hard - -"svg2png@npm:4.1.1": - version: 4.1.1 - resolution: "svg2png@npm:4.1.1" - dependencies: - file-url: "npm:^2.0.0" - phantomjs-prebuilt: "npm:^2.1.14" - pn: "npm:^1.0.0" - yargs: "npm:^6.5.0" - bin: - svg2png: bin/svg2png-cli.js - checksum: 10c0/0ab5ee91c109d264e5d3696071e28bb666b29fcce4c3ff12028a04f143708ab176ae37c0550546f5d6a56fabb72babb746f43fa0c26126c54236ff0b8f11da8f - languageName: node - linkType: hard - "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" @@ -18799,13 +17278,6 @@ __metadata: languageName: node linkType: hard -"throttleit@npm:^1.0.0": - version: 1.0.1 - resolution: "throttleit@npm:1.0.1" - checksum: 10c0/4d41a1bf467646b1aa7bec0123b78452a0e302d7344f6a67e43e68434f0a02ea3ba44df050a40c69adeb9cae3cbf6b36b38cfe94bcc3c4a8243c9b63e38e059b - languageName: node - linkType: hard - "through2@npm:4.0.2": version: 4.0.2 resolution: "through2@npm:4.0.2" @@ -18822,13 +17294,6 @@ __metadata: languageName: node linkType: hard -"timm@npm:^1.6.1": - version: 1.7.1 - resolution: "timm@npm:1.7.1" - checksum: 10c0/28759984dac61dce80a250eb6fed42803f834658b77ef0ebec869cc663110a05e8d453cc317f63fe8c8b3a3401a277dc3483324a652b05a4621a4563eaacabad - languageName: node - linkType: hard - "tiny-async-pool@npm:1.3.0": version: 1.3.0 resolution: "tiny-async-pool@npm:1.3.0" @@ -18866,13 +17331,6 @@ __metadata: languageName: node linkType: hard -"tinycolor2@npm:^1.4.1": - version: 1.6.0 - resolution: "tinycolor2@npm:1.6.0" - checksum: 10c0/9aa79a36ba2c2a87cb221453465cabacd04b9e35f9694373e846fdc78b1c768110f81e581ea41440106c0f24d9a023891d0887e8075885e790ac40eb0e74a5c1 - languageName: node - linkType: hard - "tinyexec@npm:^0.3.2": version: 0.3.2 resolution: "tinyexec@npm:0.3.2" @@ -19035,16 +17493,6 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" - dependencies: - psl: "npm:^1.1.28" - punycode: "npm:^2.1.1" - checksum: 10c0/e1cadfb24d40d64ca16de05fa8192bc097b66aeeb2704199b055ff12f450e4f30c927ce250f53d01f39baad18e1c11d66f65e545c5c6269de4c366fafa4c0543 - languageName: node - linkType: hard - "tr46@npm:^5.1.0": version: 5.1.0 resolution: "tr46@npm:5.1.0" @@ -19157,13 +17605,6 @@ __metadata: languageName: node linkType: hard -"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": - version: 0.14.5 - resolution: "tweetnacl@npm:0.14.5" - checksum: 10c0/4612772653512c7bc19e61923fbf42903f5e0389ec76a4a1f17195859d114671ea4aa3b734c2029ce7e1fa7e5cc8b80580f67b071ecf0b46b5636d030a0102a2 - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -19205,13 +17646,6 @@ __metadata: languageName: node linkType: hard -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 - languageName: node - linkType: hard - "typescript-eslint@npm:^8.29.1": version: 8.30.1 resolution: "typescript-eslint@npm:8.30.1" @@ -19556,15 +17990,6 @@ __metadata: languageName: node linkType: hard -"utif@npm:^2.0.1": - version: 2.0.1 - resolution: "utif@npm:2.0.1" - dependencies: - pako: "npm:^1.0.5" - checksum: 10c0/a6c3616c2bba87173903eba49eefa62ce25d91dbfea336baf605f2a7266b679ae2e4e81d23089acd22dbb9f2e5da3d53165e2d842abb08edf0d5213ca168a57e - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -19590,24 +18015,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 10c0/1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347 - languageName: node - linkType: hard - -"uuid@npm:^8.3.1": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 - languageName: node - linkType: hard - "uuid@npm:^9.0.1": version: 9.0.1 resolution: "uuid@npm:9.0.1" @@ -19624,16 +18031,6 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: "npm:^3.0.0" - spdx-expression-parse: "npm:^3.0.0" - checksum: 10c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f - languageName: node - linkType: hard - "vary@npm:^1, vary@npm:^1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -19641,17 +18038,6 @@ __metadata: languageName: node linkType: hard -"verror@npm:1.10.0": - version: 1.10.0 - resolution: "verror@npm:1.10.0" - dependencies: - assert-plus: "npm:^1.0.0" - core-util-is: "npm:1.0.2" - extsprintf: "npm:^1.2.0" - checksum: 10c0/37ccdf8542b5863c525128908ac80f2b476eed36a32cb944de930ca1e2e78584cc435c4b9b4c68d0fc13a47b45ff364b4be43aa74f8804f9050140f660fb660d - languageName: node - linkType: hard - "verror@npm:^1.10.0": version: 1.10.1 resolution: "verror@npm:1.10.1" @@ -20065,13 +18451,6 @@ __metadata: languageName: node linkType: hard -"which-module@npm:^1.0.0": - version: 1.0.0 - resolution: "which-module@npm:1.0.0" - checksum: 10c0/ce5088fb12dae0b6d5997b6221342943ff6275c3b2cd9c569f04ec23847c71013d254c6127d531010dccc22c0fc0f8dce2b6ecf6898941a60b576adb2018af22 - languageName: node - linkType: hard - "which-pm-runs@npm:^1.0.0": version: 1.1.0 resolution: "which-pm-runs@npm:1.1.0" @@ -20079,17 +18458,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.10": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: "npm:^2.0.0" - bin: - which: ./bin/which - checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 - languageName: node - linkType: hard - "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -20167,16 +18535,6 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^2.0.0": - version: 2.1.0 - resolution: "wrap-ansi@npm:2.1.0" - dependencies: - string-width: "npm:^1.0.1" - strip-ansi: "npm:^3.0.1" - checksum: 10c0/1a47367eef192fc9ecaf00238bad5de8987c3368082b619ab36c5e2d6d7b0a2aef95a2ca65840be598c56ced5090a3ba487956c7aee0cac7c45017502fa980fb - languageName: node - linkType: hard - "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -20221,18 +18579,6 @@ __metadata: languageName: node linkType: hard -"xhr@npm:^2.0.1": - version: 2.6.0 - resolution: "xhr@npm:2.6.0" - dependencies: - global: "npm:~4.4.0" - is-function: "npm:^1.0.1" - parse-headers: "npm:^2.0.0" - xtend: "npm:^4.0.0" - checksum: 10c0/b73b6413b678846c422559cbc0afb2acb34c3a75b4c3bbee1f258e984255a8b8d65c1749b51691278bbdc28781782950d77a759ef5a9adf7774bed2f5dabc954 - languageName: node - linkType: hard - "xlsx@https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz": version: 0.20.2 resolution: "xlsx@https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz" @@ -20260,13 +18606,6 @@ __metadata: languageName: node linkType: hard -"xml-parse-from-string@npm:^1.0.0": - version: 1.0.1 - resolution: "xml-parse-from-string@npm:1.0.1" - checksum: 10c0/485fd096818c360dce4a115444f2157a4ab61b0ec99753b0381ce40a26978dc2eceb8079bcbbbd5cd570901cd7aa7310cad3d5c47084602a5dbf7e530a59edda - languageName: node - linkType: hard - "xml2js@npm:0.6.2": version: 0.6.2 resolution: "xml2js@npm:0.6.2" @@ -20287,16 +18626,6 @@ __metadata: languageName: node linkType: hard -"xml2js@npm:^0.5.0": - version: 0.5.0 - resolution: "xml2js@npm:0.5.0" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:~11.0.0" - checksum: 10c0/c9cd07cd19c5e41c740913bbbf16999a37a204488e11f86eddc2999707d43967197e257014d7ed72c8fc4348c192fa47eb352d1d9d05637cefd0d2e24e9aa4c8 - languageName: node - linkType: hard - "xml@npm:^1.0.1": version: 1.0.1 resolution: "xml@npm:1.0.1" @@ -20339,13 +18668,6 @@ __metadata: languageName: node linkType: hard -"y18n@npm:^3.2.1": - version: 3.2.2 - resolution: "y18n@npm:3.2.2" - checksum: 10c0/08dc1880f6f766057ed25cd61ef0c7dab3db93639db9a7487a84f75dac7a349dface8dff8d1d8b7bdf50969fcd69ab858ab26b06968b4e4b12ee60d195233c46 - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -20397,15 +18719,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^4.2.0": - version: 4.2.1 - resolution: "yargs-parser@npm:4.2.1" - dependencies: - camelcase: "npm:^3.0.0" - checksum: 10c0/84cfede671a1bf3d9ae8349d88f6d93b3fcd835fd05437bc0367b8c6c47aa81b5627bd144953ccbba89d45702fabbb9713fda396ce9e7763a72e19e6c399e743 - languageName: node - linkType: hard - "yargs@npm:^17.0.1, yargs@npm:^17.5.1, yargs@npm:^17.6.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" @@ -20421,27 +18734,6 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^6.5.0": - version: 6.6.0 - resolution: "yargs@npm:6.6.0" - dependencies: - camelcase: "npm:^3.0.0" - cliui: "npm:^3.2.0" - decamelize: "npm:^1.1.1" - get-caller-file: "npm:^1.0.1" - os-locale: "npm:^1.4.0" - read-pkg-up: "npm:^1.0.1" - require-directory: "npm:^2.1.1" - require-main-filename: "npm:^1.0.1" - set-blocking: "npm:^2.0.0" - string-width: "npm:^1.0.2" - which-module: "npm:^1.0.0" - y18n: "npm:^3.2.1" - yargs-parser: "npm:^4.2.0" - checksum: 10c0/d27290e404a279dc4e6b9ae7e378af773c1697e9ceec798adc8ac8bb6c3c12e20309861f5ace03252fa25f93448847e1891adb17edf5ce9e50007b0782a2ee4c - languageName: node - linkType: hard - "yauzl@npm:^2.10.0, yauzl@npm:^2.4.2": version: 2.10.0 resolution: "yauzl@npm:2.10.0" From e73f6505e9ba7faa3f65148edfbad588321fb4e2 Mon Sep 17 00:00:00 2001 From: chenxue Date: Tue, 27 May 2025 17:01:39 +0800 Subject: [PATCH 009/388] feat: painting aihubmix support model: gpt-image-1 (#6486) * update select style * add openai painting * support base64 response * update config * fix upload preview bug * fix remix default model * fix history data * feat: optimize structure * fix history data --------- Co-authored-by: zhaochenxue --- packages/shared/IpcChannel.ts | 1 + src/main/ipc.ts | 1 + src/main/services/FileStorage.ts | 45 ++ src/preload/index.ts | 4 +- src/renderer/src/i18n/locales/en-us.json | 27 +- src/renderer/src/i18n/locales/ja-jp.json | 27 +- src/renderer/src/i18n/locales/ru-ru.json | 28 +- src/renderer/src/i18n/locales/zh-cn.json | 29 +- src/renderer/src/i18n/locales/zh-tw.json | 27 +- .../src/pages/paintings/AihubmixPage.tsx | 490 ++++++------------ .../src/pages/paintings/DmxapiPage.tsx | 4 +- .../pages/paintings/PaintingsRoutePage.tsx | 2 +- .../{PaintingsPage.tsx => SiliconPage.tsx} | 8 +- .../paintings/{ => components}/Artboard.tsx | 14 +- .../{ => components}/PaintingsList.tsx | 0 .../pages/paintings/config/aihubmixConfig.tsx | 326 ++++++------ .../src/pages/paintings/config/constants.ts | 165 +++--- src/renderer/src/services/FileManager.ts | 16 + src/renderer/src/types/index.ts | 5 + 19 files changed, 608 insertions(+), 611 deletions(-) rename src/renderer/src/pages/paintings/{PaintingsPage.tsx => SiliconPage.tsx} (99%) rename src/renderer/src/pages/paintings/{ => components}/Artboard.tsx (94%) rename src/renderer/src/pages/paintings/{ => components}/PaintingsList.tsx (100%) diff --git a/packages/shared/IpcChannel.ts b/packages/shared/IpcChannel.ts index 528b64c4e4..50d9aa248c 100644 --- a/packages/shared/IpcChannel.ts +++ b/packages/shared/IpcChannel.ts @@ -111,6 +111,7 @@ export enum IpcChannel { File_WriteWithId = 'file:writeWithId', File_SaveImage = 'file:saveImage', File_Base64Image = 'file:base64Image', + File_SaveBase64Image = 'file:saveBase64Image', File_Download = 'file:download', File_Copy = 'file:copy', File_BinaryImage = 'file:binaryImage', diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 408af62c33..94de990c5d 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -249,6 +249,7 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { ipcMain.handle(IpcChannel.File_WriteWithId, fileManager.writeFileWithId) ipcMain.handle(IpcChannel.File_SaveImage, fileManager.saveImage) ipcMain.handle(IpcChannel.File_Base64Image, fileManager.base64Image) + ipcMain.handle(IpcChannel.File_SaveBase64Image, fileManager.saveBase64Image) ipcMain.handle(IpcChannel.File_Base64File, fileManager.base64File) ipcMain.handle(IpcChannel.File_Download, fileManager.downloadFile) ipcMain.handle(IpcChannel.File_Copy, fileManager.copyFile) diff --git a/src/main/services/FileStorage.ts b/src/main/services/FileStorage.ts index 9b097e96ef..0ea36abc09 100644 --- a/src/main/services/FileStorage.ts +++ b/src/main/services/FileStorage.ts @@ -268,6 +268,51 @@ class FileStorage { } } + public saveBase64Image = async (_: Electron.IpcMainInvokeEvent, base64Data: string): Promise => { + try { + if (!base64Data) { + throw new Error('Base64 data is required') + } + + // 移除 base64 头部信息(如果存在) + const base64String = base64Data.replace(/^data:.*;base64,/, '') + const buffer = Buffer.from(base64String, 'base64') + const uuid = uuidv4() + const ext = '.png' + const destPath = path.join(this.storageDir, uuid + ext) + + logger.info('[FileStorage] Saving base64 image:', { + storageDir: this.storageDir, + destPath, + bufferSize: buffer.length + }) + + // 确保目录存在 + if (!fs.existsSync(this.storageDir)) { + fs.mkdirSync(this.storageDir, { recursive: true }) + } + + await fs.promises.writeFile(destPath, buffer) + + const fileMetadata: FileType = { + id: uuid, + origin_name: uuid + ext, + name: uuid + ext, + path: destPath, + created_at: new Date().toISOString(), + size: buffer.length, + ext: ext.slice(1), + type: getFileType(ext), + count: 1 + } + + return fileMetadata + } catch (error) { + logger.error('[FileStorage] Failed to save base64 image:', error) + throw error + } + } + public base64File = async (_: Electron.IpcMainInvokeEvent, id: string): Promise<{ data: string; mime: string }> => { const filePath = path.join(this.storageDir, id) const buffer = await fs.promises.readFile(filePath) diff --git a/src/preload/index.ts b/src/preload/index.ts index 2a69ae908e..f5a4a85f12 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -76,7 +76,9 @@ const api = { selectFolder: () => ipcRenderer.invoke(IpcChannel.File_SelectFolder), saveImage: (name: string, data: string) => ipcRenderer.invoke(IpcChannel.File_SaveImage, name, data), base64Image: (fileId: string) => ipcRenderer.invoke(IpcChannel.File_Base64Image, fileId), - download: (url: string, isUseContentType?: boolean) => ipcRenderer.invoke(IpcChannel.File_Download, url, isUseContentType), + saveBase64Image: (data: string) => ipcRenderer.invoke(IpcChannel.File_SaveBase64Image, data), + download: (url: string, isUseContentType?: boolean) => + ipcRenderer.invoke(IpcChannel.File_Download, url, isUseContentType), copy: (fileId: string, destPath: string) => ipcRenderer.invoke(IpcChannel.File_Copy, fileId, destPath), binaryImage: (fileId: string) => ipcRenderer.invoke(IpcChannel.File_BinaryImage, fileId), base64File: (fileId: string) => ipcRenderer.invoke(IpcChannel.File_Base64File, fileId), diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 7ec3bdaa02..ec1b3c7cdb 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -820,12 +820,12 @@ "seed_desc_tip": "The same seed and prompt can generate similar images, setting -1 will generate different results each time", "title": "Images", "magic_prompt_option": "Magic Prompt", - "model": "Model Version", + "model": "Model", "aspect_ratio": "Aspect Ratio", "style_type": "Style", "rendering_speed": "Rendering Speed", "learn_more": "Learn More", - "paint_course":"tutorial", + "paint_course": "tutorial", "prompt_placeholder_edit": "Enter your image description, text drawing uses \"double quotes\" to wrap", "proxy_required": "Currently, you need to open a proxy to view the generated images, it will be supported in the future", "image_file_required": "Please upload an image first", @@ -846,6 +846,29 @@ "turbo": "Turbo", "quality": "Quality" }, + "quality_options": { + "auto": "Auto", + "low": "Low", + "medium": "Medium", + "high": "High" + }, + "moderation_options": { + "auto": "Auto", + "low": "Low" + }, + "background_options": { + "auto": "Auto", + "transparent": "Transparent", + "opaque": "Opaque" + }, + "aspect_ratios": { + "square": "Square", + "portrait": "Portrait", + "landscape": "Landscape" + }, + "quality": "Quality", + "moderation": "Moderation", + "background": "Background", "mode": { "generate": "Draw", "edit": "Edit", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index a46c13267e..7535d37709 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -820,12 +820,12 @@ "seed_desc_tip": "同じシードとプロンプトで類似した画像を生成できますが、-1 に設定すると毎回異なる結果が生成されます", "title": "画像", "magic_prompt_option": "プロンプト強化", - "model": "モデルバージョン", + "model": "モデル", "aspect_ratio": "画幅比例", "style_type": "スタイル", "learn_more": "詳しくはこちら", "prompt_placeholder_edit": "画像の説明を入力します。テキスト描画には '二重引用符' を使用します", - "paint_course":"チュートリアル", + "paint_course": "チュートリアル", "proxy_required": "現在、プロキシを開く必要があります。これは、将来サポートされる予定です", "image_file_required": "画像を先にアップロードしてください", "image_file_retry": "画像を先にアップロードしてください", @@ -844,6 +844,29 @@ "turbo": "高速", "quality": "高品質" }, + "quality_options": { + "auto": "自動", + "low": "低", + "medium": "中", + "high": "高" + }, + "moderation_options": { + "auto": "自動", + "low": "低" + }, + "background_options": { + "auto": "自動", + "transparent": "透明", + "opaque": "不透明" + }, + "aspect_ratios": { + "square": "正方形", + "portrait": "縦図", + "landscape": "横図" + }, + "quality": "品質", + "moderation": "敏感度", + "background": "背景", "mode": { "generate": "画像生成", "edit": "部分編集", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index c8959a4a05..5550262b27 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -820,13 +820,13 @@ "seed_desc_tip": "Одинаковые сиды и промпты могут генерировать похожие изображения, установка -1 будет создавать разные результаты каждый раз", "title": "Изображения", "magic_prompt_option": "Улучшение промпта", - "model": "Версия", + "model": "Модель", "aspect_ratio": "Пропорции изображения", "style_type": "Стиль", "rendering_speed": "Скорость рендеринга", "learn_more": "Узнать больше", "prompt_placeholder_edit": "Введите ваше описание изображения, текстовая отрисовка использует двойные кавычки для обертки", - "paint_course":"Руководство / Учебник", + "paint_course": "Руководство / Учебник", "proxy_required": "Сейчас необходимо открыть прокси для просмотра сгенерированных изображений, в будущем будет поддерживаться прямое соединение", "image_file_required": "Пожалуйста, сначала загрузите изображение", "image_file_retry": "Пожалуйста, сначала загрузите изображение", @@ -841,11 +841,34 @@ "3d": "3D", "anime": "Аниме" }, + "quality_options": { + "auto": "Авто", + "low": "Низкое", + "medium": "Среднее", + "high": "Высокое" + }, + "moderation_options": { + "auto": "Авто", + "low": "Низкое" + }, + "background_options": { + "auto": "Авто", + "transparent": "Прозрачный", + "opaque": "Непрозрачный" + }, "rendering_speeds": { "default": "По умолчанию", "turbo": "Быстро", "quality": "Качественно" }, + "aspect_ratios": { + "square": "Квадрат", + "portrait": "Портрет", + "landscape": "Пейзаж" + }, + "quality": "Качество", + "moderation": "Сенсорность", + "background": "Фон", "mode": { "generate": "Рисование", "edit": "Редактирование", @@ -892,7 +915,6 @@ "seed_tip": "Контролирует случайный характер увеличения изображений для воспроизводимых результатов", "magic_prompt_option_tip": "Улучшает увеличение изображений с помощью интеллектуального оптимизирования промптов" }, - "rendering_speed": "Скорость рендеринга", "text_desc_required": "Пожалуйста, сначала введите описание изображения" }, "prompts": { diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 5d08e7a616..f224e15466 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -820,12 +820,12 @@ "seed_desc_tip": "相同的种子和提示词可以生成相似的图片,设置 -1 每次生成都不一样", "title": "图片", "magic_prompt_option": "提示词增强", - "model": "版本", + "model": "模型", "aspect_ratio": "画幅比例", "style_type": "风格", "rendering_speed": "渲染速度", "learn_more": "了解更多", - "paint_course":"教程", + "paint_course": "教程", "prompt_placeholder_edit": "输入你的图片描述,文本绘制用 \"双引号\" 包裹", "proxy_required": "目前需要打开代理才能查看生成图片,后续会支持国内直连", "image_file_required": "请先上传图片", @@ -846,11 +846,34 @@ "turbo": "快速", "quality": "高质量" }, + "quality_options": { + "auto": "自动", + "low": "低", + "medium": "中", + "high": "高" + }, + "moderation_options": { + "auto": "自动", + "low": "低" + }, + "background_options": { + "auto": "自动", + "transparent": "透明", + "opaque": "不透明" + }, + "aspect_ratios": { + "square": "方形", + "portrait": "竖图", + "landscape": "横图" + }, + "quality": "质量", + "moderation": "敏感度", + "background": "背景", "mode": { "generate": "绘图", "edit": "编辑", "remix": "混合", - "upscale": "放大" + "upscale": "高清增强" }, "generate": { "model_tip": "模型版本:V3 为最新版本,V2 为之前版本,V2A 为快速模型、V_1 为初代模型,_TURBO 为加速版本", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 95b710dab2..4b702dc955 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -821,12 +821,12 @@ "seed_desc_tip": "相同的種子和提示詞可以生成相似的圖片,設置 -1 每次生成都不一樣", "title": "繪圖", "magic_prompt_option": "提示詞增強", - "model": "版本", + "model": "模型", "aspect_ratio": "畫幅比例", "style_type": "風格", "learn_more": "了解更多", "prompt_placeholder_edit": "輸入你的圖片描述,文本繪製用 '雙引號' 包裹", - "paint_course":"教程", + "paint_course": "教程", "proxy_required": "目前需要打開代理才能查看生成圖片,後續會支持國內直連", "image_file_required": "請先上傳圖片", "image_file_retry": "請重新上傳圖片", @@ -846,6 +846,29 @@ "turbo": "快速", "quality": "高品質" }, + "quality_options": { + "auto": "自動", + "low": "低", + "medium": "中", + "high": "高" + }, + "moderation_options": { + "auto": "自動", + "low": "低" + }, + "background_options": { + "auto": "自動", + "transparent": "透明", + "opaque": "不透明" + }, + "aspect_ratios": { + "square": "方形", + "portrait": "豎圖", + "landscape": "橫圖" + }, + "quality": "品質", + "moderation": "敏感度", + "background": "背景", "mode": { "generate": "繪圖", "edit": "編輯", diff --git a/src/renderer/src/pages/paintings/AihubmixPage.tsx b/src/renderer/src/pages/paintings/AihubmixPage.tsx index f8b69e1466..666ed1d72f 100644 --- a/src/renderer/src/pages/paintings/AihubmixPage.tsx +++ b/src/renderer/src/pages/paintings/AihubmixPage.tsx @@ -22,17 +22,16 @@ import { Avatar, Button, Input, InputNumber, Radio, Segmented, Select, Slider, S import TextArea from 'antd/es/input/TextArea' import { Info } from 'lucide-react' import type { FC } from 'react' -import { useEffect, useMemo, useRef, useState } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useLocation, useNavigate } from 'react-router-dom' import styled from 'styled-components' import SendMessageButton from '../home/Inputbar/SendMessageButton' import { SettingHelpLink, SettingTitle } from '../settings' -import Artboard from './Artboard' -import { type ConfigItem, createModeConfigs } from './config/aihubmixConfig' -import { DEFAULT_PAINTING } from './config/constants' -import PaintingsList from './PaintingsList' +import Artboard from './components/Artboard' +import PaintingsList from './components/PaintingsList' +import { type ConfigItem, createModeConfigs, DEFAULT_PAINTING } from './config/aihubmixConfig' // 使用函数创建配置项 const modeConfigs = createModeConfigs() @@ -74,12 +73,13 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { { label: t('paintings.mode.upscale'), value: 'upscale' } ] - const getNewPainting = () => { + const getNewPainting = useCallback(() => { return { ...DEFAULT_PAINTING, + model: mode === 'generate' ? 'gpt-image-1' : 'V_3', id: uuid() } - } + }, [mode]) const textareaRef = useRef(null) @@ -89,6 +89,47 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { updatePainting(mode, updatedPainting) } + const handleError = (error: unknown) => { + if (error instanceof Error && error.name !== 'AbortError') { + window.modal.error({ + content: getErrorMessage(error), + centered: true + }) + } + } + + const downloadImages = async (urls: string[]) => { + const downloadedFiles = await Promise.all( + urls.map(async (url) => { + try { + if (!url?.trim()) { + console.error('图像URL为空,可能是提示词违禁') + window.message.warning({ + content: t('message.empty_url'), + key: 'empty-url-warning' + }) + return null + } + return await window.api.file.download(url) + } catch (error) { + console.error('下载图像失败:', error) + if ( + error instanceof Error && + (error.message.includes('Failed to parse URL') || error.message.includes('Invalid URL')) + ) { + window.message.warning({ + content: t('message.empty_url'), + key: 'empty-url-warning' + }) + } + return null + } + }) + ) + + return downloadedFiles.filter((file): file is FileType => file !== null) + } + const onGenerate = async () => { if (painting.files.length > 0) { const confirmed = await window.modal.confirm({ @@ -129,11 +170,11 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { dispatch(setGenerating(true)) let body: string | FormData = '' - const headers: Record = { + let headers: Record = { 'Api-Key': aihubmixProvider.apiKey } + let url = aihubmixProvider.apiHost + `/ideogram/` + mode - // 不使用 AiProvider 的通用规则,而是直接调用自定义接口 try { if (mode === 'generate') { if (painting.model === 'V_3') { @@ -214,67 +255,47 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { console.log('V3 API响应:', data) const urls = data.data.map((item) => item.url) - // Rest of the code for handling image downloads is the same if (urls.length > 0) { - const downloadedFiles = await Promise.all( - urls.map(async (url) => { - try { - // 检查URL是否为空 - if (!url || url.trim() === '') { - console.error('图像URL为空,可能是提示词违禁') - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - return null - } - return await window.api.file.download(url) - } catch (error) { - console.error('下载图像失败:', error) - // 检查是否是URL解析错误 - if ( - error instanceof Error && - (error.message.includes('Failed to parse URL') || error.message.includes('Invalid URL')) - ) { - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - } - return null - } - }) - ) - - const validFiles = downloadedFiles.filter((file): file is FileType => file !== null) + const validFiles = await downloadImages(urls) await FileManager.addFiles(validFiles) updatePaintingState({ files: validFiles, urls }) } return } catch (error: unknown) { - if (error instanceof Error && error.name !== 'AbortError') { - window.modal.error({ - content: getErrorMessage(error), - centered: true - }) - } + handleError(error) } finally { setIsLoading(false) dispatch(setGenerating(false)) setAbortController(null) } } else { - // Existing V1/V2 API - const requestData = { - image_request: { + let requestData: any = {} + if (painting.model === 'gpt-image-1') { + requestData = { prompt, model: painting.model, - aspect_ratio: painting.aspectRatio, - num_images: painting.numImages, - style_type: painting.styleType, - seed: painting.seed ? +painting.seed : undefined, - negative_prompt: painting.negativePrompt || undefined, - magic_prompt_option: painting.magicPromptOption ? 'ON' : 'OFF' + size: painting.size === 'auto' ? undefined : painting.size, + n: painting.n, + quality: painting.quality, + moderation: painting.moderation + } + url = aihubmixProvider.apiHost + `/v1/images/generations` + headers = { + Authorization: `Bearer ${aihubmixProvider.apiKey}` + } + } else { + // Existing V1/V2 API + requestData = { + image_request: { + prompt, + model: painting.model, + aspect_ratio: painting.aspectRatio, + num_images: painting.numImages, + style_type: painting.styleType, + seed: painting.seed ? +painting.seed : undefined, + negative_prompt: painting.negativePrompt || undefined, + magic_prompt_option: painting.magicPromptOption ? 'ON' : 'OFF' + } } } body = JSON.stringify(requestData) @@ -352,37 +373,7 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { // Handle the downloaded images if (urls.length > 0) { - const downloadedFiles = await Promise.all( - urls.map(async (url) => { - try { - // 检查URL是否为空 - if (!url || url.trim() === '') { - console.error('图像URL为空,可能是提示词违禁') - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - return null - } - return await window.api.file.download(url) - } catch (error) { - console.error('下载图像失败:', error) - // 检查是否是URL解析错误 - if ( - error instanceof Error && - (error.message.includes('Failed to parse URL') || error.message.includes('Invalid URL')) - ) { - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - } - return null - } - }) - ) - - const validFiles = downloadedFiles.filter((file): file is FileType => file !== null) + const validFiles = await downloadImages(urls) await FileManager.addFiles(validFiles) updatePaintingState({ files: validFiles, urls }) } @@ -405,119 +396,6 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { form.append('image_file', fileMap[painting.imageFile] as unknown as Blob) body = form } - } else if (mode === 'edit') { - if (!painting.imageFile) { - window.modal.error({ - content: t('paintings.image_file_required'), - centered: true - }) - return - } - if (!fileMap[painting.imageFile]) { - window.modal.error({ - content: t('paintings.image_file_retry'), - centered: true - }) - return - } - - if (painting.model === 'V_3') { - // V3 Edit API - const formData = new FormData() - formData.append('prompt', prompt) - formData.append('rendering_speed', painting.renderingSpeed || 'DEFAULT') - formData.append('num_images', String(painting.numImages || 1)) - - if (painting.styleType) { - formData.append('style_type', painting.styleType) - } - - if (painting.seed) { - formData.append('seed', painting.seed) - } - - if (painting.magicPromptOption !== undefined) { - formData.append('magic_prompt', painting.magicPromptOption ? 'ON' : 'OFF') - } - - // Add the image file - formData.append('image', fileMap[painting.imageFile] as unknown as Blob) - - // Add the mask if available - if (painting.mask) { - formData.append('mask', painting.mask as unknown as Blob) - } - - body = formData - // For V3 Edit endpoint - const response = await fetch(`${aihubmixProvider.apiHost}/ideogram/v1/ideogram-v3/edit`, { - method: 'POST', - headers: { 'Api-Key': aihubmixProvider.apiKey }, - body - }) - - if (!response.ok) { - const errorData = await response.json() - console.error('V3 Edit API错误:', errorData) - throw new Error(errorData.error?.message || '图像编辑失败') - } - - const data = await response.json() - console.log('V3 Edit API响应:', data) - const urls = data.data.map((item) => item.url) - - // Handle the downloaded images - if (urls.length > 0) { - const downloadedFiles = await Promise.all( - urls.map(async (url) => { - try { - // 检查URL是否为空 - if (!url || url.trim() === '') { - console.error('图像URL为空,可能是提示词违禁') - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - return null - } - return await window.api.file.download(url) - } catch (error) { - console.error('下载图像失败:', error) - // 检查是否是URL解析错误 - if ( - error instanceof Error && - (error.message.includes('Failed to parse URL') || error.message.includes('Invalid URL')) - ) { - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - } - return null - } - }) - ) - - const validFiles = downloadedFiles.filter((file): file is FileType => file !== null) - await FileManager.addFiles(validFiles) - updatePaintingState({ files: validFiles, urls }) - } - return - } else { - // Existing V1/V2 API for edit - const form = new FormData() - const imageRequest: Record = { - prompt, - model: painting.model, - style_type: painting.styleType, - num_images: painting.numImages, - seed: painting.seed ? +painting.seed : undefined, - magic_prompt_option: painting.magicPromptOption ? 'ON' : 'OFF' - } - form.append('image_request', JSON.stringify(imageRequest)) - form.append('image_file', fileMap[painting.imageFile] as unknown as Blob) - body = form - } } else if (mode === 'upscale') { if (!painting.imageFile) { window.modal.error({ @@ -549,9 +427,9 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { } // 只针对非V3模型使用通用接口 - if (!painting.model?.includes('V_3')) { + if (!painting.model?.includes('V_3') || mode === 'upscale') { // 直接调用自定义接口 - const response = await fetch(`${aihubmixProvider.apiHost}/ideogram/${mode}`, { method: 'POST', headers, body }) + const response = await fetch(url, { method: 'POST', headers, body }) if (!response.ok) { const errorData = await response.json() @@ -561,53 +439,27 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { const data = await response.json() console.log('通用API响应:', data) - const urls = data.data.map((item) => item.url) + const urls = data.data.filter((item) => item.url).map((item) => item.url) + const base64s = data.data.filter((item) => item.b64_json).map((item) => item.b64_json) if (urls.length > 0) { - const downloadedFiles = await Promise.all( - urls.map(async (url) => { - try { - // 检查URL是否为空 - if (!url || url.trim() === '') { - console.error('图像URL为空,可能是提示词违禁') - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - return null - } - return await window.api.file.download(url) - } catch (error) { - console.error('下载图像失败:', error) - // 检查是否是URL解析错误 - if ( - error instanceof Error && - (error.message.includes('Failed to parse URL') || error.message.includes('Invalid URL')) - ) { - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - } - return null - } + const validFiles = await downloadImages(urls) + await FileManager.addFiles(validFiles) + updatePaintingState({ files: validFiles, urls }) + } + + if (base64s?.length > 0) { + const validFiles = await Promise.all( + base64s.map(async (base64) => { + return await window.api.file.saveBase64Image(base64) }) ) - - const validFiles = downloadedFiles.filter((file): file is FileType => file !== null) - await FileManager.addFiles(validFiles) - - updatePaintingState({ files: validFiles, urls }) + updatePaintingState({ files: validFiles, urls: validFiles.map((file) => file.name) }) } } } catch (error: unknown) { - if (error instanceof Error && error.name !== 'AbortError') { - window.modal.error({ - content: getErrorMessage(error), - centered: true - }) - } + handleError(error) } finally { setIsLoading(false) dispatch(setGenerating(false)) @@ -617,43 +469,15 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { const handleRetry = async (painting: PaintingAction) => { setIsLoading(true) - const downloadedFiles = await Promise.all( - painting.urls.map(async (url) => { - try { - // 检查URL是否为空 - if (!url || url.trim() === '') { - console.error('图像URL为空,可能是提示词违禁') - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - return null - } - return await window.api.file.download(url) - } catch (error) { - console.error('下载图像失败:', error) - // 检查是否是URL解析错误 - if ( - error instanceof Error && - (error.message.includes('Failed to parse URL') || error.message.includes('Invalid URL')) - ) { - window.message.warning({ - content: t('message.empty_url'), - key: 'empty-url-warning' - }) - } - setIsLoading(false) - return null - } - }) - ) - - const validFiles = downloadedFiles.filter((file): file is FileType => file !== null) - - await FileManager.addFiles(validFiles) - - updatePaintingState({ files: validFiles, urls: painting.urls }) - setIsLoading(false) + try { + const validFiles = await downloadImages(painting.urls) + await FileManager.addFiles(validFiles) + updatePaintingState({ files: validFiles, urls: painting.urls }) + } catch (error) { + handleError(error) + } finally { + setIsLoading(false) + } } const onCancel = () => { @@ -754,20 +578,8 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { } // 渲染配置项的函数 - const renderConfigItem = (item: ConfigItem, index: number) => { + const renderConfigForm = (item: ConfigItem) => { switch (item.type) { - case 'title': { - return ( - - {t(item.title!)} - {item.tooltip && ( - - - - )} - - ) - } case 'select': { // 处理函数类型的disabled属性 const isDisabled = typeof item.disabled === 'function' ? item.disabled(item, painting) : item.disabled @@ -786,10 +598,11 @@ const AihubmixPage: FC<{ Options: string[] }> = ({ Options }) => { return ( updatePaintingState({ [item.key!]: e.target.value })} - suffix={ - - } - /> - ) - } + case 'input': return ( updatePaintingState({ [item.key!]: e.target.value })} - suffix={item.suffix} + suffix={ + item.key === 'seed' ? ( + + ) : ( + item.suffix + ) + } /> ) - } - case 'inputNumber': { + case 'inputNumber': return ( updatePaintingState({ [item.key!]: v })} /> ) - } - case 'textarea': { + case 'textarea': return (