mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-08 22:39:36 +08:00
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.
This commit is contained in:
parent
44b07ee35d
commit
11daf93094
@ -111,7 +111,7 @@
|
|||||||
"@emotion/is-prop-valid": "^1.3.1",
|
"@emotion/is-prop-valid": "^1.3.1",
|
||||||
"@eslint-react/eslint-plugin": "^1.36.1",
|
"@eslint-react/eslint-plugin": "^1.36.1",
|
||||||
"@eslint/js": "^9.22.0",
|
"@eslint/js": "^9.22.0",
|
||||||
"@google/genai": "^0.13.0",
|
"@google/genai": "^1.0.1",
|
||||||
"@hello-pangea/dnd": "^16.6.0",
|
"@hello-pangea/dnd": "^16.6.0",
|
||||||
"@kangfenmao/keyv-storage": "^0.1.0",
|
"@kangfenmao/keyv-storage": "^0.1.0",
|
||||||
"@modelcontextprotocol/sdk": "^1.11.4",
|
"@modelcontextprotocol/sdk": "^1.11.4",
|
||||||
@ -137,7 +137,6 @@
|
|||||||
"@types/react-infinite-scroll-component": "^5.0.0",
|
"@types/react-infinite-scroll-component": "^5.0.0",
|
||||||
"@types/react-window": "^1",
|
"@types/react-window": "^1",
|
||||||
"@types/tinycolor2": "^1",
|
"@types/tinycolor2": "^1",
|
||||||
"@types/ws": "^8",
|
|
||||||
"@uiw/codemirror-extensions-langs": "^4.23.12",
|
"@uiw/codemirror-extensions-langs": "^4.23.12",
|
||||||
"@uiw/codemirror-themes-all": "^4.23.12",
|
"@uiw/codemirror-themes-all": "^4.23.12",
|
||||||
"@uiw/react-codemirror": "^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",
|
"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.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",
|
"@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",
|
"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",
|
"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",
|
"pkce-challenge@npm:^4.1.0": "patch:pkce-challenge@npm%3A4.1.0#~/.yarn/patches/pkce-challenge-npm-4.1.0-fbc51695a3.patch",
|
||||||
|
|||||||
@ -18,7 +18,6 @@ import CopilotService from './services/CopilotService'
|
|||||||
import { ExportService } from './services/ExportService'
|
import { ExportService } from './services/ExportService'
|
||||||
import FileService from './services/FileService'
|
import FileService from './services/FileService'
|
||||||
import FileStorage from './services/FileStorage'
|
import FileStorage from './services/FileStorage'
|
||||||
import { GeminiService } from './services/GeminiService'
|
|
||||||
import KnowledgeService from './services/KnowledgeService'
|
import KnowledgeService from './services/KnowledgeService'
|
||||||
import mcpService from './services/MCPService'
|
import mcpService from './services/MCPService'
|
||||||
import NotificationService from './services/NotificationService'
|
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
|
// mini window
|
||||||
ipcMain.handle(IpcChannel.MiniWindow_Show, () => windowService.showMiniWindow())
|
ipcMain.handle(IpcChannel.MiniWindow_Show, () => windowService.showMiniWindow())
|
||||||
ipcMain.handle(IpcChannel.MiniWindow_Hide, () => windowService.hideMiniWindow())
|
ipcMain.handle(IpcChannel.MiniWindow_Hide, () => windowService.hideMiniWindow())
|
||||||
|
|||||||
@ -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<File> {
|
|
||||||
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<File | undefined> {
|
|
||||||
const sdk = new GoogleGenAI({ vertexai: false, apiKey })
|
|
||||||
const cachedResponse = CacheService.get<any>(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>, 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<File[]> {
|
|
||||||
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 })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -5,8 +5,6 @@ import { Col, Image, Row, Spin, Table } from 'antd'
|
|||||||
import React, { memo } from 'react'
|
import React, { memo } from 'react'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
import GeminiFiles from './GeminiFiles'
|
|
||||||
|
|
||||||
interface ContentViewProps {
|
interface ContentViewProps {
|
||||||
id: FileTypes | 'all' | string
|
id: FileTypes | 'all' | string
|
||||||
files?: FileType[]
|
files?: FileType[]
|
||||||
@ -45,10 +43,6 @@ const ContentView: React.FC<ContentViewProps> = ({ id, files, dataSource, column
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id.startsWith('gemini_')) {
|
|
||||||
return <GeminiFiles id={id.replace('gemini_', '') as string} />
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Table
|
<Table
|
||||||
dataSource={dataSource}
|
dataSource={dataSource}
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import React, { memo } from 'react'
|
|||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
import FileItem from './FileItem'
|
import FileItem from './FileItem'
|
||||||
import GeminiFiles from './GeminiFiles'
|
|
||||||
|
|
||||||
interface FileItemProps {
|
interface FileItemProps {
|
||||||
id: FileTypes | 'all' | string
|
id: FileTypes | 'all' | string
|
||||||
@ -58,10 +57,6 @@ const FileList: React.FC<FileItemProps> = ({ id, list, files }) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id.startsWith('gemini_')) {
|
|
||||||
return <GeminiFiles id={id.replace('gemini_', '') as string} />
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<VirtualList
|
<VirtualList
|
||||||
data={list}
|
data={list}
|
||||||
|
|||||||
@ -1,102 +0,0 @@
|
|||||||
import { DeleteOutlined } from '@ant-design/icons'
|
|
||||||
import type { File } from '@google/genai'
|
|
||||||
import { useProvider } from '@renderer/hooks/useProvider'
|
|
||||||
import { runAsyncFunction } from '@renderer/utils'
|
|
||||||
import { MB } from '@shared/config/constant'
|
|
||||||
import { Spin } from 'antd'
|
|
||||||
import dayjs from 'dayjs'
|
|
||||||
import { FC, useCallback, useEffect, useState } from 'react'
|
|
||||||
import styled from 'styled-components'
|
|
||||||
|
|
||||||
import FileItem from './FileItem'
|
|
||||||
|
|
||||||
interface GeminiFilesProps {
|
|
||||||
id: string
|
|
||||||
}
|
|
||||||
|
|
||||||
const GeminiFiles: FC<GeminiFilesProps> = ({ id }) => {
|
|
||||||
const { provider } = useProvider(id)
|
|
||||||
const [files, setFiles] = useState<File[]>([])
|
|
||||||
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 (
|
|
||||||
<Container>
|
|
||||||
<LoadingWrapper>
|
|
||||||
<Spin />
|
|
||||||
</LoadingWrapper>
|
|
||||||
</Container>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Container>
|
|
||||||
<FileListContainer>
|
|
||||||
{files.map((file) => (
|
|
||||||
<FileItem
|
|
||||||
key={file.name}
|
|
||||||
fileInfo={{
|
|
||||||
name: file.displayName,
|
|
||||||
ext: `.${file.name?.split('.').pop()}`,
|
|
||||||
extra: `${dayjs(file.createTime).format('MM-DD HH:mm')} · ${(parseInt(file.sizeBytes || '0') / MB).toFixed(2)} MB`,
|
|
||||||
actions: (
|
|
||||||
<DeleteOutlined
|
|
||||||
style={{ cursor: 'pointer', color: 'var(--color-error)' }}
|
|
||||||
onClick={() => {
|
|
||||||
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])
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</FileListContainer>
|
|
||||||
</Container>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
Content,
|
Content,
|
||||||
File,
|
File,
|
||||||
|
FileState,
|
||||||
FinishReason,
|
FinishReason,
|
||||||
FunctionCall,
|
FunctionCall,
|
||||||
GenerateContentConfig,
|
GenerateContentConfig,
|
||||||
@ -9,6 +10,7 @@ import {
|
|||||||
HarmBlockThreshold,
|
HarmBlockThreshold,
|
||||||
HarmCategory,
|
HarmCategory,
|
||||||
Modality,
|
Modality,
|
||||||
|
Pager,
|
||||||
Part,
|
Part,
|
||||||
PartUnion,
|
PartUnion,
|
||||||
SafetySetting,
|
SafetySetting,
|
||||||
@ -27,6 +29,7 @@ import {
|
|||||||
import { getStoreSetting } from '@renderer/hooks/useSettings'
|
import { getStoreSetting } from '@renderer/hooks/useSettings'
|
||||||
import i18n from '@renderer/i18n'
|
import i18n from '@renderer/i18n'
|
||||||
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/AssistantService'
|
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/AssistantService'
|
||||||
|
import { CacheService } from '@renderer/services/CacheService'
|
||||||
import { EVENT_NAMES } from '@renderer/services/EventService'
|
import { EVENT_NAMES } from '@renderer/services/EventService'
|
||||||
import {
|
import {
|
||||||
filterContextMessages,
|
filterContextMessages,
|
||||||
@ -91,7 +94,7 @@ export default class GeminiProvider extends BaseProvider {
|
|||||||
const isSmallFile = file.size < smallFileSize
|
const isSmallFile = file.size < smallFileSize
|
||||||
|
|
||||||
if (isSmallFile) {
|
if (isSmallFile) {
|
||||||
const { data, mimeType } = await window.api.gemini.base64File(file)
|
const { data, mimeType } = await this.base64File(file)
|
||||||
return {
|
return {
|
||||||
inlineData: {
|
inlineData: {
|
||||||
data,
|
data,
|
||||||
@ -101,7 +104,7 @@ export default class GeminiProvider extends BaseProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve file from Gemini uploaded files
|
// 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) {
|
if (fileMetadata) {
|
||||||
return {
|
return {
|
||||||
@ -113,10 +116,7 @@ export default class GeminiProvider extends BaseProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If file is not found, upload it to Gemini
|
// If file is not found, upload it to Gemini
|
||||||
const result = await window.api.gemini.uploadFile(file, {
|
const result = await this.uploadFile(file)
|
||||||
apiKey: this.apiKey,
|
|
||||||
baseURL: this.getBaseURL()
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fileData: {
|
fileData: {
|
||||||
@ -1153,4 +1153,62 @@ export default class GeminiProvider extends BaseProvider {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async uploadFile(file: FileType): Promise<File> {
|
||||||
|
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<File | undefined> {
|
||||||
|
const cachedResponse = CacheService.get<any>('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>, 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<File[]> {
|
||||||
|
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 })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
74
src/renderer/src/services/CacheService.ts
Normal file
74
src/renderer/src/services/CacheService.ts
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
interface CacheItem<T> {
|
||||||
|
data: T
|
||||||
|
timestamp: number
|
||||||
|
duration: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export class CacheService {
|
||||||
|
private static cache: Map<string, CacheItem<any>> = new Map()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set cache
|
||||||
|
* @param key Cache key
|
||||||
|
* @param data Cache data
|
||||||
|
* @param duration Cache duration (in milliseconds)
|
||||||
|
*/
|
||||||
|
static set<T>(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<T>(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
|
||||||
|
}
|
||||||
|
}
|
||||||
285
yarn.lock
285
yarn.lock
@ -2009,15 +2009,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@google/genai@npm:^0.13.0":
|
"@google/genai@npm:^1.0.1":
|
||||||
version: 0.13.0
|
version: 1.0.1
|
||||||
resolution: "@google/genai@npm:0.13.0"
|
resolution: "@google/genai@npm:1.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
google-auth-library: "npm:^9.14.2"
|
google-auth-library: "npm:^9.14.2"
|
||||||
ws: "npm:^8.18.0"
|
ws: "npm:^8.18.0"
|
||||||
zod: "npm:^3.22.4"
|
zod: "npm:^3.22.4"
|
||||||
zod-to-json-schema: "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
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -3503,6 +3505,19 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@npmcli/fs@npm:^2.1.0":
|
||||||
version: 2.1.2
|
version: 2.1.2
|
||||||
resolution: "@npmcli/fs@npm:2.1.2"
|
resolution: "@npmcli/fs@npm:2.1.2"
|
||||||
@ -3513,6 +3528,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@npmcli/move-file@npm:^2.0.0":
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
resolution: "@npmcli/move-file@npm:2.0.1"
|
resolution: "@npmcli/move-file@npm:2.0.1"
|
||||||
@ -5086,7 +5110,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/ws@npm:^8, @types/ws@npm:^8.5.4":
|
"@types/ws@npm:^8.5.4":
|
||||||
version: 8.18.1
|
version: 8.18.1
|
||||||
resolution: "@types/ws@npm:8.18.1"
|
resolution: "@types/ws@npm:8.18.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5941,7 +5965,7 @@ __metadata:
|
|||||||
"@emotion/is-prop-valid": "npm:^1.3.1"
|
"@emotion/is-prop-valid": "npm:^1.3.1"
|
||||||
"@eslint-react/eslint-plugin": "npm:^1.36.1"
|
"@eslint-react/eslint-plugin": "npm:^1.36.1"
|
||||||
"@eslint/js": "npm:^9.22.0"
|
"@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"
|
"@hello-pangea/dnd": "npm:^16.6.0"
|
||||||
"@kangfenmao/keyv-storage": "npm:^0.1.0"
|
"@kangfenmao/keyv-storage": "npm:^0.1.0"
|
||||||
"@langchain/community": "npm:^0.3.36"
|
"@langchain/community": "npm:^0.3.36"
|
||||||
@ -5970,7 +5994,6 @@ __metadata:
|
|||||||
"@types/react-infinite-scroll-component": "npm:^5.0.0"
|
"@types/react-infinite-scroll-component": "npm:^5.0.0"
|
||||||
"@types/react-window": "npm:^1"
|
"@types/react-window": "npm:^1"
|
||||||
"@types/tinycolor2": "npm:^1"
|
"@types/tinycolor2": "npm:^1"
|
||||||
"@types/ws": "npm:^8"
|
|
||||||
"@uiw/codemirror-extensions-langs": "npm:^4.23.12"
|
"@uiw/codemirror-extensions-langs": "npm:^4.23.12"
|
||||||
"@uiw/codemirror-themes-all": "npm:^4.23.12"
|
"@uiw/codemirror-themes-all": "npm:^4.23.12"
|
||||||
"@uiw/react-codemirror": "npm:^4.23.12"
|
"@uiw/react-codemirror": "npm:^4.23.12"
|
||||||
@ -6079,6 +6102,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"abort-controller@npm:^3.0.0":
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
resolution: "abort-controller@npm:3.0.0"
|
resolution: "abort-controller@npm:3.0.0"
|
||||||
@ -6436,13 +6466,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"archiver-utils@npm:^5.0.0, archiver-utils@npm:^5.0.2":
|
||||||
version: 5.0.2
|
version: 5.0.2
|
||||||
resolution: "archiver-utils@npm:5.0.2"
|
resolution: "archiver-utils@npm:5.0.2"
|
||||||
@ -6473,16 +6496,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"are-we-there-yet@npm:~1.1.2":
|
||||||
version: 1.1.7
|
version: 1.1.7
|
||||||
resolution: "are-we-there-yet@npm:1.1.7"
|
resolution: "are-we-there-yet@npm:1.1.7"
|
||||||
@ -7009,6 +7022,26 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"cacheable-lookup@npm:^5.0.3":
|
||||||
version: 5.0.4
|
version: 5.0.4
|
||||||
resolution: "cacheable-lookup@npm:5.0.4"
|
resolution: "cacheable-lookup@npm:5.0.4"
|
||||||
@ -7522,15 +7555,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"color@npm:^5.0.0":
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
resolution: "color@npm:5.0.0"
|
resolution: "color@npm:5.0.0"
|
||||||
@ -7701,7 +7725,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 1.1.0
|
||||||
resolution: "console-control-strings@npm:1.1.0"
|
resolution: "console-control-strings@npm:1.1.0"
|
||||||
checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50
|
checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50
|
||||||
@ -10606,6 +10630,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"fs.realpath@npm:^1.0.0":
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
resolution: "fs.realpath@npm:1.0.0"
|
resolution: "fs.realpath@npm:1.0.0"
|
||||||
@ -10658,22 +10691,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"gauge@npm:~2.7.3":
|
||||||
version: 2.7.4
|
version: 2.7.4
|
||||||
resolution: "gauge@npm:2.7.4"
|
resolution: "gauge@npm:2.7.4"
|
||||||
@ -10858,7 +10875,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 10.4.5
|
||||||
resolution: "glob@npm:10.4.5"
|
resolution: "glob@npm:10.4.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -10874,7 +10891,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 7.2.3
|
||||||
resolution: "glob@npm:7.2.3"
|
resolution: "glob@npm:7.2.3"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -11130,7 +11147,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"has-unicode@npm:^2.0.0, has-unicode@npm:^2.0.1":
|
"has-unicode@npm:^2.0.0":
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
resolution: "has-unicode@npm:2.0.1"
|
resolution: "has-unicode@npm:2.0.1"
|
||||||
checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c
|
checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c
|
||||||
@ -12108,6 +12125,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"isstream@npm:~0.1.2":
|
||||||
version: 0.1.2
|
version: 0.1.2
|
||||||
resolution: "isstream@npm:0.1.2"
|
resolution: "isstream@npm:0.1.2"
|
||||||
@ -13012,7 +13036,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 10.4.3
|
||||||
resolution: "lru-cache@npm:10.4.3"
|
resolution: "lru-cache@npm:10.4.3"
|
||||||
checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb
|
checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb
|
||||||
@ -13114,7 +13138,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 10.2.1
|
||||||
resolution: "make-fetch-happen@npm:10.2.1"
|
resolution: "make-fetch-happen@npm:10.2.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -13138,6 +13162,25 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"mammoth@npm:1.6.0":
|
||||||
version: 1.6.0
|
version: 1.6.0
|
||||||
resolution: "mammoth@npm:1.6.0"
|
resolution: "mammoth@npm:1.6.0"
|
||||||
@ -14359,6 +14402,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"minipass-fetch@npm:^2.0.3":
|
||||||
version: 2.1.2
|
version: 2.1.2
|
||||||
resolution: "minipass-fetch@npm:2.1.2"
|
resolution: "minipass-fetch@npm:2.1.2"
|
||||||
@ -14374,6 +14426,21 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"minipass-flush@npm:^1.0.5":
|
||||||
version: 1.0.5
|
version: 1.0.5
|
||||||
resolution: "minipass-flush@npm:1.0.5"
|
resolution: "minipass-flush@npm:1.0.5"
|
||||||
@ -14417,7 +14484,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 7.1.2
|
||||||
resolution: "minipass@npm:7.1.2"
|
resolution: "minipass@npm:7.1.2"
|
||||||
checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557
|
checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557
|
||||||
@ -14736,24 +14803,23 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"node-gyp@npm:^9.1.0":
|
"node-gyp@npm:latest":
|
||||||
version: 9.4.1
|
version: 11.2.0
|
||||||
resolution: "node-gyp@npm:9.4.1"
|
resolution: "node-gyp@npm:11.2.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
env-paths: "npm:^2.2.0"
|
env-paths: "npm:^2.2.0"
|
||||||
exponential-backoff: "npm:^3.1.1"
|
exponential-backoff: "npm:^3.1.1"
|
||||||
glob: "npm:^7.1.4"
|
|
||||||
graceful-fs: "npm:^4.2.6"
|
graceful-fs: "npm:^4.2.6"
|
||||||
make-fetch-happen: "npm:^10.0.3"
|
make-fetch-happen: "npm:^14.0.3"
|
||||||
nopt: "npm:^6.0.0"
|
nopt: "npm:^8.0.0"
|
||||||
npmlog: "npm:^6.0.0"
|
proc-log: "npm:^5.0.0"
|
||||||
rimraf: "npm:^3.0.2"
|
|
||||||
semver: "npm:^7.3.5"
|
semver: "npm:^7.3.5"
|
||||||
tar: "npm:^6.1.2"
|
tar: "npm:^7.4.3"
|
||||||
which: "npm:^2.0.2"
|
tinyglobby: "npm:^0.2.12"
|
||||||
|
which: "npm:^5.0.0"
|
||||||
bin:
|
bin:
|
||||||
node-gyp: bin/node-gyp.js
|
node-gyp: bin/node-gyp.js
|
||||||
checksum: 10c0/f7d676cfa79f27d35edf17fe9c80064123670362352d19729e5dc9393d7e99f1397491c3107eddc0c0e8941442a6244a7ba6c860cfbe4b433b4cae248a55fe10
|
checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -14789,6 +14855,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"normalize-package-data@npm:^2.3.2":
|
||||||
version: 2.5.0
|
version: 2.5.0
|
||||||
resolution: "normalize-package-data@npm:2.5.0"
|
resolution: "normalize-package-data@npm:2.5.0"
|
||||||
@ -14843,18 +14920,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"npx-scope-finder@npm:^1.2.0":
|
||||||
version: 1.3.0
|
version: 1.3.0
|
||||||
resolution: "npx-scope-finder@npm:1.3.0"
|
resolution: "npx-scope-finder@npm:1.3.0"
|
||||||
@ -15206,6 +15271,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"p-queue@npm:^6.6.2":
|
||||||
version: 6.6.2
|
version: 6.6.2
|
||||||
resolution: "p-queue@npm:6.6.2"
|
resolution: "p-queue@npm:6.6.2"
|
||||||
@ -15907,6 +15979,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"process-nextick-args@npm:~2.0.0":
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
resolution: "process-nextick-args@npm:2.0.1"
|
resolution: "process-nextick-args@npm:2.0.1"
|
||||||
@ -16902,7 +16981,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 3.6.2
|
||||||
resolution: "readable-stream@npm:3.6.2"
|
resolution: "readable-stream@npm:3.6.2"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -17896,7 +17975,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 3.0.7
|
||||||
resolution: "signal-exit@npm:3.0.7"
|
resolution: "signal-exit@npm:3.0.7"
|
||||||
checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912
|
checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912
|
||||||
@ -18023,7 +18102,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 8.0.5
|
||||||
resolution: "socks-proxy-agent@npm:8.0.5"
|
resolution: "socks-proxy-agent@npm:8.0.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -18164,6 +18243,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"ssri@npm:^9.0.0":
|
||||||
version: 9.0.1
|
version: 9.0.1
|
||||||
resolution: "ssri@npm:9.0.1"
|
resolution: "ssri@npm:9.0.1"
|
||||||
@ -18612,7 +18700,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 6.2.1
|
||||||
resolution: "tar@npm:6.2.1"
|
resolution: "tar@npm:6.2.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -19221,6 +19309,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"unique-slug@npm:^3.0.0":
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
resolution: "unique-slug@npm:3.0.0"
|
resolution: "unique-slug@npm:3.0.0"
|
||||||
@ -19230,6 +19327,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"unist-util-find-after@npm:^5.0.0":
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
resolution: "unist-util-find-after@npm:5.0.0"
|
resolution: "unist-util-find-after@npm:5.0.0"
|
||||||
@ -19975,6 +20081,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"why-is-node-running@npm:^2.3.0":
|
||||||
version: 2.3.0
|
version: 2.3.0
|
||||||
resolution: "why-is-node-running@npm:2.3.0"
|
resolution: "why-is-node-running@npm:2.3.0"
|
||||||
@ -19994,7 +20111,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"wide-align@npm:^1.1.0, wide-align@npm:^1.1.5":
|
"wide-align@npm:^1.1.0":
|
||||||
version: 1.1.5
|
version: 1.1.5
|
||||||
resolution: "wide-align@npm:1.1.5"
|
resolution: "wide-align@npm:1.1.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user