diff --git a/.github/workflows/build-enjoy-app.yml b/.github/workflows/build-enjoy-app.yml index b1944dc80..2f7a5f2ac 100644 --- a/.github/workflows/build-enjoy-app.yml +++ b/.github/workflows/build-enjoy-app.yml @@ -1,19 +1,13 @@ name: Build Enjoy App on: workflow_dispatch: - inputs: - os: - type: choice - description: Choose os - options: - - macos-12 - - macos-14 - - windows-latest - - ubuntu-latest jobs: build: - runs-on: ${{ github.event.inputs.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-12, macos-14, windows-latest, ubuntu-latest] steps: - uses: actions/checkout@v4 @@ -31,13 +25,13 @@ jobs: id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: "**/node_modules" - key: ${{ github.event.inputs.os }}-${{ hashFiles('**/yarn.lock') }} + key: ${{ matrix.os }}-${{ hashFiles('**/yarn.lock') }} - name: Install dependencies run: yarn install - name: Install Apple certificate - if: contains(github.event.inputs.os, 'macos') + if: contains(matrix.os, 'macos') env: MACOS_CERTIFICATE_APPLICATION_BASE64: ${{ secrets.MACOS_CERTIFICATE_APPLICATION_BASE64 }} MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} @@ -54,7 +48,7 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: Enjoy-${{ runner.os }}-${{ github.event.inputs.os == 'macos-14' && 'arm64' || 'x64' }}-build-${{ github.ref_name }}-${{ steps.current-time.outputs.formattedTime }} + name: Enjoy-${{ runner.os }}-${{ matrix.os == 'macos-14' && 'arm64' || 'x64' }}-build-${{ github.ref_name }}-${{ steps.current-time.outputs.formattedTime }} path: | enjoy/out/make/**/*.deb enjoy/out/make/**/*.rpm diff --git a/enjoy/package.json b/enjoy/package.json index fb576315c..ed63fe50e 100644 --- a/enjoy/package.json +++ b/enjoy/package.json @@ -49,7 +49,7 @@ "@types/intl-tel-input": "^18.1.4", "@types/lodash": "^4.17.0", "@types/mark.js": "^8.11.12", - "@types/node": "^20.11.27", + "@types/node": "^20.11.28", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", "@types/validator": "^13.11.9", @@ -66,7 +66,7 @@ "flora-colossus": "^2.0.0", "octokit": "^3.1.2", "progress": "^2.0.3", - "tailwind-merge": "^2.2.1", + "tailwind-merge": "^2.2.2", "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.1", "tailwindcss-animate": "^1.0.7", @@ -82,7 +82,7 @@ "@ffmpeg/ffmpeg": "^0.12.10", "@ffmpeg/util": "^0.12.1", "@hookform/resolvers": "^3.3.4", - "@langchain/community": "^0.0.39", + "@langchain/community": "^0.0.40", "@langchain/google-genai": "^0.0.10", "@mozilla/readability": "^0.5.0", "@radix-ui/react-accordion": "^1.1.2", @@ -110,7 +110,7 @@ "@uidotdev/usehooks": "^2.4.1", "@vidstack/react": "^1.10.9", "autosize": "^6.0.1", - "axios": "^1.6.7", + "axios": "^1.6.8", "camelcase": "^8.0.0", "camelcase-keys": "^9.1.3", "chart.js": "^4.4.2", @@ -135,7 +135,7 @@ "html-to-text": "^9.0.5", "https-proxy-agent": "^7.0.4", "i18next": "^23.10.1", - "intl-tel-input": "^19.5.7", + "intl-tel-input": "^20.0.3", "js-md5": "^0.8.3", "langchain": "^0.1.28", "lodash": "^4.17.21", @@ -143,14 +143,14 @@ "mark.js": "^8.11.1", "microsoft-cognitiveservices-speech-sdk": "^1.36.0", "next-themes": "^0.3.0", - "openai": "^4.29.0", + "openai": "^4.29.1", "pitchfinder": "^2.3.2", - "postcss": "^8.4.35", + "postcss": "^8.4.36", "proxy-agent": "^6.4.0", "react": "^18.2.0", "react-activity-calendar": "^2.2.8", "react-dom": "^18.2.0", - "react-hook-form": "^7.51.0", + "react-hook-form": "^7.51.1", "react-hotkeys-hook": "^4.5.0", "react-i18next": "^14.1.0", "react-markdown": "^9.0.1", diff --git a/enjoy/src/i18n/en.json b/enjoy/src/i18n/en.json index ce46a4d24..93f6e640d 100644 --- a/enjoy/src/i18n/en.json +++ b/enjoy/src/i18n/en.json @@ -474,6 +474,7 @@ "resolvingDownloadUrl": "Resolving download URL", "waveformIsDecoded": "Waveform is decoded", "decodingWaveform": "Decoding waveform", + "failedToDecodeWaveform": "Failed to decode waveform", "transcribedSuccessfully": "Transcribed successfully", "transcribing": "Transcribing", "notTranscribedYet": "Not transcribed yet", diff --git a/enjoy/src/i18n/zh-CN.json b/enjoy/src/i18n/zh-CN.json index 849bed732..b16228ba8 100644 --- a/enjoy/src/i18n/zh-CN.json +++ b/enjoy/src/i18n/zh-CN.json @@ -473,6 +473,7 @@ "resolvingDownloadUrl": "正在解析下载地址", "waveformIsDecoded": "波形已解码", "decodingWaveform": "正在解码波形", + "failedToDecodeWaveform": "解码波形失败", "transcribedSuccessfully": "语音转文本成功", "transcribing": "正在语音转文本", "notTranscribedYet": "尚未语音转文本", diff --git a/enjoy/src/renderer/components/medias/media-loading-modal.tsx b/enjoy/src/renderer/components/medias/media-loading-modal.tsx index a64d8e7da..7d0676670 100644 --- a/enjoy/src/renderer/components/medias/media-loading-modal.tsx +++ b/enjoy/src/renderer/components/medias/media-loading-modal.tsx @@ -15,7 +15,7 @@ import { PingPoint, Progress, } from "@renderer/components/ui"; -import { CheckCircleIcon, LoaderIcon } from "lucide-react"; +import { CheckCircleIcon, LoaderIcon, XCircleIcon } from "lucide-react"; import { t } from "i18next"; import { useNavigate } from "react-router-dom"; @@ -23,7 +23,9 @@ export const MediaLoadingModal = () => { const navigate = useNavigate(); const { whisperConfig } = useContext(AISettingsProviderContext); const { + media, decoded, + decodeError, transcription, transcribing, transcribingProgress, @@ -47,6 +49,21 @@ export const MediaLoadingModal = () => { {t("waveformIsDecoded")} + ) : decodeError ? ( +
+
+ +
+
+
+ {decodeError} +
+
+ {t("failedToDecodeWaveform")}:{" "} + {media?.src} +
+
+
) : (
diff --git a/enjoy/src/renderer/components/medias/media-player.tsx b/enjoy/src/renderer/components/medias/media-player.tsx index efa0aa913..9d0979add 100644 --- a/enjoy/src/renderer/components/medias/media-player.tsx +++ b/enjoy/src/renderer/components/medias/media-player.tsx @@ -13,7 +13,9 @@ import { } from "@vidstack/react/player/layouts/default"; export const MediaPlayer = () => { - const { media, setMediaProvider } = useContext(MediaPlayerProviderContext); + const { media, setMediaProvider, setDecodeError } = useContext( + MediaPlayerProviderContext + ); const mediaRemote = useMediaRemote(); if (!media?.src) return null; @@ -31,6 +33,7 @@ export const MediaPlayer = () => { setMediaProvider(provider.video); } }} + onError={(err) => setDecodeError(err.message)} > diff --git a/enjoy/src/renderer/components/posts/post-audio.tsx b/enjoy/src/renderer/components/posts/post-audio.tsx index 1d0c97d1b..5a54edb98 100644 --- a/enjoy/src/renderer/components/posts/post-audio.tsx +++ b/enjoy/src/renderer/components/posts/post-audio.tsx @@ -14,6 +14,8 @@ import { } from "@vidstack/react/player/layouts/default"; export const STORAGE_WORKER_ENDPOINT = "https://enjoy-storage.baizhiheizi.com"; import { TimelineEntry } from "echogarden/dist/utilities/Timeline.d.js"; +import { t } from "i18next"; +import { XCircleIcon } from "lucide-react"; export const PostAudio = (props: { audio: Partial; @@ -23,6 +25,7 @@ export const PostAudio = (props: { const [currentTime, setCurrentTime] = useState(0); const { webApi } = useContext(AppSettingsProviderContext); const [transcription, setTranscription] = useState(); + const [error, setError] = useState(null); const currentTranscription = transcription?.result["transcript"] ? (transcription.result?.timeline || []).find( @@ -45,6 +48,22 @@ export const PostAudio = (props: { }); }, [audio.md5]); + if (error) { + return ( +
+
+ +
+
+ {error} +
+
+ +
+
+ ); + } + return (
{audio.sourceUrl.startsWith(STORAGE_WORKER_ENDPOINT) ? ( @@ -53,6 +72,7 @@ export const PostAudio = (props: { setCurrentTime={setCurrentTime} audio={audio} height={height} + onError={(err) => setError(err.message)} /> ) : ( setError(err.message)} > @@ -88,8 +109,9 @@ const WavesurferPlayer = (props: { height?: number; currentTime: number; setCurrentTime: (currentTime: number) => void; + onError?: (error: Error) => void; }) => { - const { audio, height = 80, currentTime, setCurrentTime } = props; + const { audio, height = 80, onError, setCurrentTime } = props; const [initialized, setInitialized] = useState(false); const [isPlaying, setIsPlaying] = useState(false); const [wavesurfer, setWavesurfer] = useState(null); @@ -162,6 +184,9 @@ const WavesurferPlayer = (props: { }, 1000); setInitialized(true); }), + wavesurfer.on("error", (err: Error) => { + onError(err); + }), ]; return () => { diff --git a/enjoy/src/renderer/components/posts/post-recording.tsx b/enjoy/src/renderer/components/posts/post-recording.tsx index ea9f58898..48d005297 100644 --- a/enjoy/src/renderer/components/posts/post-recording.tsx +++ b/enjoy/src/renderer/components/posts/post-recording.tsx @@ -6,6 +6,8 @@ import { Button, Skeleton } from "@renderer/components/ui"; import { PlayIcon, PauseIcon } from "lucide-react"; import { useIntersectionObserver } from "@uidotdev/usehooks"; import { secondsToTimestamp } from "@renderer/lib/utils"; +import { t } from "i18next"; +import { XCircleIcon } from "lucide-react"; export const PostRecording = (props: { recording: RecordingType; @@ -20,6 +22,7 @@ export const PostRecording = (props: { threshold: 1, }); const [duration, setDuration] = useState(0); + const [error, setError] = useState(null); const onPlayClick = useCallback(() => { wavesurfer.isPlaying() ? wavesurfer.pause() : wavesurfer.play(); @@ -31,6 +34,7 @@ export const PostRecording = (props: { if (!entry?.isIntersecting) return; if (!recording.src) return; if (wavesurfer) return; + if (error) return; const ws = WaveSurfer.create({ container: containerRef.current, @@ -48,7 +52,11 @@ export const PostRecording = (props: { }); setWavesurfer(ws); - }, [recording.src, entry]); + + return () => { + setWavesurfer(null); + }; + }, [recording.src, entry, error]); useEffect(() => { if (!wavesurfer) return; @@ -84,6 +92,9 @@ export const PostRecording = (props: { }, 1000); setInitialized(true); }), + wavesurfer.on("error", (err: Error) => { + setError(err.message); + }), ]; return () => { @@ -92,6 +103,22 @@ export const PostRecording = (props: { }; }, [wavesurfer]); + if (error) { + return ( +
+
+ +
+
+ {error} +
+
+ +
+
+ ); + } + return (
diff --git a/enjoy/src/renderer/context/app-settings-provider.tsx b/enjoy/src/renderer/context/app-settings-provider.tsx index ff42cff99..7793f1a68 100644 --- a/enjoy/src/renderer/context/app-settings-provider.tsx +++ b/enjoy/src/renderer/context/app-settings-provider.tsx @@ -39,7 +39,6 @@ export const AppSettingsProvider = ({ }: { children: React.ReactNode; }) => { - const [initialized, setInitialized] = useState(false); const [version, setVersion] = useState(""); const [apiUrl, setApiUrl] = useState(WEB_API_URL); const [webApi, setWebApi] = useState(null); @@ -62,10 +61,6 @@ export const AppSettingsProvider = ({ fetchProxyConfig(); }, []); - useEffect(() => { - validate(); - }, [user, libraryPath]); - useEffect(() => { if (!apiUrl) return; @@ -192,10 +187,6 @@ export const AppSettingsProvider = ({ }); }; - const validate = async () => { - setInitialized(Boolean(user && libraryPath)); - }; - return ( {children} diff --git a/enjoy/src/renderer/context/media-player-provider.tsx b/enjoy/src/renderer/context/media-player-provider.tsx index 9ecd53564..f6d1acebf 100644 --- a/enjoy/src/renderer/context/media-player-provider.tsx +++ b/enjoy/src/renderer/context/media-player-provider.tsx @@ -9,6 +9,7 @@ import Regions, { import Chart from "chart.js/auto"; import { TimelineEntry } from "echogarden/dist/utilities/Timeline.d.js"; import { IPA_MAPPING } from "@/constants"; +import { toast } from "@renderer/components/ui"; type MediaPlayerContextType = { media: AudioType | VideoType; @@ -19,6 +20,8 @@ type MediaPlayerContextType = { wavesurfer: WaveSurfer; setRef: (ref: any) => void; decoded: boolean; + decodeError: string; + setDecodeError: (error: string) => void; // player state currentTime: number; currentSegmentIndex: number; @@ -89,6 +92,7 @@ export const MediaPlayerProvider = ({ // Player state const [decoded, setDecoded] = useState(false); + const [decodeError, setDecodeError] = useState(null); const [currentTime, setCurrentTime] = useState(0); const [currentSegmentIndex, setCurrentSegmentIndex] = useState(0); const [fitZoomRatio, setFitZoomRatio] = useState(1.0); @@ -333,6 +337,10 @@ export const MediaPlayerProvider = ({ wavesurfer.on("ready", () => { setDecoded(true); }), + wavesurfer.on("error", (err: Error) => { + toast.error(err.message); + setDecodeError(err.message); + }), ]; return () => { @@ -360,7 +368,7 @@ export const MediaPlayerProvider = ({ return () => { setFitZoomRatio(1.0); - } + }; }, [ref, wavesurfer, activeRegion]); /* @@ -411,6 +419,8 @@ export const MediaPlayerProvider = ({ */ useEffect(() => { initializeWavesurfer(); + setDecoded(false); + setDecodeError(null); }, [media, ref, mediaProvider]); return ( @@ -422,6 +432,8 @@ export const MediaPlayerProvider = ({ wavesurfer, setRef, decoded, + decodeError, + setDecodeError, currentTime, currentSegmentIndex, setCurrentSegmentIndex, diff --git a/yarn.lock b/yarn.lock index 7e53c37c5..94e16ed80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1144,7 +1144,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.7, @babel/runtime@npm:^7.23.9": +"@babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.0": version: 7.24.0 resolution: "@babel/runtime@npm:7.24.0" dependencies: @@ -2222,7 +2222,281 @@ __metadata: languageName: node linkType: hard -"@langchain/community@npm:^0.0.39, @langchain/community@npm:~0.0.36": +"@langchain/community@npm:^0.0.40": + version: 0.0.40 + resolution: "@langchain/community@npm:0.0.40" + dependencies: + "@langchain/core": "npm:~0.1.44" + "@langchain/openai": "npm:~0.0.19" + flat: "npm:^5.0.2" + langsmith: "npm:~0.1.1" + uuid: "npm:^9.0.0" + zod: "npm:^3.22.3" + peerDependencies: + "@aws-crypto/sha256-js": ^5.0.0 + "@aws-sdk/client-bedrock-agent-runtime": ^3.485.0 + "@aws-sdk/client-bedrock-runtime": ^3.422.0 + "@aws-sdk/client-dynamodb": ^3.310.0 + "@aws-sdk/client-kendra": ^3.352.0 + "@aws-sdk/client-lambda": ^3.310.0 + "@aws-sdk/client-sagemaker-runtime": ^3.310.0 + "@aws-sdk/client-sfn": ^3.310.0 + "@aws-sdk/credential-provider-node": ^3.388.0 + "@azure/search-documents": ^12.0.0 + "@clickhouse/client": ^0.2.5 + "@cloudflare/ai": "*" + "@datastax/astra-db-ts": ^0.1.4 + "@elastic/elasticsearch": ^8.4.0 + "@getmetal/metal-sdk": "*" + "@getzep/zep-js": ^0.9.0 + "@gomomento/sdk": ^1.51.1 + "@gomomento/sdk-core": ^1.51.1 + "@google-ai/generativelanguage": ^0.2.1 + "@gradientai/nodejs-sdk": ^1.2.0 + "@huggingface/inference": ^2.6.4 + "@mozilla/readability": "*" + "@opensearch-project/opensearch": "*" + "@pinecone-database/pinecone": "*" + "@planetscale/database": ^1.8.0 + "@qdrant/js-client-rest": ^1.2.0 + "@raycast/api": ^1.55.2 + "@rockset/client": ^0.9.1 + "@smithy/eventstream-codec": ^2.0.5 + "@smithy/protocol-http": ^3.0.6 + "@smithy/signature-v4": ^2.0.10 + "@smithy/util-utf8": ^2.0.0 + "@supabase/postgrest-js": ^1.1.1 + "@supabase/supabase-js": ^2.10.0 + "@tensorflow-models/universal-sentence-encoder": "*" + "@tensorflow/tfjs-converter": "*" + "@tensorflow/tfjs-core": "*" + "@upstash/redis": ^1.20.6 + "@upstash/vector": ^1.0.2 + "@vercel/kv": ^0.2.3 + "@vercel/postgres": ^0.5.0 + "@writerai/writer-sdk": ^0.40.2 + "@xata.io/client": ^0.28.0 + "@xenova/transformers": ^2.5.4 + "@zilliz/milvus2-sdk-node": ">=2.2.7" + better-sqlite3: ^9.4.0 + cassandra-driver: ^4.7.2 + chromadb: "*" + closevector-common: 0.1.3 + closevector-node: 0.1.6 + closevector-web: 0.1.6 + cohere-ai: "*" + convex: ^1.3.1 + couchbase: ^4.3.0 + discord.js: ^14.14.1 + dria: ^0.0.3 + faiss-node: ^0.5.1 + firebase-admin: ^11.9.0 || ^12.0.0 + google-auth-library: ^8.9.0 + googleapis: ^126.0.1 + hnswlib-node: ^1.4.2 + html-to-text: ^9.0.5 + ioredis: ^5.3.2 + jsdom: "*" + jsonwebtoken: ^9.0.2 + llmonitor: ^0.5.9 + lodash: ^4.17.21 + lunary: ^0.6.11 + mongodb: ">=5.2.0" + mysql2: ^3.3.3 + neo4j-driver: "*" + node-llama-cpp: "*" + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.2.1 + portkey-ai: ^0.1.11 + redis: "*" + replicate: ^0.18.0 + typeorm: ^0.3.12 + typesense: ^1.5.3 + usearch: ^1.1.1 + vectordb: ^0.1.4 + voy-search: 0.6.2 + weaviate-ts-client: "*" + web-auth-library: ^1.0.3 + ws: ^8.14.2 + peerDependenciesMeta: + "@aws-crypto/sha256-js": + optional: true + "@aws-sdk/client-bedrock-agent-runtime": + optional: true + "@aws-sdk/client-bedrock-runtime": + optional: true + "@aws-sdk/client-dynamodb": + optional: true + "@aws-sdk/client-kendra": + optional: true + "@aws-sdk/client-lambda": + optional: true + "@aws-sdk/client-sagemaker-runtime": + optional: true + "@aws-sdk/client-sfn": + optional: true + "@aws-sdk/credential-provider-node": + optional: true + "@azure/search-documents": + optional: true + "@clickhouse/client": + optional: true + "@cloudflare/ai": + optional: true + "@datastax/astra-db-ts": + optional: true + "@elastic/elasticsearch": + optional: true + "@getmetal/metal-sdk": + optional: true + "@getzep/zep-js": + optional: true + "@gomomento/sdk": + optional: true + "@gomomento/sdk-core": + optional: true + "@google-ai/generativelanguage": + optional: true + "@gradientai/nodejs-sdk": + optional: true + "@huggingface/inference": + optional: true + "@mozilla/readability": + optional: true + "@opensearch-project/opensearch": + optional: true + "@pinecone-database/pinecone": + optional: true + "@planetscale/database": + optional: true + "@qdrant/js-client-rest": + optional: true + "@raycast/api": + optional: true + "@rockset/client": + optional: true + "@smithy/eventstream-codec": + optional: true + "@smithy/protocol-http": + optional: true + "@smithy/signature-v4": + optional: true + "@smithy/util-utf8": + optional: true + "@supabase/postgrest-js": + optional: true + "@supabase/supabase-js": + optional: true + "@tensorflow-models/universal-sentence-encoder": + optional: true + "@tensorflow/tfjs-converter": + optional: true + "@tensorflow/tfjs-core": + optional: true + "@upstash/redis": + optional: true + "@upstash/vector": + optional: true + "@vercel/kv": + optional: true + "@vercel/postgres": + optional: true + "@writerai/writer-sdk": + optional: true + "@xata.io/client": + optional: true + "@xenova/transformers": + optional: true + "@zilliz/milvus2-sdk-node": + optional: true + better-sqlite3: + optional: true + cassandra-driver: + optional: true + chromadb: + optional: true + closevector-common: + optional: true + closevector-node: + optional: true + closevector-web: + optional: true + cohere-ai: + optional: true + convex: + optional: true + couchbase: + optional: true + discord.js: + optional: true + dria: + optional: true + faiss-node: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + ioredis: + optional: true + jsdom: + optional: true + jsonwebtoken: + optional: true + llmonitor: + optional: true + lodash: + optional: true + lunary: + optional: true + mongodb: + optional: true + mysql2: + optional: true + neo4j-driver: + optional: true + node-llama-cpp: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + portkey-ai: + optional: true + redis: + optional: true + replicate: + optional: true + typeorm: + optional: true + typesense: + optional: true + usearch: + optional: true + vectordb: + optional: true + voy-search: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + checksum: 10c0/24c86d437bc14302c22ef2b0b55d6e3213487e69edf57c63be25888b2082391f76598263c8268e9e3ed73da0a6c1b1b9e7c1c474cf5fc2288bc1caf64e439732 + languageName: node + linkType: hard + +"@langchain/community@npm:~0.0.36": version: 0.0.39 resolution: "@langchain/community@npm:0.0.39" dependencies: @@ -5374,12 +5648,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^20.11.27": - version: 20.11.27 - resolution: "@types/node@npm:20.11.27" +"@types/node@npm:^20.11.28": + version: 20.11.28 + resolution: "@types/node@npm:20.11.28" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/ec40bea80c60a12b39bd0da9b16333237a84c67ae83c8aa382b88381ae3948943bf6af969442e209270ad3e109f301a6b01ab243f80bd0e69673a877425f9418 + checksum: 10c0/c599745243ed9ae4ca87460f18f88d02ab7424b545136aa504ed7a1d898e3a9bb133c927bcc7e861f79d7f6043ef917a173e780c8a001e129221e92f6d97b0ee languageName: node linkType: hard @@ -6453,14 +6727,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.6.7": - version: 1.6.7 - resolution: "axios@npm:1.6.7" +"axios@npm:^1.6.8": + version: 1.6.8 + resolution: "axios@npm:1.6.8" dependencies: - follow-redirects: "npm:^1.15.4" + follow-redirects: "npm:^1.15.6" form-data: "npm:^4.0.0" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/131bf8e62eee48ca4bd84e6101f211961bf6a21a33b95e5dfb3983d5a2fe50d9fffde0b57668d7ce6f65063d3dc10f2212cbcb554f75cfca99da1c73b210358d + checksum: 10c0/0f22da6f490335479a89878bc7d5a1419484fbb437b564a80c34888fc36759ae4f56ea28d55a191695e5ed327f0bad56e7ff60fb6770c14d1be6501505d47ab9 languageName: node linkType: hard @@ -8840,7 +9114,7 @@ __metadata: "@ffmpeg/ffmpeg": "npm:^0.12.10" "@ffmpeg/util": "npm:^0.12.1" "@hookform/resolvers": "npm:^3.3.4" - "@langchain/community": "npm:^0.0.39" + "@langchain/community": "npm:^0.0.40" "@langchain/google-genai": "npm:^0.0.10" "@mozilla/readability": "npm:^0.5.0" "@playwright/test": "npm:^1.42.1" @@ -8875,7 +9149,7 @@ __metadata: "@types/intl-tel-input": "npm:^18.1.4" "@types/lodash": "npm:^4.17.0" "@types/mark.js": "npm:^8.11.12" - "@types/node": "npm:^20.11.27" + "@types/node": "npm:^20.11.28" "@types/react": "npm:^18.2.66" "@types/react-dom": "npm:^18.2.22" "@types/validator": "npm:^13.11.9" @@ -8887,7 +9161,7 @@ __metadata: "@vitejs/plugin-react": "npm:^4.2.1" autoprefixer: "npm:^10.4.18" autosize: "npm:^6.0.1" - axios: "npm:^1.6.7" + axios: "npm:^1.6.8" camelcase: "npm:^8.0.0" camelcase-keys: "npm:^9.1.3" chart.js: "npm:^4.4.2" @@ -8918,7 +9192,7 @@ __metadata: html-to-text: "npm:^9.0.5" https-proxy-agent: "npm:^7.0.4" i18next: "npm:^23.10.1" - intl-tel-input: "npm:^19.5.7" + intl-tel-input: "npm:^20.0.3" js-md5: "npm:^0.8.3" langchain: "npm:^0.1.28" lodash: "npm:^4.17.21" @@ -8927,15 +9201,15 @@ __metadata: microsoft-cognitiveservices-speech-sdk: "npm:^1.36.0" next-themes: "npm:^0.3.0" octokit: "npm:^3.1.2" - openai: "npm:^4.29.0" + openai: "npm:^4.29.1" pitchfinder: "npm:^2.3.2" - postcss: "npm:^8.4.35" + postcss: "npm:^8.4.36" progress: "npm:^2.0.3" proxy-agent: "npm:^6.4.0" react: "npm:^18.2.0" react-activity-calendar: "npm:^2.2.8" react-dom: "npm:^18.2.0" - react-hook-form: "npm:^7.51.0" + react-hook-form: "npm:^7.51.1" react-hotkeys-hook: "npm:^4.5.0" react-i18next: "npm:^14.1.0" react-markdown: "npm:^9.0.1" @@ -8947,7 +9221,7 @@ __metadata: sequelize-typescript: "npm:^2.1.6" sonner: "npm:^1.4.3" sqlite3: "npm:^5.1.7" - tailwind-merge: "npm:^2.2.1" + tailwind-merge: "npm:^2.2.2" tailwind-scrollbar: "npm:^3.1.0" tailwind-scrollbar-hide: "npm:^1.1.7" tailwindcss: "npm:^3.4.1" @@ -9876,13 +10150,13 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.15.4": - version: 1.15.5 - resolution: "follow-redirects@npm:1.15.5" +"follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: debug: optional: true - checksum: 10c0/418d71688ceaf109dfd6f85f747a0c75de30afe43a294caa211def77f02ef19865b547dfb73fde82b751e1cc507c06c754120b848fe5a7400b0a669766df7615 + checksum: 10c0/9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071 languageName: node linkType: hard @@ -11081,14 +11355,10 @@ __metadata: languageName: node linkType: hard -"intl-tel-input@npm:^19.5.7": - version: 19.5.7 - resolution: "intl-tel-input@npm:19.5.7" - dependencies: - prop-types: "npm:^15.8.1" - react: "npm:^18.2.0" - react-dom: "npm:^18.2.0" - checksum: 10c0/99937f79099456759d1c6493c2b57d8a9e9ec4b8d186599be4ee432b4a8edd14fbb889f8866b6a7e001ef6a5092ee6fce81210592e10dfc061aa4f7bb9c07c33 +"intl-tel-input@npm:^20.0.3": + version: 20.0.3 + resolution: "intl-tel-input@npm:20.0.3" + checksum: 10c0/430315b65cc29becb3ea7cc2a99036ec3dae07d7c4ea1bbdea4823e798842c00bdc45e78bbebb8b555f6a369b5a99a5ca7f4ae64502082b9443aefbf5d897c5a languageName: node linkType: hard @@ -12317,7 +12587,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -14100,7 +14370,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": +"object-assign@npm:^4.0.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 @@ -14256,9 +14526,9 @@ __metadata: languageName: node linkType: hard -"openai@npm:^4.29.0": - version: 4.29.0 - resolution: "openai@npm:4.29.0" +"openai@npm:^4.29.1": + version: 4.29.1 + resolution: "openai@npm:4.29.1" dependencies: "@types/node": "npm:^18.11.18" "@types/node-fetch": "npm:^2.6.4" @@ -14271,7 +14541,7 @@ __metadata: web-streams-polyfill: "npm:^3.2.1" bin: openai: bin/cli - checksum: 10c0/df5a99c7a54f782780446cfb346d18793ded57a54908d839ca49967f85f8803c74ec7473f11426228af2c1df2c0d2325d52fe5590e54b194552593db7c524637 + checksum: 10c0/7873d1c8f69d8a76ca38bd3b0aa10e967ee1a2e705a1a2eb1012dcdd1b689569e041e1bcbeb72e10fc15a43d62c0f99e01de58c8ed454e8c0b54626b58c0794f languageName: node linkType: hard @@ -14918,6 +15188,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.36": + version: 8.4.36 + resolution: "postcss@npm:8.4.36" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.1.0" + checksum: 10c0/e7c834e31d8f4e8dfd0a427df36fdc7bdc58a16e373551618e2c3ac172019eb816b24f1b4709311ebcade8d3ba31b2d75522d28ef45ecbbeb11eb01f265579fb + languageName: node + linkType: hard + "postject@npm:^1.0.0-alpha.6": version: 1.0.0-alpha.6 resolution: "postject@npm:1.0.0-alpha.6" @@ -14996,17 +15277,6 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.8.1": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.13.1" - checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 - languageName: node - linkType: hard - "property-information@npm:^6.0.0": version: 6.4.1 resolution: "property-information@npm:6.4.1" @@ -15206,12 +15476,12 @@ __metadata: languageName: node linkType: hard -"react-hook-form@npm:^7.51.0": - version: 7.51.0 - resolution: "react-hook-form@npm:7.51.0" +"react-hook-form@npm:^7.51.1": + version: 7.51.1 + resolution: "react-hook-form@npm:7.51.1" peerDependencies: react: ^16.8.0 || ^17 || ^18 - checksum: 10c0/929464db00d1bc60bb7de41ab7c05cd2b28afba1d4d4ed10b02288919fb95fa81667e467bc571cbb403bec2bb9116b465211ce9962c3c0120a49dcbf47bfa699 + checksum: 10c0/f0acbf27fc548d3cd0e4db40b84d9dfe6c24209e4421fffbd422da15e32cc98f877ab0af9e06cb1deaf4205ec655b56020ff9f8b2bae6ada5e619890f174c374 languageName: node linkType: hard @@ -15243,13 +15513,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.13.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 - languageName: node - linkType: hard - "react-markdown@npm:^9.0.1": version: 9.0.1 resolution: "react-markdown@npm:9.0.1" @@ -16316,6 +16579,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.1.0": + version: 1.1.0 + resolution: "source-map-js@npm:1.1.0" + checksum: 10c0/d1f016efe4fcf67fd92e36da0670f2889b13a36cc453329758336450e811c61164376eb451b453b4dd4e89a760f841b0a014942d54f240af31a791829bc0e336 + languageName: node + linkType: hard + "source-map-support@npm:^0.5.13": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -16761,12 +17031,12 @@ __metadata: languageName: node linkType: hard -"tailwind-merge@npm:^2.2.1": - version: 2.2.1 - resolution: "tailwind-merge@npm:2.2.1" +"tailwind-merge@npm:^2.2.2": + version: 2.2.2 + resolution: "tailwind-merge@npm:2.2.2" dependencies: - "@babel/runtime": "npm:^7.23.7" - checksum: 10c0/14ab965ec897e9377484b7593f7a700dde09b8035b762ad42652622a3ed1f202b203f48c0f235c0b1b38e9390470d94458f6f9010d33a5a18d71b15f38b986a6 + "@babel/runtime": "npm:^7.24.0" + checksum: 10c0/68a5e199848a467aed4f8d1a8d7b6a5b583ff72f1d2801e018bf245eaa41e6564b63ead9e2b708a214cefbd843970c5e0a21754d5f2a20e2c1238e25955685ce languageName: node linkType: hard