Add struct-patch support and improve config handling

Introduces the struct-patch crate for partial config updates and applies it to configuration models. Refactors config access patterns, adds PartialEq to several types, and updates LiveStreamer to use ConfigPatch for override_cfg. Also updates the CI workflow to use macos-15-intel, improves download task cancellation logic, and upgrades @douyinfe/semi-ui and related dependencies in the frontend.
This commit is contained in:
ForgQi committed 2025-11-20 03:26:40 +08:00
1 parent 4fdd0f81c1
commit 3698bcf28a
17 files changed
+702 -108

No files matched your search

+1 -1
View File
@@ -162,7 +162,7 @@ jobs:
strategy:
matrix:
platform:
- runner: macos-13
- runner: macos-15-intel
target: x86_64
- runner: macos-14
target: aarch64
Generated
+23 -2
View File
@@ -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"
+1 -1
View File
@@ -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"] }
+5 -16
View File
@@ -64,10 +64,7 @@ export default function Home() {
statusTag = <Tag color="green">空闲</Tag>
break
case 'Pending':
statusTag = <Tag color="grey">等待下载</Tag>
break
case 'Inspecting':
statusTag = <Tag color="indigo">检测/上传中</Tag>
statusTag = <Tag color="indigo">检测中</Tag>
break
case 'OutOfSchedule':
statusTag = <Tag color="green">非录播时间</Tag>
@@ -271,18 +268,10 @@ export default function Home() {
>
<Button theme="borderless" icon={<IconDeleteStroked />}></Button>
</Popconfirm>
<span className="semi-button-group-line semi-button-group-line-borderless semi-button-group-line-primary"></span>
<Dropdown render={
<Dropdown.Menu>
<Dropdown.Item>
<OverrideModal onOk={handleUpdate} entity={item}>
<Button theme="borderless" icon={<IconWrench />}></Button>
</OverrideModal>
</Dropdown.Item>
</Dropdown.Menu>
} trigger="click" position="bottomRight">
<Button theme="borderless" type="primary" icon={<IconTreeTriangleDown />}></Button>
</Dropdown>
<span className="semi-button-group-line semi-button-group-line-borderless semi-button-group-line-primary"></span>
<OverrideModal onOk={handleUpdate} entity={item}>
<Button theme="borderless" icon={<IconWrench />}></Button>
</OverrideModal>
</ButtonGroup>
</div>
</Card>
+1
View File
@@ -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 = []
@@ -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(())
}
@@ -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?;
}
+34 -3
View File
@@ -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<String>,
@@ -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正常包裹一层"
);
}
}
@@ -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下载器
+10 -6
View File
@@ -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<dyn DownloadPlugin + Send + Sync>),
/// 删除工作器
Del {
respond_to: oneshot::Sender<()>,
respond_to: oneshot::Sender<Option<Arc<Worker>>>,
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<Arc<Worker>> {
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是否匹配此下载管理器的插件
@@ -52,7 +52,7 @@ pub struct Worker {
/// 上传配置(可选)
pub upload_streamer: Option<UploadStreamer>,
/// 全局配置
pub config: Arc<RwLock<Config>>,
config: Arc<RwLock<Config>>,
/// HTTP客户端
pub client: StatelessClient,
}
@@ -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"}
@@ -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<String>,
/// 覆盖配置("override"为关键字,字段名避让)
#[ormlite(column = "override")]
#[ormlite(column = "override", json)]
#[serde(rename = "override")]
pub override_cfg: Option<Value>,
pub override_cfg: Option<ConfigPatch>,
/// 预处理器列表(JSON格式)
/// 注意:数据库空与json空有区别,所以这里不能用#[ormlite(json)]
@@ -59,16 +60,16 @@ pub struct InsertLiveStreamer {
pub time_range: Option<String>,
pub upload_streamers_id: Option<i64>, // FK,可空
pub format: Option<String>,
#[ormlite(column = "override")]
#[ormlite(column = "override", json)]
// “override” 是字段名,这里改为 override_cfg 避免与保留字混淆
#[serde(rename = "override")]
pub override_cfg: Option<Value>, // "override" 为关键字,字段名避让
pub override_cfg: Option<ConfigPatch>, // "override" 为关键字,字段名避让
// #[ormlite(json)] 数据库空与json空有区别所以这里不能用
// pub preprocessor: Option<Vec<String>>,
// 只能使用 sqlx::types::Json
#[ormlite(json)]
pub preprocessor: Option<Vec<String>>,
pub preprocessor: Option<Vec<HookStep>>,
#[ormlite(json)]
pub segment_processor: Option<Vec<HookStep>>,
#[ormlite(json)]
@@ -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<RwLock<Config>>,
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),
+1 -1
View File
@@ -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,
+605 -58
View File
@@ -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",
+1 -1
View File
@@ -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",