diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d6e9f7..b0fc3c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -162,7 +162,7 @@ jobs: strategy: matrix: platform: - - runner: macos-13 + - runner: macos-15-intel target: x86_64 - runner: macos-14 target: aarch64 diff --git a/Cargo.lock b/Cargo.lock index be01054..a3b6348 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -362,7 +362,7 @@ dependencies = [ [[package]] name = "biliup-cli" -version = "1.1.23" +version = "1.1.24" dependencies = [ "async-channel", "async-trait", @@ -396,6 +396,7 @@ dependencies = [ "serde_urlencoded", "serde_yaml", "sqlx", + "struct-patch", "tempfile", "thiserror 2.0.17", "time", @@ -3644,7 +3645,7 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stream-gears" -version = "1.1.23" +version = "1.1.24" dependencies = [ "async-channel", "async-trait", @@ -3699,6 +3700,26 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "struct-patch" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e986d2cf6e819bd843319120453d837dfdfa31497c3fee4cefa614b2d182d8c" +dependencies = [ + "struct-patch-derive", +] + +[[package]] +name = "struct-patch-derive" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68c6387c1c7b53060605101b63d93edca618c6cf7ce61839f2ec2a527419fdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "structmeta" version = "0.3.0" diff --git a/Cargo.toml b/Cargo.toml index 7dd853d..54ce84b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ members = [ resolver = "3" [workspace.package] -version = "1.1.23" +version = "1.1.24" [workspace.dependencies] serde = { version = "1.0", features = ["derive"] } diff --git a/app/(app)/streamers/page.tsx b/app/(app)/streamers/page.tsx index eacca58..39306dd 100644 --- a/app/(app)/streamers/page.tsx +++ b/app/(app)/streamers/page.tsx @@ -64,10 +64,7 @@ export default function Home() { statusTag = 空闲 break case 'Pending': - statusTag = 等待下载 - break - case 'Inspecting': - statusTag = 检测/上传中 + statusTag = 检测中 break case 'OutOfSchedule': statusTag = 非录播时间 @@ -271,18 +268,10 @@ export default function Home() { > - - - - - - - - - } trigger="click" position="bottomRight"> - - + + + + diff --git a/crates/biliup-cli/Cargo.toml b/crates/biliup-cli/Cargo.toml index a2a78f3..9b2fc5e 100644 --- a/crates/biliup-cli/Cargo.toml +++ b/crates/biliup-cli/Cargo.toml @@ -59,6 +59,7 @@ async-channel = { version = "2.5.0" } nom = "8" tokio-util = "0.7.16" libc = "0.2.174" +struct-patch = "0.10.4" [features] default = [] python-bridge = [] diff --git a/crates/biliup-cli/src/server/common/download.rs b/crates/biliup-cli/src/server/common/download.rs index a588733..4ee1ade 100644 --- a/crates/biliup-cli/src/server/common/download.rs +++ b/crates/biliup-cli/src/server/common/download.rs @@ -116,9 +116,7 @@ impl SegmentEventProcessor { file_validator: FileValidator::new( ctx.worker .clone() - .config - .read() - .unwrap() + .get_config() .filtering_threshold * 1000 * 1000, @@ -217,6 +215,11 @@ impl DownloadTask { .await; info!("initialize_components completed: {url}"); + + if self.token.is_cancelled() { + info!(url = url, "task is cancelled"); + break components; + } ctx = ctx.clone(); // 检查流状态 match plugin.check_stream().await { @@ -244,11 +247,6 @@ impl DownloadTask { } } - if self.token.is_cancelled() { - info!(url = url, "task is cancelled"); - break components; - } - if retry_count >= max_retries { warn!( url = url, @@ -284,8 +282,8 @@ impl DownloadTask { // 清理资源 // 确保状态更新和资源清理 rooms_handle.wake_waker(worker.id()).await; - self.done_notify.notify_one(); info!("Download task completed: {:?}", result); + self.done_notify.notify_one(); Ok(()) } diff --git a/crates/biliup-cli/src/server/common/upload.rs b/crates/biliup-cli/src/server/common/upload.rs index 9e1086b..3112416 100644 --- a/crates/biliup-cli/src/server/common/upload.rs +++ b/crates/biliup-cli/src/server/common/upload.rs @@ -66,7 +66,7 @@ where recorder, ) .await?; - let submit_api = ctx.worker.config.read().unwrap().submit_api.clone(); + let submit_api = ctx.worker.get_config().submit_api.clone(); submit_to_bilibili(&upload_context.bilibili, &studio, submit_api.as_deref()).await?; } diff --git a/crates/biliup-cli/src/server/config.rs b/crates/biliup-cli/src/server/config.rs index d6a3c1f..96eeb12 100644 --- a/crates/biliup-cli/src/server/config.rs +++ b/crates/biliup-cli/src/server/config.rs @@ -5,9 +5,11 @@ use biliup::bilibili::Credit; use error_stack::bail; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, path::Path, path::PathBuf}; +use struct_patch::Patch; /// 全局配置结构体 -#[derive(bon::Builder, Debug, Clone, Serialize, Deserialize)] +#[derive(bon::Builder, Debug, PartialEq, Clone, Serialize, Deserialize, Patch)] +#[patch(attribute(derive(Debug, Clone, Default, Deserialize, Serialize)))] pub struct Config { // ===== 全局录播与上传设置 ===== /// 下载器类型:streamlink | ffmpeg | stream-gears | 自定义 @@ -216,7 +218,7 @@ pub struct Config { } /// 主播配置结构体 -#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)] pub struct StreamerConfig { /// 直播间URL列表 pub url: Vec, @@ -310,7 +312,8 @@ pub struct StreamerConfig { } /// 用户配置结构体 -#[derive(bon::Builder, Debug, Clone, Serialize, Deserialize, Default)] +#[derive(bon::Builder, PartialEq, Debug, Clone, Serialize, Deserialize, Default, Patch)] +#[patch(attribute(derive(Debug, Default, Deserialize)))] pub struct UserConfig { // B站配置 /// B站Cookie字符串 @@ -417,3 +420,31 @@ impl Config { ))) } } + +#[cfg(test)] +mod tests { + use super::*; + + // 情况 1: 字段存在且有字符串值 + #[test] + fn test_field_with_value() { + let json = r#"{"maybe_name": "Alice"}"#; + + let patch = r#"{"maybe_name": "Alice"}"#; + + // Single Option: Some("Alice") + let mut single: Config = serde_json::from_str(json).unwrap(); + + let patch: ConfigPatch = serde_json::from_str(json).unwrap(); + + single.apply(patch); + + assert_eq!( + single, + Config::builder() + .streamers(Default::default()) + .build(), + "普通Option正常包裹一层" + ); + } +} \ No newline at end of file diff --git a/crates/biliup-cli/src/server/core/downloader.rs b/crates/biliup-cli/src/server/core/downloader.rs index 3ed18c5..73c07ed 100644 --- a/crates/biliup-cli/src/server/core/downloader.rs +++ b/crates/biliup-cli/src/server/core/downloader.rs @@ -49,7 +49,7 @@ impl DownloadConfig { /// 下载器类型枚举 /// 定义支持的各种下载器类型 -#[derive(Debug, Clone, Copy, Deserialize, Serialize)] +#[derive(PartialEq, Debug, Clone, Copy, Deserialize, Serialize)] #[serde(rename_all = "kebab-case")] pub enum DownloaderType { /// Ytarchive下载器 diff --git a/crates/biliup-cli/src/server/core/monitor.rs b/crates/biliup-cli/src/server/core/monitor.rs index dbb9ac1..4b97dcb 100644 --- a/crates/biliup-cli/src/server/core/monitor.rs +++ b/crates/biliup-cli/src/server/core/monitor.rs @@ -197,7 +197,9 @@ impl Monitor { // 忽略发送错误。如果发送失败,下面的recv.await也会失败 // 没有必要检查两次失败 let _ = self.sender.send(msg).await; - recv.await.expect("Actor task has been killed") + if let Some(worker) = recv.await.expect("Actor task has been killed") { + worker.change_status(Stage::Download, WorkerStatus::Idle).await; + } } /// 删除指定ID的工作器 @@ -344,7 +346,7 @@ enum ActorMessage { AddPlugin(oneshot::Sender<()>, Arc), /// 删除工作器 Del { - respond_to: oneshot::Sender<()>, + respond_to: oneshot::Sender>>, id: i64, }, /// 查找 @@ -422,8 +424,8 @@ impl RoomsActor { ActorMessage::Del { respond_to, id } => { // `let _ =` 忽略发送时的任何错误 // 如果使用`select!`宏取消等待响应,可能会发生这种情况 - self.del(id); - let _ = respond_to.send(()); + + let _ = respond_to.send(self.del(id).await); } ActorMessage::WakeWaker(sender, id) => { // `let _ =` 忽略发送时的任何错误 @@ -555,7 +557,7 @@ impl RoomsActor { } /// 删除指定ID的工作器 - fn del(&mut self, id: i64) -> Option<()> { + async fn del(&mut self, id: i64) -> Option> { let worker = self.get_worker(id)?; let plugin = self.matches(&worker.live_streamer.url)?; let platform_name = plugin.name(); @@ -568,7 +570,9 @@ impl RoomsActor { // 从 all_workers 中删除 self.all_workers.retain(|w| w.id() != id); - Some(()) + + debug!("del worker size[{}]", self.all_workers.len()); + Some(worker) } /// 检查URL是否匹配此下载管理器的插件 diff --git a/crates/biliup-cli/src/server/infrastructure/context.rs b/crates/biliup-cli/src/server/infrastructure/context.rs index 6508d54..f8fa9d7 100644 --- a/crates/biliup-cli/src/server/infrastructure/context.rs +++ b/crates/biliup-cli/src/server/infrastructure/context.rs @@ -52,7 +52,7 @@ pub struct Worker { /// 上传配置(可选) pub upload_streamer: Option, /// 全局配置 - pub config: Arc>, + config: Arc>, /// HTTP客户端 pub client: StatelessClient, } diff --git a/crates/biliup-cli/src/server/infrastructure/models/hook_step.rs b/crates/biliup-cli/src/server/infrastructure/models/hook_step.rs index 5cdc77a..f58e4ef 100644 --- a/crates/biliup-cli/src/server/infrastructure/models/hook_step.rs +++ b/crates/biliup-cli/src/server/infrastructure/models/hook_step.rs @@ -10,7 +10,7 @@ use tracing::{error, info}; /// 钩子步骤枚举:支持多种操作格式 /// 既支持 key-value 形式(如 {run: "..."}),也支持纯字符串(如 "rm") -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum HookStep { /// 执行命令格式:{run: "command"} diff --git a/crates/biliup-cli/src/server/infrastructure/models/live_streamer.rs b/crates/biliup-cli/src/server/infrastructure/models/live_streamer.rs index 824d712..fe7f881 100644 --- a/crates/biliup-cli/src/server/infrastructure/models/live_streamer.rs +++ b/crates/biliup-cli/src/server/infrastructure/models/live_streamer.rs @@ -2,6 +2,7 @@ use crate::server::infrastructure::models::hook_step::HookStep; use ormlite::{Insert, Model}; use serde::{Deserialize, Serialize}; use serde_json::Value; +use crate::server::config::{Config, ConfigPatch}; /// 直播主播模型 /// 存储直播主播的配置信息和录制参数 @@ -24,9 +25,9 @@ pub struct LiveStreamer { /// 录制格式 pub format: Option, /// 覆盖配置("override"为关键字,字段名避让) - #[ormlite(column = "override")] + #[ormlite(column = "override", json)] #[serde(rename = "override")] - pub override_cfg: Option, + pub override_cfg: Option, /// 预处理器列表(JSON格式) /// 注意:数据库空与json空有区别,所以这里不能用#[ormlite(json)] @@ -59,16 +60,16 @@ pub struct InsertLiveStreamer { pub time_range: Option, pub upload_streamers_id: Option, // FK,可空 pub format: Option, - #[ormlite(column = "override")] + #[ormlite(column = "override", json)] // “override” 是字段名,这里改为 override_cfg 避免与保留字混淆 #[serde(rename = "override")] - pub override_cfg: Option, // "override" 为关键字,字段名避让 + pub override_cfg: Option, // "override" 为关键字,字段名避让 // #[ormlite(json)] 数据库空与json空有区别所以这里不能用 // pub preprocessor: Option>, // 只能使用 sqlx::types::Json #[ormlite(json)] - pub preprocessor: Option>, + pub preprocessor: Option>, #[ormlite(json)] pub segment_processor: Option>, #[ormlite(json)] diff --git a/crates/biliup-cli/src/server/infrastructure/service_register.rs b/crates/biliup-cli/src/server/infrastructure/service_register.rs index be18699..1202469 100644 --- a/crates/biliup-cli/src/server/infrastructure/service_register.rs +++ b/crates/biliup-cli/src/server/infrastructure/service_register.rs @@ -8,6 +8,8 @@ use crate::server::infrastructure::models::upload_streamer::UploadStreamer; use axum::extract::FromRef; use biliup::client::StatelessClient; use std::sync::{Arc, RwLock}; +use error_stack::fmt::ColorMode; +use error_stack::Report; use tracing::info; /// 服务注册器 @@ -38,6 +40,7 @@ impl ServiceRegister { config: Arc>, download_manager: DownloadManager, ) -> Self { + Report::set_color_mode(ColorMode::None); info!("initializing utility services..."); // 创建默认的HTTP客户端 let client = StatelessClient::default(); @@ -48,7 +51,6 @@ impl ServiceRegister { download_manager.add_plugin(Arc::new(YY::new())); info!("feature services successfully initialized!"); - ServiceRegister { pool, managers: Arc::new(download_manager), diff --git a/crates/biliup/src/uploader/bilibili.rs b/crates/biliup/src/uploader/bilibili.rs index ca4793c..3fe7b0a 100644 --- a/crates/biliup/src/uploader/bilibili.rs +++ b/crates/biliup/src/uploader/bilibili.rs @@ -178,7 +178,7 @@ pub struct Subtitle { lan: String, } -#[derive(Deserialize, Serialize, Debug, Clone)] +#[derive(PartialEq, Deserialize, Serialize, Debug, Clone)] pub struct Credit { #[serde(rename(deserialize = "type_id", serialize = "type"))] pub type_id: i8, diff --git a/package-lock.json b/package-lock.json index 1bcd4dc..82d3710 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "my-app", "version": "0.1.0", "dependencies": { - "@douyinfe/semi-ui": "^2.86.0", + "@douyinfe/semi-ui": "^2.88.2", "artplayer": "^5.2.1", "mpegts.js": "^1.8.0", "next": "^14.2.26", @@ -97,39 +97,39 @@ } }, "node_modules/@douyinfe/semi-animation": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-animation/-/semi-animation-2.86.0.tgz", - "integrity": "sha512-+MerLT6TJnJSbTnKQ5Za1HwxiM7snhfMdg2IX/0KXxwFYhkHsnkj07krZBNKMKWDJpfG2qkb9z7KD/NQH7KL6w==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-animation/-/semi-animation-2.88.2.tgz", + "integrity": "sha512-JzSY8QXEXDHzH2W4HFLO7xG/hFPE5hCagDUcWtcIl7Z9e8xacr7yJsOWVqD/cYYhswzUtfN0F8Y5qMncD8DczA==", "license": "MIT", "dependencies": { "bezier-easing": "^2.1.0" } }, "node_modules/@douyinfe/semi-animation-react": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-animation-react/-/semi-animation-react-2.86.0.tgz", - "integrity": "sha512-nThSOLD6iU8gyNALDYAsbXgcmM9eAJe7F1Sb5zvOi56cA4M52Wk50AuS9InAbGTJjzxNY7FkBu1KMepxXDHEIg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-animation-react/-/semi-animation-react-2.88.2.tgz", + "integrity": "sha512-WA1MwGeNVo+Gc5Xd3BhHFk1TXJOEsANhn9iW+KUR3d4rMHE2hlGfU0w7wBT4ghdJ96E00WLwCa4irKwqi/h8mA==", "license": "MIT", "dependencies": { - "@douyinfe/semi-animation": "2.86.0", - "@douyinfe/semi-animation-styled": "2.86.0", + "@douyinfe/semi-animation": "2.88.2", + "@douyinfe/semi-animation-styled": "2.88.2", "classnames": "^2.2.6" } }, "node_modules/@douyinfe/semi-animation-styled": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.86.0.tgz", - "integrity": "sha512-5x5WA8i1vuwb7rygScWmqxwgNggvpGd0rtDwAqBX8l5KoDSml2ikmR015w+SaoOD/UGwJB44IJ02UYYcxZw9kg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.88.2.tgz", + "integrity": "sha512-H9d28qe9Wr9LGnZKYG5mpK21GIgxAe9YwnahK5tcD7NhcM8P86VF/e4vBf90aPXPUBefRdmmE5Etr35pzjoArA==", "license": "MIT" }, "node_modules/@douyinfe/semi-foundation": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-foundation/-/semi-foundation-2.86.0.tgz", - "integrity": "sha512-IX6Vzcen16u+Z1fbYPCAnZIqxfnAk7kI9CBJ9u6rZM8LIEP/HMYSEdMmCg8Cigw4GiSbjdlDfy6miy5tXWJmAQ==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-foundation/-/semi-foundation-2.88.2.tgz", + "integrity": "sha512-cz/cx+KudZwBgnmZtkOQlzt/BPb3bnjZUMeqAdWcp7yZQ/fqnqtd2NCYI5cs+MNZR2aWwGNGFtP6FO9znrHmIA==", "license": "MIT", "dependencies": { - "@douyinfe/semi-animation": "2.86.0", - "@douyinfe/semi-json-viewer-core": "2.86.0", + "@douyinfe/semi-animation": "2.88.2", + "@douyinfe/semi-json-viewer-core": "2.88.2", "@mdx-js/mdx": "^3.0.1", "async-validator": "^3.5.0", "classnames": "^2.2.6", @@ -145,9 +145,9 @@ } }, "node_modules/@douyinfe/semi-icons": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-icons/-/semi-icons-2.86.0.tgz", - "integrity": "sha512-KEDlYYP1wdOqN28Ck0YcdCx7mSks8SRY4w4KKbXPaROzYNEyT2BRcJxwysMHfxL2IDfsroHrRPJsX9pnrmQqTg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-icons/-/semi-icons-2.88.2.tgz", + "integrity": "sha512-pORwLHLv+tE0DAnQ+OSlqAzD2/w9DXvqRfGsVgosSDlAdiu4Bn0Ak2IT9DEN8CF7jxcHgO2cTX81/wpNsQ6MCg==", "license": "MIT", "dependencies": { "classnames": "^2.2.6" @@ -157,44 +157,53 @@ } }, "node_modules/@douyinfe/semi-illustrations": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-illustrations/-/semi-illustrations-2.86.0.tgz", - "integrity": "sha512-ZRgtgPor1X9lZP/8IOT4xZOmio+tWBUb9Sb2MAjTj52ZtJB6u4jz34y4TnoqRjoGRYWwNvOQmNjBk9NiHoAYkg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-illustrations/-/semi-illustrations-2.88.2.tgz", + "integrity": "sha512-7b4FabG8nYWHOnvwxsDOpGxtCgc07XgXen8oeGMQJSI03St8Yu8ai+wazEkOHOA9gm2u39XmkBTCzE6W4IMtlA==", "license": "MIT", "peerDependencies": { "react": ">=16.0.0" } }, "node_modules/@douyinfe/semi-json-viewer-core": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-json-viewer-core/-/semi-json-viewer-core-2.86.0.tgz", - "integrity": "sha512-Xk8CkQ/VKACUZfLg9D5vds9vy2WvWzI5ezioBNKRF5GPnonYeL6vwFz0rpzSL4dKdS17Ndg5KexWV4g9mExgLg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-json-viewer-core/-/semi-json-viewer-core-2.88.2.tgz", + "integrity": "sha512-2CosdM4F5DFfgXrU9g2FNoqGl6oxJpM9UtO5j5EQRDFhlWirDE63YqADmVDPFeKLRmQBmahbIcTeP0yESgkgxQ==", "license": "MIT", "dependencies": { "jsonc-parser": "^3.3.1" } }, "node_modules/@douyinfe/semi-theme-default": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-theme-default/-/semi-theme-default-2.86.0.tgz", - "integrity": "sha512-l1zVriNXVxBribjTL7hGyiHrymum3UOPpiurWZdleK7oKWPVtkWdDh+cdVkDS/QynEY7P+m0zFCye1GbjNPkNg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-theme-default/-/semi-theme-default-2.88.2.tgz", + "integrity": "sha512-rOLwSDi5CNXa6MQ5GabHSBoAFFaGZipha/QIy1umqlF21ahw5IJyLCj7e0+TP1MyzcFsqeEjImALbR/cNRWjow==", "license": "MIT" }, "node_modules/@douyinfe/semi-ui": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/@douyinfe/semi-ui/-/semi-ui-2.86.0.tgz", - "integrity": "sha512-UAwM3+qO25Zkvy3a+7Jk8xBt5/103eP/t9x2pqvRITLeP2XqIikXruXV3bSLO1HDlCt9VyORqxC9UEYFOutk5Q==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/@douyinfe/semi-ui/-/semi-ui-2.88.2.tgz", + "integrity": "sha512-g9hY5busQ0PIxX4rAarbkMrAMIdMgVXqP81t1ALAeApRpjMIiZFj2k+ZDdM4CFT3RGec9WoP4RiGOj8fc+n8zg==", "license": "MIT", "dependencies": { "@dnd-kit/core": "^6.0.8", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", - "@douyinfe/semi-animation": "2.86.0", - "@douyinfe/semi-animation-react": "2.86.0", - "@douyinfe/semi-foundation": "2.86.0", - "@douyinfe/semi-icons": "2.86.0", - "@douyinfe/semi-illustrations": "2.86.0", - "@douyinfe/semi-theme-default": "2.86.0", + "@douyinfe/semi-animation": "2.88.2", + "@douyinfe/semi-animation-react": "2.88.2", + "@douyinfe/semi-foundation": "2.88.2", + "@douyinfe/semi-icons": "2.88.2", + "@douyinfe/semi-illustrations": "2.88.2", + "@douyinfe/semi-theme-default": "2.88.2", + "@tiptap/core": "^3.1.0", + "@tiptap/extension-document": "^3.3.0", + "@tiptap/extension-hard-break": "^3.3.0", + "@tiptap/extension-mention": "^3.1.0", + "@tiptap/extension-paragraph": "^3.3.0", + "@tiptap/extension-text": "^3.3.0", + "@tiptap/extensions": "^3.1.0", + "@tiptap/pm": "^3.1.0", + "@tiptap/react": "^3.1.0", "async-validator": "^3.5.0", "classnames": "^2.2.6", "copy-text-to-clipboard": "^2.1.1", @@ -204,6 +213,7 @@ "jsonc-parser": "^3.3.1", "lodash": "^4.17.21", "prop-types": "^15.7.2", + "prosemirror-state": "^1.4.3", "react-resizable": "^3.0.5", "react-window": "^1.8.2", "scroll-into-view-if-needed": "^2.2.24", @@ -341,6 +351,34 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "optional": true, + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT", + "optional": true + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -708,6 +746,12 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@remirror/core-constants": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", + "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", + "license": "MIT" + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -738,6 +782,206 @@ "tslib": "^2.4.0" } }, + "node_modules/@tiptap/core": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.11.0.tgz", + "integrity": "sha512-kmS7ZVpHm1EMnW1Wmft9H5ZLM7E0G0NGBx+aGEHGDcNxZBXD2ZUa76CuWjIhOGpwsPbELp684ZdpF2JWoNi4Dg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^3.11.0" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.11.0.tgz", + "integrity": "sha512-P3j9lQ+EZ5Zg/isJzLpCPX7bp7WUBmz8GPs/HPlyMyN2su8LqXntITBZr8IP1JNBlB/wR83k/W0XqdC57mG7cA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0", + "@tiptap/pm": "^3.11.0" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.11.0.tgz", + "integrity": "sha512-N2G3cwL2Dtur/CgD/byJmFx9T5no6fTO/U462VP3rthQYrRA1AB3TCYqtlwJkmyoxRTNd4qIg4imaPl8ej6Heg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.11.0.tgz", + "integrity": "sha512-nEHdWZHEJYX1II1oJQ4aeZ8O/Kss4BRbYFXQFGIvPelCfCYEATpUJh3aq3767ARSq40bOWyu+Dcd4SCW0We6Sw==", + "license": "MIT", + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@floating-ui/dom": "^1.0.0", + "@tiptap/core": "^3.11.0", + "@tiptap/pm": "^3.11.0" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.11.0.tgz", + "integrity": "sha512-NJEHTj++kFOayQXKSQSi9j9eAG33eSiJqai2pf4U+snW94fmb8cYLUurDmfYRe20O6EzBSX0X3GjVlkOz+5b7A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0" + } + }, + "node_modules/@tiptap/extension-mention": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-mention/-/extension-mention-3.11.0.tgz", + "integrity": "sha512-4y789hKNEvZoNals7PNSGAKThQ+b5nuP/KIEe4wPIfzknjwxzGi0f2YY3L/f+gIhueoZymYpkmhtiRND+wvAWA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0", + "@tiptap/pm": "^3.11.0", + "@tiptap/suggestion": "^3.11.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.11.0.tgz", + "integrity": "sha512-hxgjZOXOqstRTWv+QjWJjK23rD5qzIV9ePlhX3imLeq/MgX0aU9VBDaG5SGKbSjaBNQnpLw6+sABJi3CDP6Z5A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.11.0.tgz", + "integrity": "sha512-ELAYm2BuChzZOqDG9B0k3W6zqM4pwNvXkam28KgHGiT2y7Ni68Rb+NXp16uVR+5zR6hkqnQ/BmJSKzAW59MXpA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0" + } + }, + "node_modules/@tiptap/extensions": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.11.0.tgz", + "integrity": "sha512-g43beA73ZMLezez1st9LEwYrRHZ0FLzlsSlOZKk7sdmtHLmuqWHf4oyb0XAHol1HZIdGv104rYaGNgmQXr1ecQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0", + "@tiptap/pm": "^3.11.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.11.0.tgz", + "integrity": "sha512-plCQDLCZIOc92cizB8NNhBRN0szvYR3cx9i5IXo6v9Xsgcun8KHNcJkesc2AyeqdIs0BtOJZaqQ9adHThz8UDw==", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.3.0", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.24.1", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.5.0", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.38.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/react": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-3.11.0.tgz", + "integrity": "sha512-SDGei/2DjwmhzsxIQNr6dkB6NxLgXZjQ6hF36NfDm4937r5NLrWrNk5tCsoDQiKZ0DHEzuJ6yZM5C7I7LZLB6w==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "fast-deep-equal": "^3.1.3", + "use-sync-external-store": "^1.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "optionalDependencies": { + "@tiptap/extension-bubble-menu": "^3.11.0", + "@tiptap/extension-floating-menu": "^3.11.0" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0", + "@tiptap/pm": "^3.11.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "@types/react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tiptap/suggestion": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.11.0.tgz", + "integrity": "sha512-4zGU3l1rZ7P112en3HiMXZuKCcZSXdwtdSIfQQV94jNyumg/imYFeYARVsabfv6hFjtEuwbq0ev8y13Bl+1Quw==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^3.11.0", + "@tiptap/pm": "^3.11.0" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -791,12 +1035,28 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, "node_modules/@types/lodash": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", "license": "MIT" }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -806,6 +1066,12 @@ "@types/unist": "*" } }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", @@ -848,7 +1114,6 @@ "version": "18.3.5", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", - "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^18.0.0" @@ -860,6 +1125,12 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.19.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz", @@ -1166,7 +1437,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/aria-query": { @@ -1740,6 +2010,12 @@ "toggle-selection": "^1.0.6" } }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2036,6 +2312,18 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-stack-parser": { "version": "2.1.4", "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz", @@ -2255,7 +2543,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3360,9 +3647,9 @@ } }, "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", "license": "MIT" }, "node_modules/inline-style-prefixer": { @@ -3998,6 +4285,15 @@ "node": ">= 0.8.0" } }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4073,6 +4369,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -4398,6 +4711,12 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "license": "CC0-1.0" }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, "node_modules/memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", @@ -5445,6 +5764,12 @@ "node": ">= 0.8.0" } }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "license": "MIT" + }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -5657,6 +5982,201 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/prosemirror-changeset": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.3.1.tgz", + "integrity": "sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==", + "license": "MIT", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", + "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", + "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.0.tgz", + "integrity": "sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.5.0.tgz", + "integrity": "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", + "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", + "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz", + "integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==", + "license": "MIT", + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz", + "integrity": "sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==", + "license": "MIT", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.25.4", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", + "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", + "license": "MIT", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", + "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", + "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.1.tgz", + "integrity": "sha512-DAgDoUYHCcc6tOGpLVPSU1k84kCUWTWnfWX3UDy2Delv4ryH0KqTD6RBI6k4yi9j9I8gl3j8MkPpRD/vWPZbug==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.2.2", + "prosemirror-model": "^1.25.0", + "prosemirror-state": "^1.4.3", + "prosemirror-transform": "^1.10.3", + "prosemirror-view": "^1.39.1" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", + "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.5.tgz", + "integrity": "sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.41.3", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.3.tgz", + "integrity": "sha512-SqMiYMUQNNBP9kfPhLO8WXEk/fon47vc52FQsUiJzTBuyjKgEcoAwMyF04eQ4WZ2ArMn7+ReypYL60aKngbACQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -5667,6 +6187,15 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qrcode.react": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.2.0.tgz", @@ -6115,6 +6644,12 @@ "node": ">=0.10.0" } }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" + }, "node_modules/rtl-css-js": { "version": "1.16.1", "resolved": "https://registry.npmmirror.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz", @@ -6657,21 +7192,21 @@ } }, "node_modules/style-to-js": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz", - "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", "license": "MIT", "dependencies": { - "style-to-object": "1.0.9" + "style-to-object": "1.0.14" } }, "node_modules/style-to-object": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", - "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", "license": "MIT", "dependencies": { - "inline-style-parser": "0.2.4" + "inline-style-parser": "0.2.7" } }, "node_modules/styled-jsx": { @@ -6943,6 +7478,12 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -6989,9 +7530,9 @@ } }, "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" @@ -7056,9 +7597,9 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -7125,6 +7666,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, "node_modules/webworkify-webpack": { "version": "2.1.5", "resolved": "git+ssh://git@github.com/xqq/webworkify-webpack.git#24d1e719b4a6cac37a518b2bb10fe124527ef4ef", diff --git a/package.json b/package.json index d801818..29f4eee 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "@douyinfe/semi-ui": "^2.86.0", + "@douyinfe/semi-ui": "^2.88.2", "artplayer": "^5.2.1", "mpegts.js": "^1.8.0", "next": "^14.2.26",