diff --git a/.vscode/settings.json b/.vscode/settings.json index 70811cda..e8d2d886 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -45,7 +45,7 @@ "*.rs": "${capture}.excalidraw" }, "excalidraw.theme": "dark", - "deno.enable": true, + "deno.enable": false , "cortex-debug.variableUseNaturalFormat": true, "[markdown]": { "editor.defaultFormatter": "darkriszty.markdown-table-prettify" diff --git a/crates/loro-internal/fuzz/Cargo.lock b/crates/loro-internal/fuzz/Cargo.lock index 0a906224..6ee9806c 100644 --- a/crates/loro-internal/fuzz/Cargo.lock +++ b/crates/loro-internal/fuzz/Cargo.lock @@ -339,16 +339,6 @@ dependencies = [ "libc", ] -[[package]] -name = "jumprope" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829c74fe88dda0d2a5425b022b44921574a65c4eb78e6e39a61b40eb416a4ef8" -dependencies = [ - "rand", - "str_indices", -] - [[package]] name = "libc" version = "0.2.147" @@ -406,7 +396,6 @@ dependencies = [ "getrandom", "im", "itertools", - "jumprope", "loro-common", "loro-preload", "miniz_oxide", @@ -873,12 +862,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "str_indices" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f026164926842ec52deb1938fae44f83dfdb82d0a5b0270c5bd5935ab74d6dd" - [[package]] name = "string_cache" version = "0.8.7" diff --git a/crates/loro-internal/fuzz/fuzz_targets/text_refactored.rs b/crates/loro-internal/fuzz/fuzz_targets/text_refactored.rs index 3b258150..f6714169 100644 --- a/crates/loro-internal/fuzz/fuzz_targets/text_refactored.rs +++ b/crates/loro-internal/fuzz/fuzz_targets/text_refactored.rs @@ -1,5 +1,5 @@ #![no_main] use libfuzzer_sys::fuzz_target; -use loro_internal::fuzz::{test_multi_sites_refactored, Action}; +use loro_internal::fuzz::{test_multi_sites, Action}; -fuzz_target!(|actions: Vec| { test_multi_sites_refactored(5, &mut actions.clone()) }); +fuzz_target!(|actions: Vec| { test_multi_sites(5, &mut actions.clone()) }); diff --git a/crates/loro-internal/src/container/richtext/style_range_map.rs b/crates/loro-internal/src/container/richtext/style_range_map.rs index 4783866e..842bfb10 100644 --- a/crates/loro-internal/src/container/richtext/style_range_map.rs +++ b/crates/loro-internal/src/container/richtext/style_range_map.rs @@ -81,7 +81,6 @@ impl StyleRangeMap { } pub fn annotate(&mut self, range: Range, style: Arc) { - debug_log::debug_log!("Annotate {:?}", &range); let range = self.tree.range::(range); if range.is_none() { unreachable!(); @@ -89,7 +88,6 @@ impl StyleRangeMap { self.has_style = true; let range = range.unwrap(); - debug_log::debug_log!("Range={:?}", &range); self.tree .update(range.start.cursor..range.end.cursor, &mut |x| { if let Some(set) = x.styles.get_mut(&style.get_style_key()) { @@ -163,8 +161,8 @@ impl StyleRangeMap { false }); - self.tree.insert_by_path(right, Elem { len, styles }); - return &self.tree.get_elem(right.leaf).unwrap().styles; + let (target, _) = self.tree.insert_by_path(right, Elem { len, styles }); + return &self.tree.get_elem(target.leaf).unwrap().styles; } /// Return the style sets beside `index` and get the intersection of them. diff --git a/crates/loro-internal/src/container/richtext/tracker.rs b/crates/loro-internal/src/container/richtext/tracker.rs index 5fbe29bf..cc5fb76a 100644 --- a/crates/loro-internal/src/container/richtext/tracker.rs +++ b/crates/loro-internal/src/container/richtext/tracker.rs @@ -76,7 +76,7 @@ impl Tracker { return; } - debug_log::group!("before insert {} pos={}", op_id, pos); + // debug_log::group!("before insert {} pos={}", op_id, pos); // debug_log::debug_dbg!(&self); let result = self.rope.insert( pos, @@ -101,13 +101,13 @@ impl Tracker { self.current_vv.extend_to_include_end_id(end_id); self.applied_vv.extend_to_include_end_id(end_id); // debug_log::debug_dbg!(&self); - debug_log::group_end!(); + // debug_log::group_end!(); } fn update_insert_by_split(&mut self, split: &[LeafIndex]) { for &new_leaf_idx in split { let leaf = self.rope.tree().get_elem(new_leaf_idx).unwrap(); - debug_log::debug_dbg!(&leaf.id_span(), new_leaf_idx); + // debug_log::debug_dbg!(&leaf.id_span(), new_leaf_idx); self.id_to_cursor .update_insert(leaf.id_span(), new_leaf_idx) } @@ -229,7 +229,6 @@ impl Tracker { self._checkout(to, true); // debug_log::debug_dbg!(from, to, &self); // self.id_to_cursor.diagnose(); - debug_log::debug_dbg!(&self); self.rope.get_diff() } } diff --git a/crates/loro-internal/src/container/richtext/tracker/crdt_rope.rs b/crates/loro-internal/src/container/richtext/tracker/crdt_rope.rs index 84999891..d9ca2567 100644 --- a/crates/loro-internal/src/container/richtext/tracker/crdt_rope.rs +++ b/crates/loro-internal/src/container/richtext/tracker/crdt_rope.rs @@ -242,7 +242,7 @@ impl CrdtRope { let start = start.cursor; let elem = self.tree.get_elem_mut(start.leaf).unwrap(); if elem.rle_len() >= start.offset + len { - debug_log::debug_log!("len={} offset={} l={} ", elem.rle_len(), start.offset, len,); + // debug_log::debug_log!("len={} offset={} l={} ", elem.rle_len(), start.offset, len,); let (_, splitted) = self.tree.update_leaf(start.leaf, |elem| { let (a, b) = elem.update_with_split(start.offset..start.offset + len, |elem| { assert!(elem.is_activated()); @@ -254,7 +254,7 @@ impl CrdtRope { (true, a, b) }); - debug_log::debug_dbg!(&splitted); + // debug_log::debug_dbg!(&splitted); return splitted; } diff --git a/crates/loro-internal/src/container/richtext/tracker/id_to_cursor.rs b/crates/loro-internal/src/container/richtext/tracker/id_to_cursor.rs index 66b499dd..610e1874 100644 --- a/crates/loro-internal/src/container/richtext/tracker/id_to_cursor.rs +++ b/crates/loro-internal/src/container/richtext/tracker/id_to_cursor.rs @@ -331,7 +331,6 @@ impl Cursor { } _ => unreachable!(), } - debug_log::debug_dbg!(&self); } fn get_insert(&self, pos: usize) -> Option { diff --git a/crates/loro-internal/src/delta/seq.rs b/crates/loro-internal/src/delta/seq.rs index 1ba5031f..35aa0a08 100644 --- a/crates/loro-internal/src/delta/seq.rs +++ b/crates/loro-internal/src/delta/seq.rs @@ -18,9 +18,9 @@ impl Serialize for Delta { #[derive(Debug, EnumAsInner, Clone, PartialEq, Eq, Serialize)] pub enum DeltaItem { - Retain { len: usize, meta: Meta }, - Insert { value: Value, meta: Meta }, - Delete { len: usize, meta: Meta }, + Retain { retain: usize, attributes: Meta }, + Insert { insert: Value, attributes: Meta }, + Delete { delete: usize, attributes: Meta }, } #[derive(PartialEq, Eq)] @@ -87,9 +87,18 @@ impl DeltaValue for DeltaItem { fn length(&self) -> usize { match self { - DeltaItem::Retain { len, meta: _ } => *len, - DeltaItem::Insert { value, meta: _ } => value.length(), - DeltaItem::Delete { len, meta: _ } => *len, + DeltaItem::Retain { + retain: len, + attributes: _, + } => *len, + DeltaItem::Insert { + insert: value, + attributes: _, + } => value.length(), + DeltaItem::Delete { + delete: len, + attributes: _, + } => *len, } } } @@ -97,25 +106,42 @@ impl DeltaValue for DeltaItem { impl DeltaItem { pub fn meta(&self) -> &M { match self { - DeltaItem::Insert { meta, .. } => meta, - DeltaItem::Retain { meta, .. } => meta, - DeltaItem::Delete { len: _, meta } => meta, + DeltaItem::Insert { + attributes: meta, .. + } => meta, + DeltaItem::Retain { + attributes: meta, .. + } => meta, + DeltaItem::Delete { + delete: _, + attributes: meta, + } => meta, } } pub fn meta_mut(&mut self) -> &mut M { match self { - DeltaItem::Insert { meta, .. } => meta, - DeltaItem::Retain { meta, .. } => meta, - DeltaItem::Delete { len: _, meta } => meta, + DeltaItem::Insert { + attributes: meta, .. + } => meta, + DeltaItem::Retain { + attributes: meta, .. + } => meta, + DeltaItem::Delete { + delete: _, + attributes: meta, + } => meta, } } pub fn set_meta(&mut self, meta: M) { match self { - DeltaItem::Insert { meta: m, .. } => *m = meta, - DeltaItem::Retain { meta: m, .. } => *m = meta, - DeltaItem::Delete { len: _, meta: m } => *m = meta, + DeltaItem::Insert { attributes: m, .. } => *m = meta, + DeltaItem::Retain { attributes: m, .. } => *m = meta, + DeltaItem::Delete { + delete: _, + attributes: m, + } => *m = meta, } } @@ -138,26 +164,35 @@ impl DeltaItem { // and return the taken one. pub(crate) fn take(&mut self, length: usize) -> Self { match self { - DeltaItem::Insert { value, meta } => { + DeltaItem::Insert { + insert: value, + attributes: meta, + } => { let v = value.take(length); Self::Insert { - value: v, - meta: meta.clone(), + insert: v, + attributes: meta.clone(), } } - DeltaItem::Retain { len, meta } => { + DeltaItem::Retain { + retain: len, + attributes: meta, + } => { *len -= length; Self::Retain { - len: length, - meta: meta.clone(), + retain: length, + attributes: meta.clone(), } } - DeltaItem::Delete { len, meta: _ } => { + DeltaItem::Delete { + delete: len, + attributes: _, + } => { *len -= length; Self::Delete { - len: length, + delete: length, // meta may store utf16 length, this take will invalidate it - meta: M::empty(), + attributes: M::empty(), } } } @@ -165,25 +200,34 @@ impl DeltaItem { pub(crate) fn take_with_meta_ref(&mut self, length: usize, other_meta: &Self) -> Self { match self { - DeltaItem::Insert { value, meta } => { + DeltaItem::Insert { + insert: value, + attributes: meta, + } => { let v = value.take(length); Self::Insert { - value: v, - meta: meta.take(other_meta.meta()), + insert: v, + attributes: meta.take(other_meta.meta()), } } - DeltaItem::Retain { len, meta } => { + DeltaItem::Retain { + retain: len, + attributes: meta, + } => { *len -= length; Self::Retain { - len: length, - meta: meta.take(other_meta.meta()), + retain: length, + attributes: meta.take(other_meta.meta()), } } - DeltaItem::Delete { len, meta } => { + DeltaItem::Delete { + delete: len, + attributes: meta, + } => { *len -= length; Self::Delete { - len: length, - meta: meta.take(other_meta.meta()), + delete: length, + attributes: meta.take(other_meta.meta()), } } } @@ -191,7 +235,7 @@ impl DeltaItem { fn insert_inner(self) -> Value { match self { - DeltaItem::Insert { value, .. } => value, + DeltaItem::Insert { insert: value, .. } => value, _ => unreachable!(), } } @@ -229,8 +273,8 @@ impl DeltaIterator { let next_op = self.peek_mut(); if next_op.is_none() { return DeltaItem::Retain { - len: usize::MAX, - meta: M::empty(), + retain: usize::MAX, + attributes: M::empty(), }; } let op = next_op.unwrap(); @@ -247,8 +291,8 @@ impl DeltaIterator { let next_op = self.peek_mut(); if next_op.is_none() { return DeltaItem::Retain { - len: other.length(), - meta: other.meta().clone(), + retain: other.length(), + attributes: other.meta().clone(), }; } let op = next_op.unwrap(); @@ -344,20 +388,26 @@ impl Delta { return self; } - self.push(DeltaItem::Retain { len, meta }); + self.push(DeltaItem::Retain { + retain: len, + attributes: meta, + }); self } pub fn insert_with_meta>(mut self, value: V, meta: M) -> Self { self.push(DeltaItem::Insert { - value: value.into(), - meta, + insert: value.into(), + attributes: meta, }); self } pub fn delete_with_meta(mut self, len: usize, meta: M) -> Self { - self.push(DeltaItem::Delete { len, meta }); + self.push(DeltaItem::Delete { + delete: len, + attributes: meta, + }); self } @@ -366,8 +416,8 @@ impl Delta { return self; } self.push(DeltaItem::Delete { - len, - meta: M::empty(), + delete: len, + attributes: M::empty(), }); self } @@ -378,16 +428,16 @@ impl Delta { } self.push(DeltaItem::Retain { - len, - meta: M::empty(), + retain: len, + attributes: M::empty(), }); self } pub fn insert>(mut self, value: V) -> Self { self.push(DeltaItem::Insert { - value: value.into(), - meta: M::empty(), + insert: value.into(), + attributes: M::empty(), }); self } @@ -427,8 +477,13 @@ impl Delta { } Err(inner) => { self.vec.insert(index - 1, last_op); - self.vec - .insert(index, DeltaItem::Insert { value: inner, meta }); + self.vec.insert( + index, + DeltaItem::Insert { + insert: inner, + attributes: meta, + }, + ); return false; } } @@ -476,6 +531,7 @@ impl Delta { /// Reference: [Quill Delta](https://github.com/quilljs/delta) // TODO: PERF use &mut self and &other pub fn compose(self, other: Delta) -> Delta { + // debug_log::debug_dbg!(&self, &other); let mut this_iter = self.into_op_iter(); let mut other_iter = other.into_op_iter(); let mut ops = vec![]; @@ -526,12 +582,12 @@ impl Delta { if concat_rest { let vec = this_iter.rest(); if vec.is_empty() { - debug_log::debug_dbg!(&delta); - return delta.chop(); + break; } + let rest = Delta { vec }; - debug_log::debug_dbg!(&delta, &rest); - return delta.concat(rest).chop(); + delta = delta.concat(rest); + break; } } else if other_op.is_delete() && this_op.is_retain() { // 3. this: retain, other: delete @@ -544,7 +600,8 @@ impl Delta { } } } - debug_log::debug_dbg!(&delta); + + // debug_log::debug_dbg!(&delta); delta.chop() } @@ -681,8 +738,8 @@ mod test { fn delta_push() { let mut a: Delta = Delta::new().insert("a".to_string()); a.push(DeltaItem::Insert { - value: "b".to_string(), - meta: (), + insert: "b".to_string(), + attributes: (), }); assert_eq!(a, Delta::new().insert("ab".to_string())); } diff --git a/crates/loro-internal/src/diff_calc.rs b/crates/loro-internal/src/diff_calc.rs index eefdc8d0..9dc0d0cd 100644 --- a/crates/loro-internal/src/diff_calc.rs +++ b/crates/loro-internal/src/diff_calc.rs @@ -298,7 +298,6 @@ impl DiffCalculator { } } - debug_log::debug_dbg!(&ans); ans.into_iter().map(|x| x.1).collect_vec() } } @@ -526,7 +525,11 @@ impl DiffCalculatorTrait for ListDiffCalculator { let ans = self.tracker.diff(from, to); // PERF: We may simplify list to avoid these getting for v in ans.iter() { - if let crate::delta::DeltaItem::Insert { value, meta: _ } = &v { + if let crate::delta::DeltaItem::Insert { + insert: value, + attributes: _, + } = &v + { for range in &value.0 { for i in range.0.clone() { let v = oplog.arena.get_value(i as usize); diff --git a/crates/loro-internal/src/encoding.rs b/crates/loro-internal/src/encoding.rs index 0f2d4d1f..a185a1a2 100644 --- a/crates/loro-internal/src/encoding.rs +++ b/crates/loro-internal/src/encoding.rs @@ -21,7 +21,7 @@ pub(crate) use encode_updates::encode_oplog_updates; pub(crate) const COMPRESS_RLE_THRESHOLD: usize = 20 * 1024; // TODO: Test this threshold #[cfg(not(test))] -pub(crate) const UPDATE_ENCODE_THRESHOLD: usize = 512; +pub(crate) const UPDATE_ENCODE_THRESHOLD: usize = 32; #[cfg(test)] pub(crate) const UPDATE_ENCODE_THRESHOLD: usize = 16; pub(crate) const MAGIC_BYTES: [u8; 4] = [0x6c, 0x6f, 0x72, 0x6f]; @@ -121,7 +121,6 @@ pub(crate) fn decode_oplog(oplog: &mut OpLog, input: &[u8]) -> Result<(), LoroEr let mode: EncodeMode = input[0].try_into()?; let decoded = &input[1..]; - debug_log::debug_dbg!(&mode); match mode { EncodeMode::Updates => decode_oplog_updates(oplog, decoded), EncodeMode::Snapshot => unimplemented!(), diff --git a/crates/loro-internal/src/fuzz.rs b/crates/loro-internal/src/fuzz.rs index c3a20642..d6f87fca 100644 --- a/crates/loro-internal/src/fuzz.rs +++ b/crates/loro-internal/src/fuzz.rs @@ -1,11 +1,22 @@ pub mod recursive_refactored; pub mod tree; -use crate::{array_mut_ref, container::richtext::TextStyleInfoFlag, loro::LoroDoc}; +use crate::{ + array_mut_ref, + container::richtext::TextStyleInfoFlag, + delta::{Delta, DeltaItem, StyleMeta}, + loro::LoroDoc, + state::ContainerState, + utils::string_slice::StringSlice, +}; use debug_log::debug_log; use enum_as_inner::EnumAsInner; -use loro_common::LoroValue; -use std::{fmt::Debug, time::Instant}; +use loro_common::{ContainerID, LoroValue}; +use std::{ + fmt::Debug, + sync::{Arc, Mutex}, + time::Instant, +}; use tabled::{TableIteratorExt, Tabled}; const STYLES: [TextStyleInfoFlag; 8] = [ @@ -323,7 +334,7 @@ pub fn change_pos_to_char_boundary(pos: &mut usize, len: usize) { *pos %= len + 1; } -fn check_synced_refactored(sites: &mut [LoroDoc]) { +fn check_synced(sites: &mut [LoroDoc], texts: &[Arc>>]) { for i in 0..sites.len() - 1 { for j in i + 1..sites.len() { debug_log::group!("checking {} with {}", i, j); @@ -346,6 +357,25 @@ fn check_synced_refactored(sites: &mut [LoroDoc]) { } check_eq(a, b); debug_log::group_end!(); + + // for (x, (site, text)) in sites.iter().zip(texts.iter()).enumerate() { + // if x != i && x != j { + // continue; + // } + + // debug_log::group!("Check {}", x); + // let diff = site.get_text("text").with_state_mut(|s| s.to_diff()); + // let mut diff = diff.into_text().unwrap(); + // compact(&mut diff); + // let mut text = text.lock().unwrap(); + // compact(&mut text); + // assert_eq!( + // &diff, &*text, + // "site:{}\nEXPECTED {:#?}\nACTUAL {:#?}", + // x, diff, text + // ); + // debug_log::group_end!(); + // } } } } @@ -479,11 +509,31 @@ where } } -pub fn test_multi_sites_refactored(site_num: u8, actions: &mut [Action]) { +pub fn test_multi_sites(site_num: u8, actions: &mut [Action]) { let mut sites = Vec::new(); + let mut texts = Vec::new(); for i in 0..site_num { let loro = LoroDoc::new(); + let text: Arc>> = Arc::new(Mutex::new(Delta::new())); + let text_clone = text.clone(); loro.set_peer_id(i as u64).unwrap(); + loro.subscribe( + &ContainerID::new_root("text", loro_common::ContainerType::Text), + Arc::new(move |event| { + if let crate::event::Diff::Text(t) = &event.container.diff { + let mut text = text_clone.lock().unwrap(); + debug_log::debug_log!( + "RECEIVE site:{} event:{:#?}\nCURRENT: {:#?}", + i, + t, + &text + ); + *text = text.clone().compose(t.clone()); + debug_log::debug_log!("new:{:#?}", &text); + } + }), + ); + texts.push(text); sites.push(loro); } @@ -495,12 +545,87 @@ pub fn test_multi_sites_refactored(site_num: u8, actions: &mut [Action]) { debug_log::group!("ApplyAction {:?}", &action); sites.apply_action(action); debug_log::group_end!(); + + // for (i, (site, text)) in sites.iter().zip(texts.iter()).enumerate() { + // debug_log::group!("Check {}", i); + // let diff = site.get_text("text").with_state_mut(|s| s.to_diff()); + // let mut diff = diff.into_text().unwrap(); + // compact(&mut diff); + // let mut text = text.lock().unwrap(); + // compact(&mut text); + // assert_eq!( + // &diff, &*text, + // "site:{}\nEXPECTED{:#?}\nACTUAL{:#?}", + // i, diff, text + // ); + // debug_log::group_end!(); + // } } debug_log::group!("CheckSynced"); // println!("{}", actions.table()); - check_synced_refactored(&mut sites); + check_synced(&mut sites, &texts); debug_log::group_end!(); + debug_log::group!("CheckTextEvent"); + for (i, (site, text)) in sites.iter().zip(texts.iter()).enumerate() { + debug_log::group!("Check {}", i); + let diff = site.get_text("text").with_state_mut(|s| s.to_diff()); + let mut diff = diff.into_text().unwrap(); + compact(&mut diff); + let mut text = text.lock().unwrap(); + compact(&mut text); + assert_eq!( + &diff, &*text, + "site:{}\nEXPECTED{:#?}\nACTUAL{:#?}", + i, diff, text + ); + debug_log::group_end!(); + } + + debug_log::group_end!(); +} + +pub fn compact(delta: &mut Delta) { + let mut ops: Vec> = vec![]; + for op in delta.vec.drain(..) { + match (ops.last_mut(), op) { + ( + Some(DeltaItem::Retain { + retain: last_retain, + attributes: last_attr, + }), + DeltaItem::Retain { retain, attributes }, + ) if &attributes == last_attr => { + *last_retain += retain; + } + ( + Some(DeltaItem::Insert { + insert: last_insert, + attributes: last_attr, + }), + DeltaItem::Insert { insert, attributes }, + ) if last_attr == &attributes => { + last_insert.extend(insert.as_str()); + } + ( + Some(DeltaItem::Delete { + delete: last_delete, + attributes: _, + }), + DeltaItem::Delete { + delete, + attributes: _, + }, + ) => { + *last_delete += delete; + } + (_, a) => { + ops.push(a); + } + } + } + + delta.vec = ops; } #[cfg(test)] @@ -510,7 +635,7 @@ mod test { #[test] fn fuzz_r1() { - test_multi_sites_refactored( + test_multi_sites( 8, &mut [ Ins { @@ -540,7 +665,7 @@ mod test { #[test] fn fuzz_r() { - test_multi_sites_refactored( + test_multi_sites( 8, &mut [ Ins { @@ -795,7 +920,7 @@ mod test { #[test] fn new_encode() { - test_multi_sites_refactored( + test_multi_sites( 8, &mut [ Ins { @@ -836,7 +961,7 @@ mod test { #[test] fn snapshot() { - test_multi_sites_refactored( + test_multi_sites( 8, &mut [ Ins { @@ -860,7 +985,7 @@ mod test { #[test] fn snapshot_2() { - test_multi_sites_refactored( + test_multi_sites( 8, &mut [ Ins { @@ -1185,7 +1310,7 @@ mod test { #[test] fn checkout() { - test_multi_sites_refactored( + test_multi_sites( 4, &mut [ Ins { @@ -1210,7 +1335,7 @@ mod test { #[test] fn text_fuzz_2() { - test_multi_sites_refactored( + test_multi_sites( 8, &mut [ Ins { @@ -1274,7 +1399,7 @@ mod test { #[test] fn text_fuzz_3() { - test_multi_sites_refactored( + test_multi_sites( 2, &mut [ Ins { @@ -1398,7 +1523,7 @@ mod test { #[test] fn text_fuzz_4() { - test_multi_sites_refactored( + test_multi_sites( 2, &mut [ Ins { @@ -1821,7 +1946,7 @@ mod test { #[test] fn richtext_fuzz_0() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [ Ins { @@ -1847,7 +1972,7 @@ mod test { #[test] fn richtext_fuzz_1() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [ Ins { @@ -1879,7 +2004,7 @@ mod test { #[test] fn richtext_fuzz_2() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [ Del { @@ -1916,7 +2041,7 @@ mod test { #[test] fn richtext_fuzz_3() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [Del { pos: 36310271995488768, @@ -1928,7 +2053,7 @@ mod test { #[test] fn fuzz_4() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [ Ins { @@ -1952,7 +2077,7 @@ mod test { #[test] fn fuzz_5() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [ Ins { @@ -1986,7 +2111,7 @@ mod test { #[test] fn fuzz_6() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [ Ins { @@ -2064,7 +2189,7 @@ mod test { #[test] fn fuzz_7() { - test_multi_sites_refactored( + test_multi_sites( 5, &mut [ Ins { @@ -2093,10 +2218,39 @@ mod test { ) } + #[test] + fn fuzz_8() { + test_multi_sites( + 5, + &mut [ + Ins { + content: 0, + pos: 16384000, + site: 0, + }, + Mark { + pos: 4503599627370752, + len: 14829735428355981312, + site: 0, + style_key: 0, + }, + Ins { + content: 52685, + pos: 3474262130214096333, + site: 128, + }, + Mark { + pos: 3607102274975328360, + len: 7812629349709198644, + site: 108, + style_key: 108, + }, + ], + ) + } + #[test] fn mini_r() { - minify_error(5, vec![], test_multi_sites_refactored, |_, ans| { - ans.to_vec() - }) + minify_error(5, vec![], test_multi_sites, |_, ans| ans.to_vec()) } } diff --git a/crates/loro-internal/src/fuzz/recursive_refactored.rs b/crates/loro-internal/src/fuzz/recursive_refactored.rs index ad658ae4..f3a0a9b7 100644 --- a/crates/loro-internal/src/fuzz/recursive_refactored.rs +++ b/crates/loro-internal/src/fuzz/recursive_refactored.rs @@ -110,10 +110,16 @@ impl Actor { let mut index = 0; for item in delta.iter() { match item { - DeltaItem::Retain { len, meta: _ } => { + DeltaItem::Retain { + retain: len, + attributes: _, + } => { index += len; } - DeltaItem::Insert { value, meta: _ } => { + DeltaItem::Insert { + insert: value, + attributes: _, + } => { let utf8_index = if cfg!(feature = "wasm") { utf16_to_utf8_index(&text, index).unwrap() } else { @@ -122,7 +128,7 @@ impl Actor { text.insert_str(utf8_index, value.as_str()); index += value.len_unicode(); } - DeltaItem::Delete { len, .. } => { + DeltaItem::Delete { delete: len, .. } => { text.drain(index..index + *len); } } @@ -171,16 +177,22 @@ impl Actor { let mut index = 0; for item in delta.iter() { match item { - DeltaItem::Retain { len, meta: _ } => { + DeltaItem::Retain { + retain: len, + attributes: _, + } => { index += len; } - DeltaItem::Insert { value, meta: _ } => { + DeltaItem::Insert { + insert: value, + attributes: _, + } => { for v in value { list.insert(index, v.clone()); index += 1; } } - DeltaItem::Delete { len, .. } => { + DeltaItem::Delete { delete: len, .. } => { list.drain(index..index + *len); } } diff --git a/crates/loro-internal/src/handler.rs b/crates/loro-internal/src/handler.rs index d0e9f825..624a15e1 100644 --- a/crates/loro-internal/src/handler.rs +++ b/crates/loro-internal/src/handler.rs @@ -10,16 +10,35 @@ use crate::{ op::ListSlice, state::RichtextState, txn::EventHint, + utils::utf16::count_utf16_chars, }; use enum_as_inner::EnumAsInner; +use fxhash::FxHashMap; use loro_common::{ ContainerID, ContainerType, LoroError, LoroResult, LoroTreeError, LoroValue, TreeID, }; +use serde::{Deserialize, Serialize}; use std::{ borrow::Cow, sync::{Mutex, Weak}, }; +#[derive(Debug, Clone, EnumAsInner, Deserialize, Serialize)] +#[serde(untagged)] +pub enum TextDelta { + Retain { + retain: usize, + attributes: Option>, + }, + Insert { + insert: String, + attributes: Option>, + }, + Delete { + delete: usize, + }, +} + #[derive(Clone)] pub struct TextHandler { txn: Weak>>, @@ -215,7 +234,7 @@ impl TextHandler { }) } - pub fn with_state(&self, f: impl FnOnce(&RichtextState)) { + pub fn with_state(&self, f: impl FnOnce(&RichtextState) -> R) -> R { self.state .upgrade() .unwrap() @@ -223,7 +242,19 @@ impl TextHandler { .unwrap() .with_state(self.container_idx, |state| { let state = state.as_richtext_state().unwrap(); - f(state); + f(state) + }) + } + + pub fn with_state_mut(&self, f: impl FnOnce(&mut RichtextState) -> R) -> R { + self.state + .upgrade() + .unwrap() + .lock() + .unwrap() + .with_state_mut(self.container_idx, |state| { + let state = state.as_richtext_state_mut().unwrap(); + f(state) }) } @@ -326,9 +357,10 @@ impl TextHandler { }); debug_assert_eq!(ranges.iter().map(|x| x.len()).sum::(), len); - let mut offset = 0; + let mut end = (pos + len) as isize; for range in ranges.iter().rev() { let len = (range.end - range.start) as isize; + let start = end - len; txn.apply_local_op( self.container_idx, crate::op::RawOpContent::List(ListOp::Delete(DeleteSpan { @@ -336,12 +368,12 @@ impl TextHandler { signed_len: len, })), EventHint::DeleteText(DeleteSpan { - pos: pos as isize + offset, + pos: start, signed_len: len, }), &self.state, )?; - offset += len; + end = start; } debug_log::group_end!(); @@ -435,6 +467,63 @@ impl TextHandler { Ok(()) } + + pub fn apply_delta_(&self, delta: &[TextDelta]) -> LoroResult<()> { + with_txn(&self.txn, |txn| self.apply_delta(txn, delta)) + } + + pub fn apply_delta(&self, txn: &mut Transaction, delta: &[TextDelta]) -> LoroResult<()> { + let mut index = 0; + let mut marks = Vec::new(); + for d in delta { + match d { + TextDelta::Insert { insert, attributes } => { + let end = index + event_len(insert.as_str()); + self.insert(txn, index, insert.as_str())?; + match attributes { + Some(attr) if !attr.is_empty() => { + for (key, value) in attr { + marks.push((index, end, key.as_str(), value.clone())); + } + } + _ => {} + } + + index = end; + } + TextDelta::Delete { delete } => { + self.delete(txn, index, *delete)?; + } + TextDelta::Retain { attributes, retain } => { + let end = index + *retain; + match attributes { + Some(attr) if !attr.is_empty() => { + for (key, value) in attr { + marks.push((index, end, key.as_str(), value.clone())); + } + } + _ => {} + } + index = end; + } + } + } + + for (start, end, key, value) in marks { + // FIXME: allow users to set a config table to store the flag, so that we can use it directly + self.mark(txn, start, end, key, value, TextStyleInfoFlag::BOLD)?; + } + + Ok(()) + } +} + +fn event_len(s: &str) -> usize { + if cfg!(feature = "wasm") { + count_utf16_chars(s.as_bytes()) + } else { + s.chars().count() + } } impl ListHandler { @@ -1069,8 +1158,11 @@ mod test { use crate::container::richtext::TextStyleInfoFlag; use crate::loro::LoroDoc; use crate::version::Frontiers; - use crate::ToJson; + use crate::{fx_map, ToJson}; use loro_common::ID; + use serde_json::json; + + use super::TextDelta; #[test] fn test() { @@ -1293,4 +1385,38 @@ mod test { loro2.import(&loro.export_from(&loro2.oplog_vv())).unwrap(); assert_eq!(loro.get_deep_value(), loro2.get_deep_value()); } + + #[test] + fn richtext_apply_delta() { + let loro = LoroDoc::new_auto_commit(); + let text = loro.get_text("text"); + text.apply_delta_(&[TextDelta::Insert { + insert: "Hello World!".into(), + attributes: None, + }]) + .unwrap(); + dbg!(text.get_richtext_value()); + text.apply_delta_(&[ + TextDelta::Retain { + retain: 6, + attributes: Some(fx_map!("italic".into() => loro_common::LoroValue::Bool(true))), + }, + TextDelta::Insert { + insert: "New ".into(), + attributes: Some(fx_map!("bold".into() => loro_common::LoroValue::Bool(true))), + }, + ]) + .unwrap(); + dbg!(text.get_richtext_value()); + loro.commit_then_renew(); + assert_eq!( + text.get_richtext_value().to_json_value(), + json!([ + {"insert": "Hello ", "attributes": {"italic": true}}, + {"insert": "New ", "attributes": {"bold": true}}, + {"insert": "World!"} + + ]) + ) + } } diff --git a/crates/loro-internal/src/oplog.rs b/crates/loro-internal/src/oplog.rs index b295c53f..448b12ae 100644 --- a/crates/loro-internal/src/oplog.rs +++ b/crates/loro-internal/src/oplog.rs @@ -715,7 +715,7 @@ impl OpLog { self.changes.values().map(|x| x.len()).sum() } - pub fn diagnose_size(&self) { + pub fn diagnose_size(&self) -> SizeInfo { let mut total_changes = 0; let mut total_ops = 0; let mut total_atom_ops = 0; @@ -732,9 +732,23 @@ impl OpLog { println!("total ops: {}", total_ops); println!("total atom ops: {}", total_atom_ops); println!("total dag node: {}", total_dag_node); + SizeInfo { + total_changes, + total_ops, + total_atom_ops, + total_dag_node, + } } } +#[derive(Debug)] +pub struct SizeInfo { + pub total_changes: usize, + pub total_ops: usize, + pub total_atom_ops: usize, + pub total_dag_node: usize, +} + impl Default for OpLog { fn default() -> Self { Self::new() diff --git a/crates/loro-internal/src/state/list_state.rs b/crates/loro-internal/src/state/list_state.rs index 88f860c6..1a6edbaf 100644 --- a/crates/loro-internal/src/state/list_state.rs +++ b/crates/loro-internal/src/state/list_state.rs @@ -297,11 +297,11 @@ impl ContainerState for ListState { let mut index = 0; for span in delta.iter() { match span { - crate::delta::DeltaItem::Retain { len, .. } => { + crate::delta::DeltaItem::Retain { retain: len, .. } => { index += len; ans = ans.retain(*len); } - crate::delta::DeltaItem::Insert { value, .. } => { + crate::delta::DeltaItem::Insert { insert: value, .. } => { let mut arr = Vec::new(); for slices in value.0.iter() { for i in slices.0.start..slices.0.end { @@ -319,7 +319,7 @@ impl ContainerState for ListState { self.insert_batch(index, arr); index += len; } - crate::delta::DeltaItem::Delete { len, .. } => { + crate::delta::DeltaItem::Delete { delete: len, .. } => { self.delete_range(index..index + len); ans = ans.delete(*len); } @@ -335,10 +335,10 @@ impl ContainerState for ListState { let mut index = 0; for span in delta.iter() { match span { - crate::delta::DeltaItem::Retain { len, .. } => { + crate::delta::DeltaItem::Retain { retain: len, .. } => { index += len; } - crate::delta::DeltaItem::Insert { value, .. } => { + crate::delta::DeltaItem::Insert { insert: value, .. } => { let mut arr = Vec::new(); for slices in value.0.iter() { for i in slices.0.start..slices.0.end { @@ -356,7 +356,7 @@ impl ContainerState for ListState { self.insert_batch(index, arr); index += len; } - crate::delta::DeltaItem::Delete { len, .. } => { + crate::delta::DeltaItem::Delete { delete: len, .. } => { self.delete_range(index..index + len); } } diff --git a/crates/loro-internal/src/state/richtext_state.rs b/crates/loro-internal/src/state/richtext_state.rs index 195175a4..1b2c704c 100644 --- a/crates/loro-internal/src/state/richtext_state.rs +++ b/crates/loro-internal/src/state/richtext_state.rs @@ -137,6 +137,8 @@ impl ContainerState for RichtextState { unreachable!() }; + debug_log::group!("apply_diff_and_convert"); + debug_log::debug_dbg!(&richtext); // PERF: compose delta let mut ans: Delta = Delta::new(); let mut style_delta: Delta = Delta::new(); @@ -150,10 +152,10 @@ impl ContainerState for RichtextState { let mut event_index = 0; for span in richtext.vec.iter() { match span { - crate::delta::DeltaItem::Retain { len, .. } => { + crate::delta::DeltaItem::Retain { retain: len, .. } => { entity_index += len; } - crate::delta::DeltaItem::Insert { value, .. } => { + crate::delta::DeltaItem::Insert { insert: value, .. } => { match value { RichtextStateChunk::Text { unicode_len, text } => { let (pos, styles) = self.state.get_mut().insert_elem_at_entity_index( @@ -166,17 +168,7 @@ impl ContainerState for RichtextState { let insert_styles = styles.clone().into(); if pos > event_index { - let mut new_len = 0; - for (len, styles) in self - .state - .get_mut() - .iter_styles_in_event_index_range(event_index..pos) - { - new_len += len; - ans = ans.retain_with_meta(len, styles.clone().into()); - } - - assert_eq!(new_len, pos - event_index); + ans = ans.retain(pos - event_index); } event_index = pos + (if cfg!(feature = "wasm") { @@ -188,7 +180,7 @@ impl ContainerState for RichtextState { .insert_with_meta(StringSlice::from(text.clone()), insert_styles); } RichtextStateChunk::Style { anchor_type, style } => { - let (event_index, _) = + let (new_event_index, _) = self.state.get_mut().insert_elem_at_entity_index( entity_index, RichtextStateChunk::Style { @@ -197,12 +189,18 @@ impl ContainerState for RichtextState { }, ); + if new_event_index > event_index { + ans = ans.retain(new_event_index - event_index); + // inserting style anchor will not affect event_index's positions + event_index = new_event_index; + } + if *anchor_type == AnchorType::Start { style_starts.insert( style.clone(), Pos { entity_index, - event_index, + event_index: new_event_index, }, ); } else { @@ -230,28 +228,24 @@ impl ContainerState for RichtextState { ); let delta: Delta = Delta::new() .retain(start_event_index) - .retain_with_meta(event_index - start_event_index, meta); - dbg!(&delta); + .retain_with_meta(new_event_index - start_event_index, meta); + debug_log::debug_dbg!(&delta); style_delta = style_delta.compose(delta); } } } entity_index += value.rle_len(); } - crate::delta::DeltaItem::Delete { len, meta: _ } => { + crate::delta::DeltaItem::Delete { + delete: len, + attributes: _, + } => { let (start, end) = self.state .get_mut() .drain_by_entity_index(entity_index, *len, |_| {}); if start > event_index { - for (len, styles) in self - .state - .get_mut() - .iter_styles_in_event_index_range(event_index..start) - { - ans = ans.retain_with_meta(len, styles.clone().into()); - } - + ans = ans.retain(start - event_index); event_index = start; } @@ -261,7 +255,11 @@ impl ContainerState for RichtextState { } debug_assert!(style_starts.is_empty(), "Styles should always be paired"); - Diff::Text(ans.compose(style_delta)) + debug_log::debug_dbg!(&ans, &style_delta); + let ans = ans.compose(style_delta); + debug_log::debug_dbg!(&ans); + debug_log::group_end!(); + Diff::Text(ans) } fn apply_diff(&mut self, diff: InternalDiff, _arena: &SharedArena) { @@ -273,10 +271,16 @@ impl ContainerState for RichtextState { let mut entity_index = 0; for span in richtext.vec.iter() { match span { - crate::delta::DeltaItem::Retain { len, meta: _ } => { + crate::delta::DeltaItem::Retain { + retain: len, + attributes: _, + } => { entity_index += len; } - crate::delta::DeltaItem::Insert { value, meta: _ } => { + crate::delta::DeltaItem::Insert { + insert: value, + attributes: _, + } => { match value { RichtextStateChunk::Text { unicode_len, text } => { self.state.get_mut().insert_elem_at_entity_index( @@ -311,7 +315,10 @@ impl ContainerState for RichtextState { } entity_index += value.rle_len(); } - crate::delta::DeltaItem::Delete { len, meta: _ } => { + crate::delta::DeltaItem::Delete { + delete: len, + attributes: _, + } => { self.state .get_mut() .drain_by_entity_index(entity_index, *len, |_| {}); @@ -395,8 +402,8 @@ impl ContainerState for RichtextState { let mut delta = crate::delta::Delta::new(); for span in self.state.get_mut().iter() { delta.vec.push(DeltaItem::Insert { - value: span.text, - meta: span.attributes, + insert: span.text, + attributes: span.attributes, }) } diff --git a/crates/loro-internal/src/utils/string_slice.rs b/crates/loro-internal/src/utils/string_slice.rs index f1435e62..f7299d7d 100644 --- a/crates/loro-internal/src/utils/string_slice.rs +++ b/crates/loro-internal/src/utils/string_slice.rs @@ -96,6 +96,19 @@ impl StringSlice { pub fn is_empty(&self) -> bool { self.bytes().is_empty() } + + pub fn extend(&mut self, s: &str) { + match &mut self.bytes { + Variant::BytesSlice(_) => { + *self = Self { + bytes: Variant::Owned(format!("{}{}", self.as_str(), s)), + } + } + Variant::Owned(v) => { + v.push_str(s); + } + } + } } impl std::fmt::Display for StringSlice { diff --git a/crates/loro-internal/src/value.rs b/crates/loro-internal/src/value.rs index 3e23e4a6..0afae096 100644 --- a/crates/loro-internal/src/value.rs +++ b/crates/loro-internal/src/value.rs @@ -49,7 +49,10 @@ impl ToJson for LoroValue { impl ToJson for DeltaItem { fn to_json_value(&self) -> serde_json::Value { match self { - DeltaItem::Retain { len, meta } => { + DeltaItem::Retain { + retain: len, + attributes: meta, + } => { let mut map = serde_json::Map::new(); map.insert("retain".into(), serde_json::to_value(len).unwrap()); if !meta.is_empty() { @@ -57,7 +60,10 @@ impl ToJson for DeltaItem { } serde_json::Value::Object(map) } - DeltaItem::Insert { value, meta } => { + DeltaItem::Insert { + insert: value, + attributes: meta, + } => { let mut map = serde_json::Map::new(); map.insert("insert".into(), serde_json::to_value(value).unwrap()); if !meta.is_empty() { @@ -65,7 +71,10 @@ impl ToJson for DeltaItem { } serde_json::Value::Object(map) } - DeltaItem::Delete { len, meta: _ } => { + DeltaItem::Delete { + delete: len, + attributes: _, + } => { let mut map = serde_json::Map::new(); map.insert("delete".into(), serde_json::to_value(len).unwrap()); serde_json::Value::Object(map) @@ -83,8 +92,8 @@ impl ToJson for DeltaItem { StyleMeta::default() }; DeltaItem::Retain { - len: len as usize, - meta, + retain: len as usize, + attributes: meta, } } else if map.contains_key("insert") { let value = map["insert"].as_str().unwrap().to_string().into(); @@ -93,12 +102,15 @@ impl ToJson for DeltaItem { } else { StyleMeta::default() }; - DeltaItem::Insert { value, meta } + DeltaItem::Insert { + insert: value, + attributes: meta, + } } else if map.contains_key("delete") { let len = map["delete"].as_u64().unwrap(); DeltaItem::Delete { - len: len as usize, - meta: Default::default(), + delete: len as usize, + attributes: Default::default(), } } else { panic!("Invalid delta item: {}", s); @@ -148,14 +160,14 @@ impl ApplyDiff for LoroValue { let mut index = 0; for delta_item in delta.iter() { match delta_item { - DeltaItem::Retain { len, .. } => { + DeltaItem::Retain { retain: len, .. } => { index += len; } - DeltaItem::Insert { value, .. } => { + DeltaItem::Insert { insert: value, .. } => { s.insert_str(index, value.as_str()); index += value.len_bytes(); } - DeltaItem::Delete { len, .. } => { + DeltaItem::Delete { delete: len, .. } => { s.drain(index..index + len); } } @@ -170,17 +182,17 @@ impl ApplyDiff for LoroValue { let mut index = 0; for delta_item in delta.iter() { match delta_item { - DeltaItem::Retain { len, .. } => { + DeltaItem::Retain { retain: len, .. } => { index += len; } - DeltaItem::Insert { value, .. } => { + DeltaItem::Insert { insert: value, .. } => { value.iter().for_each(|v| { let value = unresolved_to_collection(v); seq.insert(index, value); index += 1; }); } - DeltaItem::Delete { len, .. } => { + DeltaItem::Delete { delete: len, .. } => { seq.drain(index..index + len); } } @@ -578,7 +590,10 @@ pub mod wasm { fn from(value: DeltaItem) -> Self { let obj = Object::new(); match value { - DeltaItem::Retain { len, meta } => { + DeltaItem::Retain { + retain: len, + attributes: meta, + } => { js_sys::Reflect::set( &obj, &JsValue::from_str("retain"), @@ -594,7 +609,10 @@ pub mod wasm { .unwrap(); } } - DeltaItem::Insert { value, meta } => { + DeltaItem::Insert { + insert: value, + attributes: meta, + } => { js_sys::Reflect::set( &obj, &JsValue::from_str("insert"), @@ -610,7 +628,10 @@ pub mod wasm { .unwrap(); } } - DeltaItem::Delete { len, meta: _ } => { + DeltaItem::Delete { + delete: len, + attributes: _, + } => { js_sys::Reflect::set( &obj, &JsValue::from_str("delete"), @@ -649,7 +670,7 @@ pub mod wasm { fn from(value: DeltaItem, ()>) -> Self { let obj = Object::new(); match value { - DeltaItem::Retain { len, .. } => { + DeltaItem::Retain { retain: len, .. } => { js_sys::Reflect::set( &obj, &JsValue::from_str("retain"), @@ -657,7 +678,7 @@ pub mod wasm { ) .unwrap(); } - DeltaItem::Insert { value, .. } => { + DeltaItem::Insert { insert: value, .. } => { let arr = Array::new_with_length(value.len() as u32); for (i, v) in value.into_iter().enumerate() { arr.set(i as u32, convert(v)); @@ -670,7 +691,7 @@ pub mod wasm { ) .unwrap(); } - DeltaItem::Delete { len, .. } => { + DeltaItem::Delete { delete: len, .. } => { js_sys::Reflect::set( &obj, &JsValue::from_str("delete"), diff --git a/crates/loro-wasm/src/lib.rs b/crates/loro-wasm/src/lib.rs index 297e7082..b8d4c235 100644 --- a/crates/loro-wasm/src/lib.rs +++ b/crates/loro-wasm/src/lib.rs @@ -5,7 +5,7 @@ use loro_internal::{ ContainerID, }, event::{Diff, Index}, - handler::{ListHandler, MapHandler, TextHandler, TreeHandler}, + handler::{ListHandler, MapHandler, TextDelta, TextHandler, TreeHandler}, id::{Counter, TreeID, ID}, obs::SubID, version::Frontiers, @@ -50,6 +50,8 @@ impl Deref for Loro { extern "C" { #[wasm_bindgen(typescript_type = "ContainerID")] pub type JsContainerID; + #[wasm_bindgen(typescript_type = "ContainerID | string")] + pub type JsIntoContainerID; #[wasm_bindgen(typescript_type = "Transaction | Loro")] pub type JsTransaction; #[wasm_bindgen(typescript_type = "string | undefined")] @@ -66,6 +68,8 @@ extern "C" { pub type JsTreeID; #[wasm_bindgen(typescript_type = "Delta[]")] pub type JsStringDelta; + #[wasm_bindgen(typescript_type = "Map")] + pub type JsVersionVectorMap; } mod observer { @@ -130,6 +134,36 @@ fn frontiers_to_ids(frontiers: &Frontiers) -> Vec { ans } +fn js_value_to_container_id( + cid: &JsIntoContainerID, + kind: ContainerType, +) -> Result { + if !cid.is_string() { + return Err(JsValue::from_str("ContainerID must be a string")); + } + + let s = cid.as_string().unwrap(); + let cid = ContainerID::try_from(s.as_str()) + .unwrap_or_else(|_| ContainerID::new_root(s.as_str(), kind)); + Ok(cid) +} + +fn js_value_to_version(version: &JsValue) -> Result { + let version: Option> = if version.is_null() || version.is_undefined() { + None + } else { + let arr: Uint8Array = Uint8Array::new(version); + Some(arr.to_vec()) + }; + + let vv = match version { + Some(x) => VersionVector::decode(&x)?, + None => Default::default(), + }; + + Ok(vv) +} + #[wasm_bindgen] impl Loro { #[wasm_bindgen(constructor)] @@ -145,20 +179,57 @@ impl Loro { Ok(Loro(doc)) } + /// Attach the document state to the latest known version. + /// + /// > The document becomes detached during a `checkout` operation. + /// > Being `detached` implies that the `DocState` is not synchronized with the latest version of the `OpLog`. + /// > In a detached state, the document is not editable, and any `import` operations will be + /// > recorded in the `OpLog` without being applied to the `DocState`. + /// + /// This method has the same effect as invoking `checkout_to_latest`. pub fn attach(&mut self) { self.0.attach(); } - pub fn checkout(&mut self, frontiers: Vec) -> JsResult<()> { - self.0.checkout(&ids_to_frontiers(frontiers)?)?; - Ok(()) + /// `detached` indicates that the `DocState` is not synchronized with the latest version of `OpLog`. + /// + /// > The document becomes detached during a `checkout` operation. + /// > Being `detached` implies that the `DocState` is not synchronized with the latest version of the `OpLog`. + /// > In a detached state, the document is not editable, and any `import` operations will be + /// > recorded in the `OpLog` without being applied to the `DocState`. + /// + /// When `detached`, the document is not editable. + pub fn is_detached(&self) -> bool { + self.0.is_detached() } + /// Checkout the `DocState` to the lastest version of `OpLog`. + /// + /// > The document becomes detached during a `checkout` operation. + /// > Being `detached` implies that the `DocState` is not synchronized with the latest version of the `OpLog`. + /// > In a detached state, the document is not editable, and any `import` operations will be + /// > recorded in the `OpLog` without being applied to the `DocState`. + /// + /// This has the same effect as `attach`. pub fn checkout_to_latest(&mut self) -> JsResult<()> { self.0.checkout_to_latest(); Ok(()) } + /// Checkout the `DocState` to a specific version. + /// + /// > The document becomes detached during a `checkout` operation. + /// > Being `detached` implies that the `DocState` is not synchronized with the latest version of the `OpLog`. + /// > In a detached state, the document is not editable, and any `import` operations will be + /// > recorded in the `OpLog` without being applied to the `DocState`. + /// + /// You should call `attach` to attach the `DocState` to the lastest version of `OpLog`. + pub fn checkout(&mut self, frontiers: Vec) -> JsResult<()> { + self.0.checkout(&ids_to_frontiers(frontiers)?)?; + Ok(()) + } + + /// Peer ID of the current writer. #[wasm_bindgen(js_name = "peerId", method, getter)] pub fn peer_id(&self) -> u64 { self.0.peer_id() @@ -170,10 +241,14 @@ impl Loro { format!("{:X}", self.0.peer_id()) } - #[wasm_bindgen(js_name = "getText")] - pub fn get_text(&self, name: &str) -> JsResult { - let text = self.0.get_text(name); - Ok(LoroText(text)) + /// Set the peer ID of the current writer. + /// + /// Note: use it with caution. You need to make sure there is not chance that two peers + /// have the same peer ID. + #[wasm_bindgen(js_name = "setPeerId", method)] + pub fn set_peer_id(&self, id: u64) -> JsResult<()> { + self.0.set_peer_id(id)?; + Ok(()) } /// Commit the cumulative auto commit transaction. @@ -181,21 +256,35 @@ impl Loro { self.0.commit_with(origin.map(|x| x.into()), None, true); } + #[wasm_bindgen(js_name = "getText")] + pub fn get_text(&self, cid: &JsIntoContainerID) -> JsResult { + let text = self + .0 + .get_text(js_value_to_container_id(cid, ContainerType::Text)?); + Ok(LoroText(text)) + } + #[wasm_bindgen(js_name = "getMap")] - pub fn get_map(&self, name: &str) -> JsResult { - let map = self.0.get_map(name); + pub fn get_map(&self, cid: &JsIntoContainerID) -> JsResult { + let map = self + .0 + .get_map(js_value_to_container_id(cid, ContainerType::Map)?); Ok(LoroMap(map)) } #[wasm_bindgen(js_name = "getList")] - pub fn get_list(&self, name: &str) -> JsResult { - let list = self.0.get_list(name); + pub fn get_list(&self, cid: &JsIntoContainerID) -> JsResult { + let list = self + .0 + .get_list(js_value_to_container_id(cid, ContainerType::List)?); Ok(LoroList(list)) } #[wasm_bindgen(js_name = "getTree")] - pub fn get_tree(&self, name: &str) -> JsResult { - let tree = self.0.get_tree(name); + pub fn get_tree(&self, cid: &JsIntoContainerID) -> JsResult { + let tree = self + .0 + .get_tree(js_value_to_container_id(cid, ContainerType::Tree)?); Ok(LoroTree(tree)) } @@ -223,19 +312,54 @@ impl Loro { }) } + /// Get the encoded version vector of the current document. + /// + /// If you checkout to a specific version, the version vector will change. #[inline(always)] pub fn version(&self) -> Vec { - self.0.oplog_vv().encode() + self.0.state_vv().encode() } + /// Get the encoded version vector of the lastest verison in OpLog. + /// + /// If you checkout to a specific version, the version vector will not change. + #[inline(always)] + pub fn oplog_version(&self) -> Vec { + self.0.state_vv().encode() + } + + /// Get the frontiers of the current document. + /// + /// If you checkout to a specific version, this value will change. #[inline] pub fn frontiers(&self) -> Vec { + frontiers_to_ids(&self.0.state_frontiers()) + } + + /// Get the frontiers of the lastest version in OpLog. + /// + /// If you checkout to a specific version, this value will not change. + #[inline(always)] + pub fn oplog_frontiers(&self) -> Vec { frontiers_to_ids(&self.0.oplog_frontiers()) } - /// - -1: self's version is less than frontiers or is parallel to target - /// - 0: self's version equals to frontiers - /// - 1: self's version is greater than frontiers + /// Compare the version of the OpLog with the specified frontiers. + /// + /// This method is useful to compare the version by only a small amount of data. + /// + /// This method returns an integer indicating the relationship between the version of the OpLog (referred to as 'self') + /// and the provided 'frontiers' parameter: + /// + /// - -1: The version of 'self' is either less than 'frontiers' or is non-comparable (parallel) to 'frontiers', + /// indicating that it is not definitively less than 'frontiers'. + /// - 0: The version of 'self' is equal to 'frontiers'. + /// - 1: The version of 'self' is greater than 'frontiers'. + /// + /// # Internal + /// + /// Frontiers cannot be compared without the history of the OpLog. + /// #[inline] #[wasm_bindgen(js_name = "cmpFrontiers")] pub fn cmp_frontiers(&self, frontiers: Vec) -> JsResult { @@ -254,18 +378,8 @@ impl Loro { #[wasm_bindgen(skip_typescript, js_name = "exportFrom")] pub fn export_from(&self, version: &JsValue) -> JsResult> { - let version: Option> = if version.is_null() || version.is_undefined() { - None - } else { - let arr: Uint8Array = Uint8Array::new(version); - Some(arr.to_vec()) - }; - - let vv = match version { - Some(x) => VersionVector::decode(&x)?, - None => Default::default(), - }; - + // `version` may be null or undefined + let vv = js_value_to_version(version)?; Ok(self.0.export_from(&vv)) } @@ -274,6 +388,9 @@ impl Loro { Ok(()) } + /// Import a batch of updates. + /// + /// It's more efficient than importing updates one by one. #[wasm_bindgen(js_name = "importUpdateBatch")] pub fn import_update_batch(&mut self, data: Array) -> JsResult<()> { let data = data @@ -309,6 +426,12 @@ impl Loro { pub fn unsubscribe(&self, subscription: u32) { self.0.unsubscribe(SubID::from_u32(subscription)) } + + #[wasm_bindgen(js_name = "debugHistory")] + pub fn debug_history(&self) { + let oplog = self.0.oplog().lock().unwrap(); + console_log!("{:#?}", oplog.diagnose_size()); + } } #[allow(unused)] @@ -546,6 +669,14 @@ impl LoroText { loro.0.unsubscribe(SubID::from_u32(subscription)); Ok(()) } + + #[wasm_bindgen(js_name = "applyDelta")] + pub fn apply_delta(&self, delta: JsValue) -> JsResult<()> { + let delta: Vec = serde_wasm_bindgen::from_value(delta)?; + console_log!("apply_delta {:?}", delta); + self.0.apply_delta_(&delta)?; + Ok(()) + } } #[wasm_bindgen] @@ -799,6 +930,33 @@ impl LoroTree { } } +/// Convert a encoded version vector to a readable js Map. +/// +/// # Example +/// +/// ```js +/// const loro = new Loro(); +/// loro.setPeerId('100'); +/// loro.getText("t").insert(0, 'a'); +/// loro.commit(); +/// const version = loro.getVersion(); +/// const readableVersion = convertVersionToReadableObj(version); +/// console.log(readableVersion); // Map(1) { 100n => 1 } +/// ``` +#[wasm_bindgen(js_name = "convertVersionToReadableMap")] +pub fn convert_version_to_readable_map(version: &[u8]) -> Result { + let version_vector = VersionVector::decode(version)?; + let map = js_sys::Map::new(); + for (k, v) in version_vector.iter() { + let k = js_sys::BigInt::from(*k); + let v = JsValue::from(*v); + map.set(&k.to_owned(), &v); + } + + let map: JsValue = map.into(); + Ok(JsVersionVectorMap::from(map)) +} + #[wasm_bindgen(typescript_custom_section)] const TYPES: &'static str = r#" export type ContainerType = "Text" | "Map" | "List"| "Tree"; @@ -814,18 +972,19 @@ interface Loro { export type Delta = | { insert: T; - attributes?: { [key in string]: {} }, + attributes?: { [key in string]: {} }; retain?: undefined; delete?: undefined; } | { delete: number; + attributes?: undefined; retain?: undefined; insert?: undefined; } | { retain: number; - attributes?: { [key in string]: {} }, + attributes?: { [key in string]: {} }; delete?: undefined; insert?: undefined; }; diff --git a/examples/loro-quill/.gitignore b/examples/loro-quill/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/examples/loro-quill/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/examples/loro-quill/.vite/deps_temp_cd4bf69d/package.json b/examples/loro-quill/.vite/deps_temp_cd4bf69d/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/examples/loro-quill/.vite/deps_temp_cd4bf69d/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/examples/loro-quill/.vscode/extensions.json b/examples/loro-quill/.vscode/extensions.json new file mode 100644 index 00000000..c0a6e5a4 --- /dev/null +++ b/examples/loro-quill/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] +} diff --git a/examples/loro-quill/README.md b/examples/loro-quill/README.md new file mode 100644 index 00000000..ef72fd52 --- /dev/null +++ b/examples/loro-quill/README.md @@ -0,0 +1,18 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + + diff --git a/examples/loro-quill/package.json b/examples/loro-quill/package.json new file mode 100644 index 00000000..f7351664 --- /dev/null +++ b/examples/loro-quill/package.json @@ -0,0 +1,26 @@ +{ + "name": "loro-quill", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --force", + "build": "vue-tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "loro-crdt": "workspace:*", + "is-equal": "^1.6.4", + "quill": "^1.3.7", + "vue": "^3.2.47" + }, + "devDependencies": { + "@types/quill": "^1.3.7", + "@vitejs/plugin-vue": "^4.1.0", + "typescript": "^5.0.2", + "vite": "^4.3.2", + "vite-plugin-top-level-await": "^1.3.0", + "vite-plugin-wasm": "^3.2.2", + "vue-tsc": "^1.4.2" + } +} diff --git a/examples/loro-quill/public/Loro.svg b/examples/loro-quill/public/Loro.svg new file mode 100644 index 00000000..b1a41072 --- /dev/null +++ b/examples/loro-quill/public/Loro.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/loro-quill/src/App.vue b/examples/loro-quill/src/App.vue new file mode 100644 index 00000000..a4025e8a --- /dev/null +++ b/examples/loro-quill/src/App.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/examples/loro-quill/src/assets/Loro.svg b/examples/loro-quill/src/assets/Loro.svg new file mode 100644 index 00000000..b1a41072 --- /dev/null +++ b/examples/loro-quill/src/assets/Loro.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/loro-quill/src/binding.ts b/examples/loro-quill/src/binding.ts new file mode 100644 index 00000000..1c680689 --- /dev/null +++ b/examples/loro-quill/src/binding.ts @@ -0,0 +1,160 @@ +/** + * The skeleton of this binding is learned from https://github.com/yjs/y-quill + */ + +import { Delta, Loro, LoroText } from "loro-crdt"; +import Quill, { DeltaStatic, Sources } from "quill"; +// @ts-ignore +import isEqual from "is-equal"; + +const Delta = Quill.import("delta"); + +export class QuillBinding { + private richtext: LoroText; + constructor(public doc: Loro, public quill: Quill) { + this.quill = quill; + this.richtext = doc.getText("text"); + this.richtext.subscribe(doc, (event) => { + // Promise.resolve().then(() => { + // let delta: DeltaType = new Delta( + // richtext.getAnnSpans(), + // ); + // quill.setContents( + // delta, + // "this" as any, + // ); + // }); + Promise.resolve().then(() => { + if (!event.local && event.diff.type == "text") { + console.log( + doc.peerId, + "CRDT_EVENT", + event, + ); + const eventDelta = event.diff.diff; + const delta: Delta[] = []; + let index = 0; + for (let i = 0; i < eventDelta.length; i++) { + const d = eventDelta[i]; + const length = d.delete || d.retain || d.insert!.length; + // skip the last newline that quill automatically appends + if ( + d.insert && d.insert === "\n" && + index === quill.getLength() - 1 && + i === eventDelta.length - 1 && d.attributes != null && + Object.keys(d.attributes).length > 0 + ) { + delta.push({ + retain: 1, + attributes: d.attributes, + }); + index += length; + continue; + } + + delta.push(d); + index += length; + } + quill.updateContents(new Delta(delta), "this" as any); + const a = this.richtext.toDelta(); + const b = this.quill.getContents().ops; + console.log(this.doc.peerId, "COMPARE AFTER CRDT_EVENT"); + if (!assertEqual(a, b as any)) { + quill.setContents(new Delta(a), "this" as any); + } + } + }); + }); + quill.setContents( + new Delta( + this.richtext.toDelta().map((x) => ({ + insert: x.insert, + attributions: x.attributes, + })), + ), + "this" as any, + ); + quill.on("editor-change", this.quillObserver); + } + + quillObserver: ( + name: "text-change", + delta: DeltaStatic, + oldContents: DeltaStatic, + source: Sources, + ) => any = (_eventType, delta, _state, origin) => { + if (delta && delta.ops) { + // update content + const ops = delta.ops; + if (origin !== "this" as any) { + this.richtext.applyDelta(ops); + const a = this.richtext.toDelta(); + const b = this.quill.getContents().ops; + console.log(this.doc.peerId, "COMPARE AFTER QUILL_EVENT"); + assertEqual(a, b as any); + console.log( + this.doc.peerId, + "CHECK_MATCH", + { delta }, + a, + b, + ); + console.log("SIZE", this.doc.exportFrom().length); + } + } + }; + destroy() { + // TODO: unobserve + this.quill.off("editor-change", this.quillObserver); + } +} + +function assertEqual(a: Delta[], b: Delta[]): boolean { + a = normQuillDelta(a); + b = normQuillDelta(b); + const equal = isEqual(a, b); + console.assert(equal, a, b); + return equal; +} + +/** + * Removes the pending '\n's if it has no attributes. + * + * Normalize attributes field + */ +export const normQuillDelta = (delta: Delta[]) => { + for (const d of delta) { + for (const key of Object.keys(d.attributes || {})) { + if (d.attributes![key] == null) { + delete d.attributes![key]; + } + } + } + + for (const d of delta) { + if (Object.keys(d.attributes || {}).length === 0) { + delete d.attributes; + } + } + + if (delta.length > 0) { + const d = delta[delta.length - 1]; + const insert = d.insert; + if ( + d.attributes === undefined && insert !== undefined && + insert.slice(-1) === "\n" + ) { + delta = delta.slice(); + let ins = insert.slice(0, -1); + while (ins.slice(-1) === "\n") { + ins = ins.slice(0, -1); + } + delta[delta.length - 1] = { insert: ins }; + if (ins.length === 0) { + delta.pop(); + } + return delta; + } + } + return delta; +}; diff --git a/examples/loro-quill/src/components/HelloWorld.vue b/examples/loro-quill/src/components/HelloWorld.vue new file mode 100644 index 00000000..7b25f3f2 --- /dev/null +++ b/examples/loro-quill/src/components/HelloWorld.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/examples/loro-quill/src/main.ts b/examples/loro-quill/src/main.ts new file mode 100644 index 00000000..2425c0f7 --- /dev/null +++ b/examples/loro-quill/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/examples/loro-quill/src/style.css b/examples/loro-quill/src/style.css new file mode 100644 index 00000000..ddd7ffb9 --- /dev/null +++ b/examples/loro-quill/src/style.css @@ -0,0 +1,78 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #ddd; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +.card { + padding: 2em; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +:root { + color: #213547; + background-color: #ffffff; +} +a:hover { + color: #747bff; +} +button { + background-color: #f9f9f9; +} diff --git a/examples/loro-quill/src/vite-env.d.ts b/examples/loro-quill/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/examples/loro-quill/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/loro-quill/vite.config.ts b/examples/loro-quill/vite.config.ts new file mode 100644 index 00000000..3d67bf22 --- /dev/null +++ b/examples/loro-quill/vite.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import wasm from "vite-plugin-wasm"; +import topLevelAwait from "vite-plugin-top-level-await"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue(), wasm(), topLevelAwait()], +}); diff --git a/loro-js/package.json b/loro-js/package.json index f9d0b714..e2f9a200 100644 --- a/loro-js/package.json +++ b/loro-js/package.json @@ -20,7 +20,7 @@ "@rollup/plugin-node-resolve": "^15.0.1", "@typescript-eslint/parser": "^6.2.0", "@vitest/ui": "^0.34.6", - "esbuild": "^0.17.12", + "esbuild": "^0.18.20", "eslint": "^8.46.0", "prettier": "^3.0.0", "rollup": "^3.20.1", @@ -29,6 +29,6 @@ "typescript": "^5.0.2", "vite": "^4.2.1", "vite-plugin-wasm": "^3.2.2", - "vitest": "^0.29.7" + "vitest": "^0.30.1" } } diff --git a/loro-js/src/index.ts b/loro-js/src/index.ts index c48a371b..d0f4d4c4 100644 --- a/loro-js/src/index.ts +++ b/loro-js/src/index.ts @@ -1,20 +1,9 @@ -export { - LoroList, - LoroMap, - LoroText, - PrelimList, - PrelimMap, - PrelimText, - Delta, - setPanicHook, -} from "loro-wasm"; +export * from "loro-wasm"; import { Delta, PrelimMap } from "loro-wasm"; import { PrelimText } from "loro-wasm"; import { PrelimList } from "loro-wasm"; import { ContainerID, Loro, LoroList, LoroMap, LoroText } from "loro-wasm"; -export type { ContainerID, ContainerType } from "loro-wasm"; - Loro.prototype.getTypedMap = function (...args) { return this.getMap(...args); }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06a5c869..0e1950b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,10 +12,47 @@ importers: devDependencies: vite-plugin-top-level-await: specifier: ^1.2.2 - version: 1.3.0(vite@4.2.1) + version: 1.3.0(vite@4.5.0) vite-plugin-wasm: specifier: ^3.1.0 - version: 3.2.2(vite@4.2.1) + version: 3.2.2(vite@4.5.0) + + examples/loro-quill: + dependencies: + is-equal: + specifier: ^1.6.4 + version: registry.npmmirror.com/is-equal@1.6.4 + loro-crdt: + specifier: workspace:* + version: link:../../loro-js + quill: + specifier: ^1.3.7 + version: registry.npmmirror.com/quill@1.3.7 + vue: + specifier: ^3.2.47 + version: registry.npmmirror.com/vue@3.2.47 + devDependencies: + '@types/quill': + specifier: ^1.3.7 + version: registry.npmmirror.com/@types/quill@1.3.7 + '@vitejs/plugin-vue': + specifier: ^4.1.0 + version: registry.npmmirror.com/@vitejs/plugin-vue@4.1.0(vite@4.3.2)(vue@3.2.47) + typescript: + specifier: ^5.0.2 + version: registry.npmmirror.com/typescript@5.0.3 + vite: + specifier: ^4.3.2 + version: registry.npmmirror.com/vite@4.3.2 + vite-plugin-top-level-await: + specifier: ^1.3.0 + version: registry.npmmirror.com/vite-plugin-top-level-await@1.3.0(vite@4.3.2) + vite-plugin-wasm: + specifier: ^3.2.2 + version: registry.npmmirror.com/vite-plugin-wasm@3.2.2(vite@4.3.2) + vue-tsc: + specifier: ^1.4.2 + version: registry.npmmirror.com/vue-tsc@1.4.2(typescript@5.0.3) loro-js: dependencies: @@ -31,10 +68,10 @@ importers: version: registry.npmmirror.com/@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.0.3) '@vitest/ui': specifier: ^0.34.6 - version: registry.npmmirror.com/@vitest/ui@0.34.6(vitest@0.29.8) + version: registry.npmmirror.com/@vitest/ui@0.34.6(vitest@0.30.1) esbuild: - specifier: ^0.17.12 - version: 0.17.15 + specifier: ^0.18.20 + version: registry.npmmirror.com/esbuild@0.18.20 eslint: specifier: ^8.46.0 version: registry.npmmirror.com/eslint@8.46.0 @@ -49,19 +86,19 @@ importers: version: 5.3.0(rollup@3.20.2)(typescript@5.0.3) rollup-plugin-esbuild: specifier: ^5.0.0 - version: 5.0.0(esbuild@0.17.15)(rollup@3.20.2) + version: 5.0.0(esbuild@0.18.20)(rollup@3.20.2) typescript: specifier: ^5.0.2 version: 5.0.3 vite: specifier: ^4.2.1 - version: 4.2.1(@types/node@18.15.11) + version: 4.2.1 vite-plugin-wasm: specifier: ^3.2.2 version: 3.2.2(vite@4.2.1) vitest: - specifier: ^0.29.7 - version: 0.29.8(@vitest/ui@0.34.6) + specifier: ^0.30.1 + version: registry.npmmirror.com/vitest@0.30.1(@vitest/ui@0.34.6) packages: @@ -147,80 +184,14 @@ packages: '@swc/core-win32-x64-msvc': registry.npmmirror.com/@swc/core-win32-x64-msvc@1.3.44 dev: true - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.4 - dev: true - - /@types/chai@4.3.4: - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} - dev: true - /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - dev: true - /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@vitest/expect@0.29.8: - resolution: {integrity: sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==} - dependencies: - '@vitest/spy': 0.29.8 - '@vitest/utils': 0.29.8 - chai: 4.3.7 - dev: true - - /@vitest/runner@0.29.8: - resolution: {integrity: sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==} - dependencies: - '@vitest/utils': 0.29.8 - p-limit: 4.0.0 - pathe: 1.1.0 - dev: true - - /@vitest/spy@0.29.8: - resolution: {integrity: sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==} - dependencies: - tinyspy: 1.1.1 - dev: true - - /@vitest/utils@0.29.8: - resolution: {integrity: sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==} - dependencies: - cli-truncate: 3.1.0 - diff: 5.1.0 - loupe: 2.3.6 - pretty-format: 27.5.1 - dev: true - - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true - /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -230,43 +201,11 @@ packages: dev: true optional: true - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true - - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: true - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -278,18 +217,6 @@ packages: dev: true optional: true - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: true - - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - dev: true - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} requiresBuild: true @@ -316,65 +243,15 @@ packages: ms: 2.1.2 dev: true - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: true - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true - - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - /es-module-lexer@1.2.1: resolution: {integrity: sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==} dev: true - /esbuild@0.17.15: - resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm@0.17.15 - '@esbuild/android-arm64': registry.npmmirror.com/@esbuild/android-arm64@0.17.15 - '@esbuild/android-x64': registry.npmmirror.com/@esbuild/android-x64@0.17.15 - '@esbuild/darwin-arm64': registry.npmmirror.com/@esbuild/darwin-arm64@0.17.15 - '@esbuild/darwin-x64': registry.npmmirror.com/@esbuild/darwin-x64@0.17.15 - '@esbuild/freebsd-arm64': registry.npmmirror.com/@esbuild/freebsd-arm64@0.17.15 - '@esbuild/freebsd-x64': registry.npmmirror.com/@esbuild/freebsd-x64@0.17.15 - '@esbuild/linux-arm': registry.npmmirror.com/@esbuild/linux-arm@0.17.15 - '@esbuild/linux-arm64': registry.npmmirror.com/@esbuild/linux-arm64@0.17.15 - '@esbuild/linux-ia32': registry.npmmirror.com/@esbuild/linux-ia32@0.17.15 - '@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64@0.17.15 - '@esbuild/linux-mips64el': registry.npmmirror.com/@esbuild/linux-mips64el@0.17.15 - '@esbuild/linux-ppc64': registry.npmmirror.com/@esbuild/linux-ppc64@0.17.15 - '@esbuild/linux-riscv64': registry.npmmirror.com/@esbuild/linux-riscv64@0.17.15 - '@esbuild/linux-s390x': registry.npmmirror.com/@esbuild/linux-s390x@0.17.15 - '@esbuild/linux-x64': registry.npmmirror.com/@esbuild/linux-x64@0.17.15 - '@esbuild/netbsd-x64': registry.npmmirror.com/@esbuild/netbsd-x64@0.17.15 - '@esbuild/openbsd-x64': registry.npmmirror.com/@esbuild/openbsd-x64@0.17.15 - '@esbuild/sunos-x64': registry.npmmirror.com/@esbuild/sunos-x64@0.17.15 - '@esbuild/win32-arm64': registry.npmmirror.com/@esbuild/win32-arm64@0.17.15 - '@esbuild/win32-ia32': registry.npmmirror.com/@esbuild/win32-ia32@0.17.15 - '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64@0.17.15 - dev: true - /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -390,10 +267,6 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: true - /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -421,11 +294,6 @@ packages: has: 1.0.3 dev: true - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true - /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -445,17 +313,6 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - dependencies: - get-func-name: 2.0.0 - dev: true - /magic-string@0.30.0: resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} engines: {node: '>=12'} @@ -463,15 +320,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /mlly@1.2.0: - resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} - dependencies: - acorn: 8.8.2 - pathe: 1.1.0 - pkg-types: 1.0.2 - ufo: 1.1.1 - dev: true - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -482,25 +330,10 @@ packages: hasBin: true dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /pathe@1.1.0: - resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} - dev: true - - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -510,34 +343,13 @@ packages: engines: {node: '>=8.6'} dev: true - /pkg-types@1.0.2: - resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.2.0 - pathe: 1.1.0 - dev: true - /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 dev: true /resolve@1.22.1: @@ -563,7 +375,7 @@ packages: '@babel/code-frame': registry.npmmirror.com/@babel/code-frame@7.21.4 dev: true - /rollup-plugin-esbuild@5.0.0(esbuild@0.17.15)(rollup@3.20.2): + /rollup-plugin-esbuild@5.0.0(esbuild@0.18.20)(rollup@3.20.2): resolution: {integrity: sha512-1cRIOHAPh8WQgdQQyyvFdeOdxuiyk+zB5zJ5+YOwrZP4cJ0MT3Fs48pQxrZeyZHcn+klFherytILVfE4aYrneg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} peerDependencies: @@ -573,7 +385,7 @@ packages: '@rollup/pluginutils': 5.0.2(rollup@3.20.2) debug: 4.3.4 es-module-lexer: 1.2.1 - esbuild: 0.17.15 + esbuild: registry.npmmirror.com/esbuild@0.18.20 joycon: 3.1.1 jsonc-parser: 3.2.0 rollup: 3.20.2 @@ -589,58 +401,6 @@ packages: fsevents: registry.npmmirror.com/fsevents@2.3.2 dev: true - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - - /std-env@3.3.2: - resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} - dev: true - - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - dev: true - - /strip-ansi@7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-literal@1.0.1: - resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} - dependencies: - acorn: 8.8.2 - dev: true - /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -655,62 +415,18 @@ packages: engines: {node: '>= 0.4'} dev: true - /tinybench@2.4.0: - resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} - dev: true - - /tinypool@0.4.0: - resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} - engines: {node: '>=14.0.0'} - dev: true - - /tinyspy@1.1.1: - resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} - engines: {node: '>=14.0.0'} - dev: true - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - /typescript@5.0.3: resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} engines: {node: '>=12.20'} hasBin: true dev: true - /ufo@1.1.1: - resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} - dev: true - /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true dev: true - /vite-node@0.29.8(@types/node@18.15.11): - resolution: {integrity: sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==} - engines: {node: '>=v14.16.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.2.0 - pathe: 1.1.0 - picocolors: 1.0.0 - vite: 4.2.1(@types/node@18.15.11) - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-plugin-top-level-await@1.3.0(vite@4.2.1): + /vite-plugin-top-level-await@1.3.0(vite@4.5.0): resolution: {integrity: sha512-owIfsgWudMlQODWJSwp0sQB3AZZu3qsMygeBjZy8CyjEk6OB9AGd8lHqmgwrcEqgvy9N58lYxSBLVk3/4ejEiA==} peerDependencies: vite: '>=2.8' @@ -718,7 +434,7 @@ packages: '@rollup/plugin-virtual': 3.0.1 '@swc/core': 1.3.44 uuid: 9.0.0 - vite: registry.npmmirror.com/vite@4.2.1 + vite: registry.npmmirror.com/vite@4.5.0(@types/node@18.15.11) transitivePeerDependencies: - rollup dev: true @@ -728,10 +444,18 @@ packages: peerDependencies: vite: ^2 || ^3 || ^4 dependencies: - vite: 4.2.1(@types/node@18.15.11) + vite: 4.2.1 dev: true - /vite@4.2.1(@types/node@18.15.11): + /vite-plugin-wasm@3.2.2(vite@4.5.0): + resolution: {integrity: sha512-cdbBUNR850AEoMd5nvLmnyeq63CSfoP1ctD/L2vLk/5+wsgAPlAVAzUK5nGKWO/jtehNlrSSHLteN+gFQw7VOA==} + peerDependencies: + vite: ^2 || ^3 || ^4 + dependencies: + vite: registry.npmmirror.com/vite@4.5.0(@types/node@18.15.11) + dev: true + + /vite@4.2.1: resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -756,8 +480,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.11 - esbuild: 0.17.15 + esbuild: registry.npmmirror.com/esbuild@0.17.15 postcss: 8.4.21 resolve: 1.22.1 rollup: 3.20.2 @@ -765,85 +488,6 @@ packages: fsevents: registry.npmmirror.com/fsevents@2.3.2 dev: true - /vitest@0.29.8(@vitest/ui@0.34.6): - resolution: {integrity: sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==} - engines: {node: '>=v14.16.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.4 - '@types/chai-subset': 1.3.3 - '@types/node': 18.15.11 - '@vitest/expect': 0.29.8 - '@vitest/runner': 0.29.8 - '@vitest/spy': 0.29.8 - '@vitest/ui': registry.npmmirror.com/@vitest/ui@0.34.6(vitest@0.29.8) - '@vitest/utils': 0.29.8 - acorn: 8.8.2 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - debug: 4.3.4 - local-pkg: 0.4.3 - pathe: 1.1.0 - picocolors: 1.0.0 - source-map: 0.6.1 - std-env: 3.3.2 - strip-literal: 1.0.1 - tinybench: 2.4.0 - tinypool: 0.4.0 - tinyspy: 1.1.1 - vite: 4.2.1(@types/node@18.15.11) - vite-node: 0.29.8(@types/node@18.15.11) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - dev: true - - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true - registry.nlark.com/@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz} name: '@nodelib/fs.scandir' @@ -878,6 +522,37 @@ packages: dev: true optional: true + registry.npmmirror.com/@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz} + name: '@babel/helper-string-parser' + version: 7.22.5 + engines: {node: '>=6.9.0'} + + registry.npmmirror.com/@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz} + name: '@babel/helper-validator-identifier' + version: 7.22.20 + engines: {node: '>=6.9.0'} + + registry.npmmirror.com/@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz} + name: '@babel/parser' + version: 7.23.0 + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': registry.npmmirror.com/@babel/types@7.23.0 + + registry.npmmirror.com/@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.23.0.tgz} + name: '@babel/types' + version: 7.23.0 + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': registry.npmmirror.com/@babel/helper-string-parser@7.22.5 + '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier@7.22.20 + to-fast-properties: registry.npmmirror.com/to-fast-properties@2.0.0 + registry.npmmirror.com/@esbuild/android-arm64@0.17.15: resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz} name: '@esbuild/android-arm64' @@ -889,6 +564,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz} + name: '@esbuild/android-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/android-arm@0.17.15: resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.15.tgz} name: '@esbuild/android-arm' @@ -900,6 +586,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz} + name: '@esbuild/android-arm' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/android-x64@0.17.15: resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.15.tgz} name: '@esbuild/android-x64' @@ -911,6 +608,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz} + name: '@esbuild/android-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/darwin-arm64@0.17.15: resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz} name: '@esbuild/darwin-arm64' @@ -922,6 +630,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz} + name: '@esbuild/darwin-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/darwin-x64@0.17.15: resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz} name: '@esbuild/darwin-x64' @@ -933,6 +652,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz} + name: '@esbuild/darwin-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/freebsd-arm64@0.17.15: resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz} name: '@esbuild/freebsd-arm64' @@ -944,6 +674,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz} + name: '@esbuild/freebsd-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/freebsd-x64@0.17.15: resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz} name: '@esbuild/freebsd-x64' @@ -955,6 +696,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz} + name: '@esbuild/freebsd-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-arm64@0.17.15: resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz} name: '@esbuild/linux-arm64' @@ -966,6 +718,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz} + name: '@esbuild/linux-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-arm@0.17.15: resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz} name: '@esbuild/linux-arm' @@ -977,6 +740,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz} + name: '@esbuild/linux-arm' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-ia32@0.17.15: resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz} name: '@esbuild/linux-ia32' @@ -988,6 +762,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz} + name: '@esbuild/linux-ia32' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-loong64@0.17.15: resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz} name: '@esbuild/linux-loong64' @@ -999,6 +784,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz} + name: '@esbuild/linux-loong64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-mips64el@0.17.15: resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz} name: '@esbuild/linux-mips64el' @@ -1010,6 +806,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz} + name: '@esbuild/linux-mips64el' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-ppc64@0.17.15: resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz} name: '@esbuild/linux-ppc64' @@ -1021,6 +828,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz} + name: '@esbuild/linux-ppc64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-riscv64@0.17.15: resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz} name: '@esbuild/linux-riscv64' @@ -1032,6 +850,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz} + name: '@esbuild/linux-riscv64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-s390x@0.17.15: resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz} name: '@esbuild/linux-s390x' @@ -1043,6 +872,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz} + name: '@esbuild/linux-s390x' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/linux-x64@0.17.15: resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz} name: '@esbuild/linux-x64' @@ -1054,6 +894,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz} + name: '@esbuild/linux-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/netbsd-x64@0.17.15: resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz} name: '@esbuild/netbsd-x64' @@ -1065,6 +916,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz} + name: '@esbuild/netbsd-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/openbsd-x64@0.17.15: resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz} name: '@esbuild/openbsd-x64' @@ -1076,6 +938,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz} + name: '@esbuild/openbsd-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/sunos-x64@0.17.15: resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz} name: '@esbuild/sunos-x64' @@ -1087,6 +960,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz} + name: '@esbuild/sunos-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/win32-arm64@0.17.15: resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz} name: '@esbuild/win32-arm64' @@ -1098,6 +982,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz} + name: '@esbuild/win32-arm64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/win32-ia32@0.17.15: resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz} name: '@esbuild/win32-ia32' @@ -1109,6 +1004,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz} + name: '@esbuild/win32-ia32' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@esbuild/win32-x64@0.17.15: resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz} name: '@esbuild/win32-x64' @@ -1120,6 +1026,17 @@ packages: dev: true optional: true + registry.npmmirror.com/@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz} + name: '@esbuild/win32-x64' + version: 0.18.20 + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + registry.npmmirror.com/@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz} id: registry.npmmirror.com/@eslint-community/eslint-utils/4.4.0 @@ -1201,6 +1118,12 @@ packages: '@sinclair/typebox': registry.npmmirror.com/@sinclair/typebox@0.27.8 dev: true + registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz} + name: '@jridgewell/sourcemap-codec' + version: 1.4.15 + dev: true + registry.npmmirror.com/@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz} name: '@nodelib/fs.stat' @@ -1224,6 +1147,18 @@ packages: version: 1.0.0-next.23 dev: true + registry.npmmirror.com/@rollup/plugin-virtual@3.0.1: + resolution: {integrity: sha512-fK8O0IL5+q+GrsMLuACVNk2x21g3yaw+sG2qn16SnUd3IlBsQyvWxLMGHmCmXRMecPjGRSZ/1LmZB4rjQm68og==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@rollup/plugin-virtual/-/plugin-virtual-3.0.1.tgz} + name: '@rollup/plugin-virtual' + version: 3.0.1 + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dev: true + registry.npmmirror.com/@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.27.8.tgz} name: '@sinclair/typebox' @@ -1344,6 +1279,53 @@ packages: dev: true optional: true + registry.npmmirror.com/@swc/core@1.3.44: + resolution: {integrity: sha512-RC25C8nxOCdfGS//F9Q8aHKx4XoCsxvgO+sSUhvt7zDz1Y2ruVUTu2UOH0VeE0WkA8j6oEZH+xH2SUfDUkxXdA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@swc/core/-/core-1.3.44.tgz} + name: '@swc/core' + version: 1.3.44 + engines: {node: '>=10'} + requiresBuild: true + optionalDependencies: + '@swc/core-darwin-arm64': registry.npmmirror.com/@swc/core-darwin-arm64@1.3.44 + '@swc/core-darwin-x64': registry.npmmirror.com/@swc/core-darwin-x64@1.3.44 + '@swc/core-linux-arm-gnueabihf': registry.npmmirror.com/@swc/core-linux-arm-gnueabihf@1.3.44 + '@swc/core-linux-arm64-gnu': registry.npmmirror.com/@swc/core-linux-arm64-gnu@1.3.44 + '@swc/core-linux-arm64-musl': registry.npmmirror.com/@swc/core-linux-arm64-musl@1.3.44 + '@swc/core-linux-x64-gnu': registry.npmmirror.com/@swc/core-linux-x64-gnu@1.3.44 + '@swc/core-linux-x64-musl': registry.npmmirror.com/@swc/core-linux-x64-musl@1.3.44 + '@swc/core-win32-arm64-msvc': registry.npmmirror.com/@swc/core-win32-arm64-msvc@1.3.44 + '@swc/core-win32-ia32-msvc': registry.npmmirror.com/@swc/core-win32-ia32-msvc@1.3.44 + '@swc/core-win32-x64-msvc': registry.npmmirror.com/@swc/core-win32-x64-msvc@1.3.44 + dev: true + + registry.npmmirror.com/@types/chai-subset@1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/chai-subset/-/chai-subset-1.3.3.tgz} + name: '@types/chai-subset' + version: 1.3.3 + dependencies: + '@types/chai': registry.npmmirror.com/@types/chai@4.3.4 + dev: true + + registry.npmmirror.com/@types/chai@4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/chai/-/chai-4.3.4.tgz} + name: '@types/chai' + version: 4.3.4 + dev: true + + registry.npmmirror.com/@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-18.15.11.tgz} + name: '@types/node' + version: 18.15.11 + dev: true + + registry.npmmirror.com/@types/quill@1.3.7: + resolution: {integrity: sha512-OLCF0e+ZaknLCF+1Bmw0FXXJQtVv7iNbPrTOlBLEOSocu6EWo+7Zr7SuovFcHOgr5YPaYvjiXy0pOmCYyZBfww==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/quill/-/quill-1.3.7.tgz} + name: '@types/quill' + version: 1.3.7 + dependencies: + parchment: registry.npmmirror.com/parchment@1.1.4 + dev: true + registry.npmmirror.com/@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.0.3): resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.2.0.tgz} id: registry.npmmirror.com/@typescript-eslint/parser/6.2.0 @@ -1419,7 +1401,60 @@ packages: eslint-visitor-keys: registry.npmmirror.com/eslint-visitor-keys@3.4.2 dev: true - registry.npmmirror.com/@vitest/ui@0.34.6(vitest@0.29.8): + registry.npmmirror.com/@vitejs/plugin-vue@4.1.0(vite@4.3.2)(vue@3.2.47): + resolution: {integrity: sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz} + id: registry.npmmirror.com/@vitejs/plugin-vue/4.1.0 + name: '@vitejs/plugin-vue' + version: 4.1.0 + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: registry.npmmirror.com/vite@4.3.2 + vue: registry.npmmirror.com/vue@3.2.47 + dev: true + + registry.npmmirror.com/@vitest/expect@0.30.1: + resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitest/expect/-/expect-0.30.1.tgz} + name: '@vitest/expect' + version: 0.30.1 + dependencies: + '@vitest/spy': registry.npmmirror.com/@vitest/spy@0.30.1 + '@vitest/utils': registry.npmmirror.com/@vitest/utils@0.30.1 + chai: registry.npmmirror.com/chai@4.3.7 + dev: true + + registry.npmmirror.com/@vitest/runner@0.30.1: + resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitest/runner/-/runner-0.30.1.tgz} + name: '@vitest/runner' + version: 0.30.1 + dependencies: + '@vitest/utils': registry.npmmirror.com/@vitest/utils@0.30.1 + concordance: registry.npmmirror.com/concordance@5.0.4 + p-limit: registry.npmmirror.com/p-limit@4.0.0 + pathe: registry.npmmirror.com/pathe@1.1.1 + dev: true + + registry.npmmirror.com/@vitest/snapshot@0.30.1: + resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitest/snapshot/-/snapshot-0.30.1.tgz} + name: '@vitest/snapshot' + version: 0.30.1 + dependencies: + magic-string: registry.npmmirror.com/magic-string@0.30.5 + pathe: registry.npmmirror.com/pathe@1.1.1 + pretty-format: registry.npmmirror.com/pretty-format@27.5.1 + dev: true + + registry.npmmirror.com/@vitest/spy@0.30.1: + resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitest/spy/-/spy-0.30.1.tgz} + name: '@vitest/spy' + version: 0.30.1 + dependencies: + tinyspy: registry.npmmirror.com/tinyspy@2.2.0 + dev: true + + registry.npmmirror.com/@vitest/ui@0.34.6(vitest@0.30.1): resolution: {integrity: sha512-/fxnCwGC0Txmr3tF3BwAbo3v6U2SkBTGR9UB8zo0Ztlx0BTOXHucE0gDHY7SjwEktCOHatiGmli9kZD6gYSoWQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitest/ui/-/ui-0.34.6.tgz} id: registry.npmmirror.com/@vitest/ui/0.34.6 name: '@vitest/ui' @@ -1434,7 +1469,17 @@ packages: pathe: registry.npmmirror.com/pathe@1.1.1 picocolors: registry.npmmirror.com/picocolors@1.0.0 sirv: registry.npmmirror.com/sirv@2.0.3 - vitest: 0.29.8(@vitest/ui@0.34.6) + vitest: registry.npmmirror.com/vitest@0.30.1(@vitest/ui@0.34.6) + dev: true + + registry.npmmirror.com/@vitest/utils@0.30.1: + resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vitest/utils/-/utils-0.30.1.tgz} + name: '@vitest/utils' + version: 0.30.1 + dependencies: + concordance: registry.npmmirror.com/concordance@5.0.4 + loupe: registry.npmmirror.com/loupe@2.3.6 + pretty-format: registry.npmmirror.com/pretty-format@27.5.1 dev: true registry.npmmirror.com/@vitest/utils@0.34.6: @@ -1447,6 +1492,229 @@ packages: pretty-format: registry.npmmirror.com/pretty-format@29.7.0 dev: true + registry.npmmirror.com/@volar/language-core@1.4.0: + resolution: {integrity: sha512-zZg771L/v4MCPwM1KJxvnQ3q3QgbGJtEytivqf+PsxPr0kQ7XtwB1J30dd+YSGN869pXXZ0V6vWdHkDpWC8F3A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@volar/language-core/-/language-core-1.4.0.tgz} + name: '@volar/language-core' + version: 1.4.0 + dependencies: + '@volar/source-map': registry.npmmirror.com/@volar/source-map@1.4.0 + dev: true + + registry.npmmirror.com/@volar/source-map@1.4.0: + resolution: {integrity: sha512-gkV8ol9qtP7aMdgijc8a5Yoxxoo90TT55YCi9bsMbKxEUDsOAnlciFNlijR9Ebe42d67GV3w15/RzjveTRNGBw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@volar/source-map/-/source-map-1.4.0.tgz} + name: '@volar/source-map' + version: 1.4.0 + dependencies: + muggle-string: registry.npmmirror.com/muggle-string@0.2.2 + dev: true + + registry.npmmirror.com/@volar/typescript@1.4.0(typescript@5.0.3): + resolution: {integrity: sha512-r6OMHj/LeS86iQy3LEjjS+qpmHr9I7BiH8gAwp9WEJP76FHlMPi/EPDQxhf3VcMQ/w6Pi5aBczqI+I3akr9t4g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@volar/typescript/-/typescript-1.4.0.tgz} + id: registry.npmmirror.com/@volar/typescript/1.4.0 + name: '@volar/typescript' + version: 1.4.0 + peerDependencies: + typescript: '*' + dependencies: + '@volar/language-core': registry.npmmirror.com/@volar/language-core@1.4.0 + typescript: registry.npmmirror.com/typescript@5.0.3 + dev: true + + registry.npmmirror.com/@volar/vue-language-core@1.4.2: + resolution: {integrity: sha512-bDdFowfnyHI7udELEgUWukOh4l9jVTaxb9jZtj0GxUp0Mjj0u81d9+jE2UC3fFJpbndQLGFR6F+ffguHgmrj6Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.4.2.tgz} + name: '@volar/vue-language-core' + version: 1.4.2 + dependencies: + '@volar/language-core': registry.npmmirror.com/@volar/language-core@1.4.0 + '@volar/source-map': registry.npmmirror.com/@volar/source-map@1.4.0 + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.3.7 + '@vue/compiler-sfc': registry.npmmirror.com/@vue/compiler-sfc@3.3.7 + '@vue/reactivity': registry.npmmirror.com/@vue/reactivity@3.3.7 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.7 + minimatch: registry.npmmirror.com/minimatch@9.0.3 + muggle-string: registry.npmmirror.com/muggle-string@0.2.2 + vue-template-compiler: registry.npmmirror.com/vue-template-compiler@2.7.15 + dev: true + + registry.npmmirror.com/@volar/vue-typescript@1.4.2(typescript@5.0.3): + resolution: {integrity: sha512-A1m1cSvS0Pf7Sm9q0S/1riV4RQQeH2h5gGo0vR9fGK2SrAStvh4HuuxPOX4N9uMDbRsNMhC0ILXwtlvjQ/IXJA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.4.2.tgz} + id: registry.npmmirror.com/@volar/vue-typescript/1.4.2 + name: '@volar/vue-typescript' + version: 1.4.2 + deprecated: 'WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.' + dependencies: + '@volar/typescript': registry.npmmirror.com/@volar/typescript@1.4.0(typescript@5.0.3) + '@volar/vue-language-core': registry.npmmirror.com/@volar/vue-language-core@1.4.2 + transitivePeerDependencies: + - typescript + dev: true + + registry.npmmirror.com/@vue/compiler-core@3.2.47: + resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz} + name: '@vue/compiler-core' + version: 3.2.47 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.0 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + source-map: registry.npmmirror.com/source-map@0.6.1 + + registry.npmmirror.com/@vue/compiler-core@3.3.7: + resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.7.tgz} + name: '@vue/compiler-core' + version: 3.3.7 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.0 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.7 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + dev: true + + registry.npmmirror.com/@vue/compiler-dom@3.2.47: + resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz} + name: '@vue/compiler-dom' + version: 3.2.47 + dependencies: + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.2.47 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + + registry.npmmirror.com/@vue/compiler-dom@3.3.7: + resolution: {integrity: sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz} + name: '@vue/compiler-dom' + version: 3.3.7 + dependencies: + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.3.7 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.7 + dev: true + + registry.npmmirror.com/@vue/compiler-sfc@3.2.47: + resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz} + name: '@vue/compiler-sfc' + version: 3.2.47 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.0 + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.2.47 + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.2.47 + '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr@3.2.47 + '@vue/reactivity-transform': registry.npmmirror.com/@vue/reactivity-transform@3.2.47 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + magic-string: registry.npmmirror.com/magic-string@0.25.9 + postcss: registry.npmmirror.com/postcss@8.4.21 + source-map: registry.npmmirror.com/source-map@0.6.1 + + registry.npmmirror.com/@vue/compiler-sfc@3.3.7: + resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz} + name: '@vue/compiler-sfc' + version: 3.3.7 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.0 + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.3.7 + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.3.7 + '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr@3.3.7 + '@vue/reactivity-transform': registry.npmmirror.com/@vue/reactivity-transform@3.3.7 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.7 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + postcss: registry.npmmirror.com/postcss@8.4.31 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + dev: true + + registry.npmmirror.com/@vue/compiler-ssr@3.2.47: + resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz} + name: '@vue/compiler-ssr' + version: 3.2.47 + dependencies: + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.2.47 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + + registry.npmmirror.com/@vue/compiler-ssr@3.3.7: + resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz} + name: '@vue/compiler-ssr' + version: 3.3.7 + dependencies: + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.3.7 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.7 + dev: true + + registry.npmmirror.com/@vue/reactivity-transform@3.2.47: + resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz} + name: '@vue/reactivity-transform' + version: 3.2.47 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.0 + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.2.47 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + magic-string: registry.npmmirror.com/magic-string@0.25.9 + + registry.npmmirror.com/@vue/reactivity-transform@3.3.7: + resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz} + name: '@vue/reactivity-transform' + version: 3.3.7 + dependencies: + '@babel/parser': registry.npmmirror.com/@babel/parser@7.23.0 + '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core@3.3.7 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.7 + estree-walker: registry.npmmirror.com/estree-walker@2.0.2 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + dev: true + + registry.npmmirror.com/@vue/reactivity@3.2.47: + resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz} + name: '@vue/reactivity' + version: 3.2.47 + dependencies: + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + + registry.npmmirror.com/@vue/reactivity@3.3.7: + resolution: {integrity: sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.7.tgz} + name: '@vue/reactivity' + version: 3.3.7 + dependencies: + '@vue/shared': registry.npmmirror.com/@vue/shared@3.3.7 + dev: true + + registry.npmmirror.com/@vue/runtime-core@3.2.47: + resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz} + name: '@vue/runtime-core' + version: 3.2.47 + dependencies: + '@vue/reactivity': registry.npmmirror.com/@vue/reactivity@3.2.47 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + + registry.npmmirror.com/@vue/runtime-dom@3.2.47: + resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz} + name: '@vue/runtime-dom' + version: 3.2.47 + dependencies: + '@vue/runtime-core': registry.npmmirror.com/@vue/runtime-core@3.2.47 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + csstype: registry.npmmirror.com/csstype@2.6.21 + + registry.npmmirror.com/@vue/server-renderer@3.2.47(vue@3.2.47): + resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz} + id: registry.npmmirror.com/@vue/server-renderer/3.2.47 + name: '@vue/server-renderer' + version: 3.2.47 + peerDependencies: + vue: 3.2.47 + dependencies: + '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr@3.2.47 + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + vue: registry.npmmirror.com/vue@3.2.47 + + registry.npmmirror.com/@vue/shared@3.2.47: + resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz} + name: '@vue/shared' + version: 3.2.47 + + registry.npmmirror.com/@vue/shared@3.3.7: + resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.3.7.tgz} + name: '@vue/shared' + version: 3.3.7 + dev: true + registry.npmmirror.com/acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz} id: registry.npmmirror.com/acorn-jsx/5.3.2 @@ -1458,6 +1726,13 @@ packages: acorn: registry.npmmirror.com/acorn@8.10.0 dev: true + registry.npmmirror.com/acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz} + name: acorn-walk + version: 8.2.0 + engines: {node: '>=0.4.0'} + dev: true + registry.npmmirror.com/acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz} name: acorn @@ -1506,6 +1781,15 @@ packages: version: 2.0.1 dev: true + registry.npmmirror.com/array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz} + name: array-buffer-byte-length + version: 1.0.0 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + is-array-buffer: registry.npmmirror.com/is-array-buffer@3.0.2 + dev: false + registry.npmmirror.com/array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz} name: array-union @@ -1513,12 +1797,46 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz} + name: arraybuffer.prototype.slice + version: 1.0.2 + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: registry.npmmirror.com/array-buffer-byte-length@1.0.0 + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + is-array-buffer: registry.npmmirror.com/is-array-buffer@3.0.2 + is-shared-array-buffer: registry.npmmirror.com/is-shared-array-buffer@1.0.2 + dev: false + + registry.npmmirror.com/assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz} + name: assertion-error + version: 1.1.0 + dev: true + + registry.npmmirror.com/available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz} + name: available-typed-arrays + version: 1.0.5 + engines: {node: '>= 0.4'} + dev: false + registry.npmmirror.com/balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz} name: balanced-match version: 1.0.2 dev: true + registry.npmmirror.com/blueimp-md5@2.19.0: + resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz} + name: blueimp-md5 + version: 2.19.0 + dev: true + registry.npmmirror.com/brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz} name: brace-expansion @@ -1528,6 +1846,14 @@ packages: concat-map: registry.nlark.com/concat-map@0.0.1 dev: true + registry.npmmirror.com/brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz} + name: brace-expansion + version: 2.0.1 + dependencies: + balanced-match: registry.npmmirror.com/balanced-match@1.0.2 + dev: true + registry.npmmirror.com/braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz} name: braces @@ -1537,6 +1863,23 @@ packages: fill-range: registry.npmmirror.com/fill-range@7.0.1 dev: true + registry.npmmirror.com/cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz} + name: cac + version: 6.7.14 + engines: {node: '>=8'} + dev: true + + registry.npmmirror.com/call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz} + name: call-bind + version: 1.0.5 + dependencies: + function-bind: registry.npmmirror.com/function-bind@1.1.2 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + set-function-length: registry.npmmirror.com/set-function-length@1.1.1 + dev: false + registry.npmmirror.com/callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz} name: callsites @@ -1544,6 +1887,21 @@ packages: engines: {node: '>=6'} dev: true + registry.npmmirror.com/chai@4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chai/-/chai-4.3.7.tgz} + name: chai + version: 4.3.7 + engines: {node: '>=4'} + dependencies: + assertion-error: registry.npmmirror.com/assertion-error@1.1.0 + check-error: registry.npmmirror.com/check-error@1.0.2 + deep-eql: registry.npmmirror.com/deep-eql@4.1.3 + get-func-name: registry.npmmirror.com/get-func-name@2.0.0 + loupe: registry.npmmirror.com/loupe@2.3.6 + pathval: registry.npmmirror.com/pathval@1.1.1 + type-detect: registry.npmmirror.com/type-detect@4.0.8 + dev: true + registry.npmmirror.com/chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz} name: chalk @@ -1554,6 +1912,19 @@ packages: supports-color: registry.npmmirror.com/supports-color@7.2.0 dev: true + registry.npmmirror.com/check-error@1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/check-error/-/check-error-1.0.2.tgz} + name: check-error + version: 1.0.2 + dev: true + + registry.npmmirror.com/clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz} + name: clone + version: 2.1.2 + engines: {node: '>=0.8'} + dev: false + registry.npmmirror.com/color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz} name: color-convert @@ -1569,6 +1940,22 @@ packages: version: 1.1.4 dev: true + registry.npmmirror.com/concordance@5.0.4: + resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/concordance/-/concordance-5.0.4.tgz} + name: concordance + version: 5.0.4 + engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} + dependencies: + date-time: registry.npmmirror.com/date-time@3.1.0 + esutils: registry.npmmirror.com/esutils@2.0.3 + fast-diff: registry.npmmirror.com/fast-diff@1.3.0 + js-string-escape: registry.npmmirror.com/js-string-escape@1.0.1 + lodash: registry.npmmirror.com/lodash@4.17.21 + md5-hex: registry.npmmirror.com/md5-hex@3.0.1 + semver: registry.npmmirror.com/semver@7.5.4 + well-known-symbols: registry.npmmirror.com/well-known-symbols@2.0.0 + dev: true + registry.npmmirror.com/cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz} name: cross-spawn @@ -1580,6 +1967,26 @@ packages: which: registry.npmmirror.com/which@2.0.2 dev: true + registry.npmmirror.com/csstype@2.6.21: + resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz} + name: csstype + version: 2.6.21 + + registry.npmmirror.com/date-time@3.1.0: + resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/date-time/-/date-time-3.1.0.tgz} + name: date-time + version: 3.1.0 + engines: {node: '>=6'} + dependencies: + time-zone: registry.npmmirror.com/time-zone@1.0.0 + dev: true + + registry.npmmirror.com/de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz} + name: de-indent + version: 1.0.2 + dev: true + registry.npmmirror.com/debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz} name: debug @@ -1594,12 +2001,56 @@ packages: ms: registry.npmmirror.com/ms@2.1.2 dev: true + registry.npmmirror.com/deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/deep-eql/-/deep-eql-4.1.3.tgz} + name: deep-eql + version: 4.1.3 + engines: {node: '>=6'} + dependencies: + type-detect: registry.npmmirror.com/type-detect@4.0.8 + dev: true + + registry.npmmirror.com/deep-equal@1.1.1: + resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz} + name: deep-equal + version: 1.1.1 + dependencies: + is-arguments: registry.npmmirror.com/is-arguments@1.1.1 + is-date-object: registry.npmmirror.com/is-date-object@1.0.5 + is-regex: registry.npmmirror.com/is-regex@1.1.4 + object-is: registry.npmmirror.com/object-is@1.1.5 + object-keys: registry.npmmirror.com/object-keys@1.1.1 + regexp.prototype.flags: registry.npmmirror.com/regexp.prototype.flags@1.5.1 + dev: false + registry.npmmirror.com/deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz} name: deep-is version: 0.1.4 dev: true + registry.npmmirror.com/define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz} + name: define-data-property + version: 1.1.1 + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + gopd: registry.npmmirror.com/gopd@1.0.1 + has-property-descriptors: registry.npmmirror.com/has-property-descriptors@1.0.1 + dev: false + + registry.npmmirror.com/define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz} + name: define-properties + version: 1.2.1 + engines: {node: '>= 0.4'} + dependencies: + define-data-property: registry.npmmirror.com/define-data-property@1.1.1 + has-property-descriptors: registry.npmmirror.com/has-property-descriptors@1.0.1 + object-keys: registry.npmmirror.com/object-keys@1.1.1 + dev: false + registry.npmmirror.com/diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/diff-sequences/-/diff-sequences-29.6.3.tgz} name: diff-sequences @@ -1625,6 +2076,91 @@ packages: esutils: registry.npmmirror.com/esutils@2.0.3 dev: true + registry.npmmirror.com/es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.3.tgz} + name: es-abstract + version: 1.22.3 + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: registry.npmmirror.com/array-buffer-byte-length@1.0.0 + arraybuffer.prototype.slice: registry.npmmirror.com/arraybuffer.prototype.slice@1.0.2 + available-typed-arrays: registry.npmmirror.com/available-typed-arrays@1.0.5 + call-bind: registry.npmmirror.com/call-bind@1.0.5 + es-set-tostringtag: registry.npmmirror.com/es-set-tostringtag@2.0.2 + es-to-primitive: registry.npmmirror.com/es-to-primitive@1.2.1 + function.prototype.name: registry.npmmirror.com/function.prototype.name@1.1.6 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + get-symbol-description: registry.npmmirror.com/get-symbol-description@1.0.0 + globalthis: registry.npmmirror.com/globalthis@1.0.3 + gopd: registry.npmmirror.com/gopd@1.0.1 + has-property-descriptors: registry.npmmirror.com/has-property-descriptors@1.0.1 + has-proto: registry.npmmirror.com/has-proto@1.0.1 + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + hasown: registry.npmmirror.com/hasown@2.0.0 + internal-slot: registry.npmmirror.com/internal-slot@1.0.6 + is-array-buffer: registry.npmmirror.com/is-array-buffer@3.0.2 + is-callable: registry.npmmirror.com/is-callable@1.2.7 + is-negative-zero: registry.npmmirror.com/is-negative-zero@2.0.2 + is-regex: registry.npmmirror.com/is-regex@1.1.4 + is-shared-array-buffer: registry.npmmirror.com/is-shared-array-buffer@1.0.2 + is-string: registry.npmmirror.com/is-string@1.0.7 + is-typed-array: registry.npmmirror.com/is-typed-array@1.1.12 + is-weakref: registry.npmmirror.com/is-weakref@1.0.2 + object-inspect: registry.npmmirror.com/object-inspect@1.13.1 + object-keys: registry.npmmirror.com/object-keys@1.1.1 + object.assign: registry.npmmirror.com/object.assign@4.1.4 + regexp.prototype.flags: registry.npmmirror.com/regexp.prototype.flags@1.5.1 + safe-array-concat: registry.npmmirror.com/safe-array-concat@1.0.1 + safe-regex-test: registry.npmmirror.com/safe-regex-test@1.0.0 + string.prototype.trim: registry.npmmirror.com/string.prototype.trim@1.2.8 + string.prototype.trimend: registry.npmmirror.com/string.prototype.trimend@1.0.7 + string.prototype.trimstart: registry.npmmirror.com/string.prototype.trimstart@1.0.7 + typed-array-buffer: registry.npmmirror.com/typed-array-buffer@1.0.0 + typed-array-byte-length: registry.npmmirror.com/typed-array-byte-length@1.0.0 + typed-array-byte-offset: registry.npmmirror.com/typed-array-byte-offset@1.0.0 + typed-array-length: registry.npmmirror.com/typed-array-length@1.0.4 + unbox-primitive: registry.npmmirror.com/unbox-primitive@1.0.2 + which-typed-array: registry.npmmirror.com/which-typed-array@1.1.13 + dev: false + + registry.npmmirror.com/es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz} + name: es-get-iterator + version: 1.1.3 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + is-arguments: registry.npmmirror.com/is-arguments@1.1.1 + is-map: registry.npmmirror.com/is-map@2.0.2 + is-set: registry.npmmirror.com/is-set@2.0.2 + is-string: registry.npmmirror.com/is-string@1.0.7 + isarray: registry.npmmirror.com/isarray@2.0.5 + stop-iteration-iterator: registry.npmmirror.com/stop-iteration-iterator@1.0.0 + dev: false + + registry.npmmirror.com/es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz} + name: es-set-tostringtag + version: 2.0.2 + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + hasown: registry.npmmirror.com/hasown@2.0.0 + dev: false + + registry.npmmirror.com/es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz} + name: es-to-primitive + version: 1.2.1 + engines: {node: '>= 0.4'} + dependencies: + is-callable: registry.npmmirror.com/is-callable@1.2.7 + is-date-object: registry.npmmirror.com/is-date-object@1.0.5 + is-symbol: registry.npmmirror.com/is-symbol@1.0.4 + dev: false + registry.npmmirror.com/esbuild@0.17.15: resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.17.15.tgz} name: esbuild @@ -1657,6 +2193,38 @@ packages: '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64@0.17.15 dev: true + registry.npmmirror.com/esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz} + name: esbuild + version: 0.18.20 + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm@0.18.20 + '@esbuild/android-arm64': registry.npmmirror.com/@esbuild/android-arm64@0.18.20 + '@esbuild/android-x64': registry.npmmirror.com/@esbuild/android-x64@0.18.20 + '@esbuild/darwin-arm64': registry.npmmirror.com/@esbuild/darwin-arm64@0.18.20 + '@esbuild/darwin-x64': registry.npmmirror.com/@esbuild/darwin-x64@0.18.20 + '@esbuild/freebsd-arm64': registry.npmmirror.com/@esbuild/freebsd-arm64@0.18.20 + '@esbuild/freebsd-x64': registry.npmmirror.com/@esbuild/freebsd-x64@0.18.20 + '@esbuild/linux-arm': registry.npmmirror.com/@esbuild/linux-arm@0.18.20 + '@esbuild/linux-arm64': registry.npmmirror.com/@esbuild/linux-arm64@0.18.20 + '@esbuild/linux-ia32': registry.npmmirror.com/@esbuild/linux-ia32@0.18.20 + '@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64@0.18.20 + '@esbuild/linux-mips64el': registry.npmmirror.com/@esbuild/linux-mips64el@0.18.20 + '@esbuild/linux-ppc64': registry.npmmirror.com/@esbuild/linux-ppc64@0.18.20 + '@esbuild/linux-riscv64': registry.npmmirror.com/@esbuild/linux-riscv64@0.18.20 + '@esbuild/linux-s390x': registry.npmmirror.com/@esbuild/linux-s390x@0.18.20 + '@esbuild/linux-x64': registry.npmmirror.com/@esbuild/linux-x64@0.18.20 + '@esbuild/netbsd-x64': registry.npmmirror.com/@esbuild/netbsd-x64@0.18.20 + '@esbuild/openbsd-x64': registry.npmmirror.com/@esbuild/openbsd-x64@0.18.20 + '@esbuild/sunos-x64': registry.npmmirror.com/@esbuild/sunos-x64@0.18.20 + '@esbuild/win32-arm64': registry.npmmirror.com/@esbuild/win32-arm64@0.18.20 + '@esbuild/win32-ia32': registry.npmmirror.com/@esbuild/win32-ia32@0.18.20 + '@esbuild/win32-x64': registry.npmmirror.com/@esbuild/win32-x64@0.18.20 + dev: true + registry.npmmirror.com/escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz} name: escape-string-regexp @@ -1765,6 +2333,11 @@ packages: engines: {node: '>=4.0'} dev: true + registry.npmmirror.com/estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz} + name: estree-walker + version: 2.0.2 + registry.npmmirror.com/esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz} name: esutils @@ -1772,12 +2345,36 @@ packages: engines: {node: '>=0.10.0'} dev: true + registry.npmmirror.com/eventemitter3@2.0.3: + resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz} + name: eventemitter3 + version: 2.0.3 + dev: false + + registry.npmmirror.com/extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz} + name: extend + version: 3.0.2 + dev: false + registry.npmmirror.com/fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} name: fast-deep-equal version: 3.1.3 dev: true + registry.npmmirror.com/fast-diff@1.1.2: + resolution: {integrity: sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz} + name: fast-diff + version: 1.1.2 + dev: false + + registry.npmmirror.com/fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz} + name: fast-diff + version: 1.3.0 + dev: true + registry.npmmirror.com/fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz} name: fast-glob @@ -1861,6 +2458,14 @@ packages: version: 3.2.7 dev: true + registry.npmmirror.com/for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz} + name: for-each + version: 0.3.3 + dependencies: + is-callable: registry.npmmirror.com/is-callable@1.2.7 + dev: false + registry.npmmirror.com/fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz} name: fs.realpath @@ -1881,7 +2486,31 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz} name: function-bind version: 1.1.1 - dev: true + dev: false + + registry.npmmirror.com/function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz} + name: function-bind + version: 1.1.2 + dev: false + + registry.npmmirror.com/function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz} + name: function.prototype.name + version: 1.1.6 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + functions-have-names: registry.npmmirror.com/functions-have-names@1.2.3 + dev: false + + registry.npmmirror.com/functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz} + name: functions-have-names + version: 1.2.3 + dev: false registry.npmmirror.com/get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.0.tgz} @@ -1889,6 +2518,27 @@ packages: version: 2.0.0 dev: true + registry.npmmirror.com/get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz} + name: get-intrinsic + version: 1.2.2 + dependencies: + function-bind: registry.npmmirror.com/function-bind@1.1.2 + has-proto: registry.npmmirror.com/has-proto@1.0.1 + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + hasown: registry.npmmirror.com/hasown@2.0.0 + dev: false + + registry.npmmirror.com/get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz} + name: get-symbol-description + version: 1.0.0 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + dev: false + registry.npmmirror.com/glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz} name: glob-parent @@ -1929,6 +2579,15 @@ packages: type-fest: registry.npmmirror.com/type-fest@0.20.2 dev: true + registry.npmmirror.com/globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz} + name: globalthis + version: 1.0.3 + engines: {node: '>= 0.4'} + dependencies: + define-properties: registry.npmmirror.com/define-properties@1.2.1 + dev: false + registry.npmmirror.com/globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz} name: globby @@ -1943,12 +2602,26 @@ packages: slash: registry.npmmirror.com/slash@3.0.0 dev: true + registry.npmmirror.com/gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz} + name: gopd + version: 1.0.1 + dependencies: + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + dev: false + registry.npmmirror.com/graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz} name: graphemer version: 1.4.0 dev: true + registry.npmmirror.com/has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz} + name: has-bigints + version: 1.0.2 + dev: false + registry.npmmirror.com/has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz} name: has-flag @@ -1956,6 +2629,37 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz} + name: has-property-descriptors + version: 1.0.1 + dependencies: + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + dev: false + + registry.npmmirror.com/has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz} + name: has-proto + version: 1.0.1 + engines: {node: '>= 0.4'} + dev: false + + registry.npmmirror.com/has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz} + name: has-symbols + version: 1.0.3 + engines: {node: '>= 0.4'} + dev: false + + registry.npmmirror.com/has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz} + name: has-tostringtag + version: 1.0.0 + engines: {node: '>= 0.4'} + dependencies: + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + dev: false + registry.npmmirror.com/has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has/-/has-1.0.3.tgz} name: has @@ -1963,6 +2667,22 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: registry.npmmirror.com/function-bind@1.1.1 + dev: false + + registry.npmmirror.com/hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz} + name: hasown + version: 2.0.0 + engines: {node: '>= 0.4'} + dependencies: + function-bind: registry.npmmirror.com/function-bind@1.1.2 + dev: false + + registry.npmmirror.com/he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/he/-/he-1.2.0.tgz} + name: he + version: 1.2.0 + hasBin: true dev: true registry.npmmirror.com/ignore@5.2.4: @@ -2004,13 +2724,117 @@ packages: version: 2.0.4 dev: true - registry.npmmirror.com/is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz} - name: is-core-module - version: 2.11.0 + registry.npmmirror.com/internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.6.tgz} + name: internal-slot + version: 1.0.6 + engines: {node: '>= 0.4'} dependencies: + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + hasown: registry.npmmirror.com/hasown@2.0.0 + side-channel: registry.npmmirror.com/side-channel@1.0.4 + dev: false + + registry.npmmirror.com/is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz} + name: is-arguments + version: 1.1.1 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + + registry.npmmirror.com/is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz} + name: is-array-buffer + version: 3.0.2 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + is-typed-array: registry.npmmirror.com/is-typed-array@1.1.12 + dev: false + + registry.npmmirror.com/is-arrow-function@2.0.3: + resolution: {integrity: sha512-iDStzcT1FJMzx+TjCOK//uDugSe/Mif/8a+T0htydQ3qkJGvSweTZpVYz4hpJH0baloSPiAFQdA8WslAgJphvQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-arrow-function/-/is-arrow-function-2.0.3.tgz} + name: is-arrow-function + version: 2.0.3 + engines: {node: '>= 0.4'} + dependencies: + is-callable: registry.npmmirror.com/is-callable@1.2.7 + dev: false + + registry.npmmirror.com/is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-async-function/-/is-async-function-2.0.0.tgz} + name: is-async-function + version: 2.0.0 + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + + registry.npmmirror.com/is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz} + name: is-bigint + version: 1.0.4 + dependencies: + has-bigints: registry.npmmirror.com/has-bigints@1.0.2 + dev: false + + registry.npmmirror.com/is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz} + name: is-boolean-object + version: 1.1.2 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + + registry.npmmirror.com/is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz} + name: is-callable + version: 1.2.7 + engines: {node: '>= 0.4'} + dev: false + + registry.npmmirror.com/is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz} + name: is-date-object + version: 1.0.5 + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + + registry.npmmirror.com/is-equal@1.6.4: + resolution: {integrity: sha512-NiPOTBb5ahmIOYkJ7mVTvvB1bydnTzixvfO+59AjJKBpyjPBIULL3EHGxySyZijlVpewveJyhiLQThcivkkAtw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-equal/-/is-equal-1.6.4.tgz} + name: is-equal + version: 1.6.4 + engines: {node: '>= 0.4'} + dependencies: + es-get-iterator: registry.npmmirror.com/es-get-iterator@1.1.3 + functions-have-names: registry.npmmirror.com/functions-have-names@1.2.3 has: registry.npmmirror.com/has@1.0.3 - dev: true + has-bigints: registry.npmmirror.com/has-bigints@1.0.2 + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + is-arrow-function: registry.npmmirror.com/is-arrow-function@2.0.3 + is-bigint: registry.npmmirror.com/is-bigint@1.0.4 + is-boolean-object: registry.npmmirror.com/is-boolean-object@1.1.2 + is-callable: registry.npmmirror.com/is-callable@1.2.7 + is-date-object: registry.npmmirror.com/is-date-object@1.0.5 + is-generator-function: registry.npmmirror.com/is-generator-function@1.0.10 + is-number-object: registry.npmmirror.com/is-number-object@1.0.7 + is-regex: registry.npmmirror.com/is-regex@1.1.4 + is-string: registry.npmmirror.com/is-string@1.0.7 + is-symbol: registry.npmmirror.com/is-symbol@1.0.4 + isarray: registry.npmmirror.com/isarray@2.0.5 + object-inspect: registry.npmmirror.com/object-inspect@1.13.1 + object.entries: registry.npmmirror.com/object.entries@1.1.7 + object.getprototypeof: registry.npmmirror.com/object.getprototypeof@1.0.5 + which-boxed-primitive: registry.npmmirror.com/which-boxed-primitive@1.0.2 + which-collection: registry.npmmirror.com/which-collection@1.0.1 + dev: false registry.npmmirror.com/is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz} @@ -2019,6 +2843,23 @@ packages: engines: {node: '>=0.10.0'} dev: true + registry.npmmirror.com/is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz} + name: is-finalizationregistry + version: 1.0.2 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + dev: false + + registry.npmmirror.com/is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz} + name: is-generator-function + version: 1.0.10 + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + registry.npmmirror.com/is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz} name: is-glob @@ -2028,6 +2869,28 @@ packages: is-extglob: registry.npmmirror.com/is-extglob@2.1.1 dev: true + registry.npmmirror.com/is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-map/-/is-map-2.0.2.tgz} + name: is-map + version: 2.0.2 + dev: false + + registry.npmmirror.com/is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz} + name: is-negative-zero + version: 2.0.2 + engines: {node: '>= 0.4'} + dev: false + + registry.npmmirror.com/is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz} + name: is-number-object + version: 1.0.7 + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + registry.npmmirror.com/is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz} name: is-number @@ -2042,12 +2905,99 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz} + name: is-regex + version: 1.1.4 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + + registry.npmmirror.com/is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-set/-/is-set-2.0.2.tgz} + name: is-set + version: 2.0.2 + dev: false + + registry.npmmirror.com/is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz} + name: is-shared-array-buffer + version: 1.0.2 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + dev: false + + registry.npmmirror.com/is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz} + name: is-string + version: 1.0.7 + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + + registry.npmmirror.com/is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz} + name: is-symbol + version: 1.0.4 + engines: {node: '>= 0.4'} + dependencies: + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + dev: false + + registry.npmmirror.com/is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz} + name: is-typed-array + version: 1.1.12 + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: registry.npmmirror.com/which-typed-array@1.1.13 + dev: false + + registry.npmmirror.com/is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.1.tgz} + name: is-weakmap + version: 2.0.1 + dev: false + + registry.npmmirror.com/is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz} + name: is-weakref + version: 1.0.2 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + dev: false + + registry.npmmirror.com/is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.2.tgz} + name: is-weakset + version: 2.0.2 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + dev: false + + registry.npmmirror.com/isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz} + name: isarray + version: 2.0.5 + dev: false + registry.npmmirror.com/isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz} name: isexe version: 2.0.0 dev: true + registry.npmmirror.com/js-string-escape@1.0.1: + resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/js-string-escape/-/js-string-escape-1.0.1.tgz} + name: js-string-escape + version: 1.0.1 + engines: {node: '>= 0.8'} + dev: true + registry.npmmirror.com/js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz} name: js-yaml @@ -2069,6 +3019,12 @@ packages: version: 1.0.1 dev: true + registry.npmmirror.com/jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz} + name: jsonc-parser + version: 3.2.0 + dev: true + registry.npmmirror.com/levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz} name: levn @@ -2079,6 +3035,13 @@ packages: type-check: registry.npmmirror.com/type-check@0.4.0 dev: true + registry.npmmirror.com/local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz} + name: local-pkg + version: 0.4.3 + engines: {node: '>=14'} + dev: true + registry.npmmirror.com/locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz} name: locate-path @@ -2094,6 +3057,12 @@ packages: version: 4.6.2 dev: true + registry.npmmirror.com/lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz} + name: lodash + version: 4.17.21 + dev: true + registry.npmmirror.com/loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/loupe/-/loupe-2.3.6.tgz} name: loupe @@ -2111,6 +3080,31 @@ packages: yallist: registry.npmmirror.com/yallist@4.0.0 dev: true + registry.npmmirror.com/magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz} + name: magic-string + version: 0.25.9 + dependencies: + sourcemap-codec: registry.npmmirror.com/sourcemap-codec@1.4.8 + + registry.npmmirror.com/magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz} + name: magic-string + version: 0.30.5 + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': registry.npmmirror.com/@jridgewell/sourcemap-codec@1.4.15 + dev: true + + registry.npmmirror.com/md5-hex@3.0.1: + resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/md5-hex/-/md5-hex-3.0.1.tgz} + name: md5-hex + version: 3.0.1 + engines: {node: '>=8'} + dependencies: + blueimp-md5: registry.npmmirror.com/blueimp-md5@2.19.0 + dev: true + registry.npmmirror.com/merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz} name: merge2 @@ -2136,6 +3130,26 @@ packages: brace-expansion: registry.npmmirror.com/brace-expansion@1.1.11 dev: true + registry.npmmirror.com/minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz} + name: minimatch + version: 9.0.3 + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: registry.npmmirror.com/brace-expansion@2.0.1 + dev: true + + registry.npmmirror.com/mlly@1.2.0: + resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mlly/-/mlly-1.2.0.tgz} + name: mlly + version: 1.2.0 + dependencies: + acorn: registry.npmmirror.com/acorn@8.10.0 + pathe: registry.npmmirror.com/pathe@1.1.1 + pkg-types: registry.npmmirror.com/pkg-types@1.0.2 + ufo: registry.npmmirror.com/ufo@1.1.1 + dev: true + registry.npmmirror.com/mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz} name: mrmime @@ -2149,13 +3163,18 @@ packages: version: 2.1.2 dev: true + registry.npmmirror.com/muggle-string@0.2.2: + resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/muggle-string/-/muggle-string-0.2.2.tgz} + name: muggle-string + version: 0.2.2 + dev: true + registry.npmmirror.com/nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz} name: nanoid version: 3.3.6 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true registry.npmmirror.com/natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz} @@ -2163,6 +3182,64 @@ packages: version: 1.4.0 dev: true + registry.npmmirror.com/object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz} + name: object-inspect + version: 1.13.1 + dev: false + + registry.npmmirror.com/object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz} + name: object-is + version: 1.1.5 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + dev: false + + registry.npmmirror.com/object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz} + name: object-keys + version: 1.1.1 + engines: {node: '>= 0.4'} + dev: false + + registry.npmmirror.com/object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz} + name: object.assign + version: 4.1.4 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + object-keys: registry.npmmirror.com/object-keys@1.1.1 + dev: false + + registry.npmmirror.com/object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object.entries/-/object.entries-1.1.7.tgz} + name: object.entries + version: 1.1.7 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + dev: false + + registry.npmmirror.com/object.getprototypeof@1.0.5: + resolution: {integrity: sha512-4G0QiXpoIppBUz5efmxTm/HTbVN2ioGjk/PbsaNvwISFX+saj8muGp6vNuzIdsosFxM4V/kpUVNvy/+9+DVBZQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object.getprototypeof/-/object.getprototypeof-1.0.5.tgz} + name: object.getprototypeof + version: 1.0.5 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + reflect.getprototypeof: registry.npmmirror.com/reflect.getprototypeof@1.0.4 + dev: false + registry.npmmirror.com/once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/once/-/once-1.4.0.tgz} name: once @@ -2194,6 +3271,15 @@ packages: yocto-queue: registry.npmmirror.com/yocto-queue@0.1.0 dev: true + registry.npmmirror.com/p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz} + name: p-limit + version: 4.0.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: registry.npmmirror.com/yocto-queue@1.0.0 + dev: true + registry.npmmirror.com/p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz} name: p-locate @@ -2203,6 +3289,11 @@ packages: p-limit: registry.npmmirror.com/p-limit@3.1.0 dev: true + registry.npmmirror.com/parchment@1.1.4: + resolution: {integrity: sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz} + name: parchment + version: 1.1.4 + registry.npmmirror.com/parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz} name: parent-module @@ -2233,12 +3324,6 @@ packages: engines: {node: '>=8'} dev: true - registry.npmmirror.com/path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz} - name: path-parse - version: 1.0.7 - dev: true - registry.npmmirror.com/path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz} name: path-type @@ -2252,11 +3337,16 @@ packages: version: 1.1.1 dev: true + registry.npmmirror.com/pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz} + name: pathval + version: 1.1.1 + dev: true + registry.npmmirror.com/picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz} name: picocolors version: 1.0.0 - dev: true registry.npmmirror.com/picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz} @@ -2265,6 +3355,16 @@ packages: engines: {node: '>=8.6'} dev: true + registry.npmmirror.com/pkg-types@1.0.2: + resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.2.tgz} + name: pkg-types + version: 1.0.2 + dependencies: + jsonc-parser: registry.npmmirror.com/jsonc-parser@3.2.0 + mlly: registry.npmmirror.com/mlly@1.2.0 + pathe: registry.npmmirror.com/pathe@1.1.1 + dev: true + registry.npmmirror.com/postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz} name: postcss @@ -2274,6 +3374,16 @@ packages: nanoid: registry.npmmirror.com/nanoid@3.3.6 picocolors: registry.npmmirror.com/picocolors@1.0.0 source-map-js: registry.npmmirror.com/source-map-js@1.0.2 + + registry.npmmirror.com/postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz} + name: postcss + version: 8.4.31 + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: registry.npmmirror.com/nanoid@3.3.6 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + source-map-js: registry.npmmirror.com/source-map-js@1.0.2 dev: true registry.npmmirror.com/prelude-ls@1.2.1: @@ -2291,6 +3401,17 @@ packages: hasBin: true dev: true + registry.npmmirror.com/pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pretty-format/-/pretty-format-27.5.1.tgz} + name: pretty-format + version: 27.5.1 + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: registry.npmmirror.com/ansi-regex@5.0.1 + ansi-styles: registry.npmmirror.com/ansi-styles@5.2.0 + react-is: registry.npmmirror.com/react-is@17.0.2 + dev: true + registry.npmmirror.com/pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pretty-format/-/pretty-format-29.7.0.tgz} name: pretty-format @@ -2315,12 +3436,67 @@ packages: version: 1.2.3 dev: true + registry.npmmirror.com/quill-delta@3.6.3: + resolution: {integrity: sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz} + name: quill-delta + version: 3.6.3 + engines: {node: '>=0.10'} + dependencies: + deep-equal: registry.npmmirror.com/deep-equal@1.1.1 + extend: registry.npmmirror.com/extend@3.0.2 + fast-diff: registry.npmmirror.com/fast-diff@1.1.2 + dev: false + + registry.npmmirror.com/quill@1.3.7: + resolution: {integrity: sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz} + name: quill + version: 1.3.7 + dependencies: + clone: registry.npmmirror.com/clone@2.1.2 + deep-equal: registry.npmmirror.com/deep-equal@1.1.1 + eventemitter3: registry.npmmirror.com/eventemitter3@2.0.3 + extend: registry.npmmirror.com/extend@3.0.2 + parchment: registry.npmmirror.com/parchment@1.1.4 + quill-delta: registry.npmmirror.com/quill-delta@3.6.3 + dev: false + + registry.npmmirror.com/react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz} + name: react-is + version: 17.0.2 + dev: true + registry.npmmirror.com/react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/react-is/-/react-is-18.2.0.tgz} name: react-is version: 18.2.0 dev: true + registry.npmmirror.com/reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz} + name: reflect.getprototypeof + version: 1.0.4 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + globalthis: registry.npmmirror.com/globalthis@1.0.3 + which-builtin-type: registry.npmmirror.com/which-builtin-type@1.1.3 + dev: false + + registry.npmmirror.com/regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz} + name: regexp.prototype.flags + version: 1.5.1 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + set-function-name: registry.npmmirror.com/set-function-name@2.0.1 + dev: false + registry.npmmirror.com/resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz} name: resolve-from @@ -2328,17 +3504,6 @@ packages: engines: {node: '>=4'} dev: true - registry.npmmirror.com/resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz} - name: resolve - version: 1.22.1 - hasBin: true - dependencies: - is-core-module: registry.npmmirror.com/is-core-module@2.11.0 - path-parse: registry.npmmirror.com/path-parse@1.0.7 - supports-preserve-symlinks-flag: registry.npmmirror.com/supports-preserve-symlinks-flag@1.0.0 - dev: true - registry.npmmirror.com/reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz} name: reusify @@ -2355,10 +3520,10 @@ packages: glob: registry.npmmirror.com/glob@7.2.3 dev: true - registry.npmmirror.com/rollup@3.20.2: - resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-3.20.2.tgz} + registry.npmmirror.com/rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz} name: rollup - version: 3.20.2 + version: 3.29.4 engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2373,6 +3538,28 @@ packages: queue-microtask: registry.npmmirror.com/queue-microtask@1.2.3 dev: true + registry.npmmirror.com/safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz} + name: safe-array-concat + version: 1.0.1 + engines: {node: '>=0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + isarray: registry.npmmirror.com/isarray@2.0.5 + dev: false + + registry.npmmirror.com/safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz} + name: safe-regex-test + version: 1.0.0 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + is-regex: registry.npmmirror.com/is-regex@1.1.4 + dev: false + registry.npmmirror.com/semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz} name: semver @@ -2383,6 +3570,29 @@ packages: lru-cache: registry.npmmirror.com/lru-cache@6.0.0 dev: true + registry.npmmirror.com/set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz} + name: set-function-length + version: 1.1.1 + engines: {node: '>= 0.4'} + dependencies: + define-data-property: registry.npmmirror.com/define-data-property@1.1.1 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + gopd: registry.npmmirror.com/gopd@1.0.1 + has-property-descriptors: registry.npmmirror.com/has-property-descriptors@1.0.1 + dev: false + + registry.npmmirror.com/set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz} + name: set-function-name + version: 2.0.1 + engines: {node: '>= 0.4'} + dependencies: + define-data-property: registry.npmmirror.com/define-data-property@1.1.1 + functions-have-names: registry.npmmirror.com/functions-have-names@1.2.3 + has-property-descriptors: registry.npmmirror.com/has-property-descriptors@1.0.1 + dev: false + registry.npmmirror.com/shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz} name: shebang-command @@ -2399,6 +3609,22 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz} + name: side-channel + version: 1.0.4 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + object-inspect: registry.npmmirror.com/object-inspect@1.13.1 + dev: false + + registry.npmmirror.com/siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz} + name: siginfo + version: 2.0.0 + dev: true + registry.npmmirror.com/sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sirv/-/sirv-2.0.3.tgz} name: sirv @@ -2422,8 +3648,71 @@ packages: name: source-map-js version: 1.0.2 engines: {node: '>=0.10.0'} + + registry.npmmirror.com/source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz} + name: source-map + version: 0.6.1 + engines: {node: '>=0.10.0'} + + registry.npmmirror.com/sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz} + name: sourcemap-codec + version: 1.4.8 + deprecated: Please use @jridgewell/sourcemap-codec instead + + registry.npmmirror.com/stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz} + name: stackback + version: 0.0.2 dev: true + registry.npmmirror.com/std-env@3.3.2: + resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/std-env/-/std-env-3.3.2.tgz} + name: std-env + version: 3.3.2 + dev: true + + registry.npmmirror.com/stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz} + name: stop-iteration-iterator + version: 1.0.0 + engines: {node: '>= 0.4'} + dependencies: + internal-slot: registry.npmmirror.com/internal-slot@1.0.6 + dev: false + + registry.npmmirror.com/string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz} + name: string.prototype.trim + version: 1.2.8 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + dev: false + + registry.npmmirror.com/string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz} + name: string.prototype.trimend + version: 1.0.7 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + dev: false + + registry.npmmirror.com/string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz} + name: string.prototype.trimstart + version: 1.0.7 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + define-properties: registry.npmmirror.com/define-properties@1.2.1 + es-abstract: registry.npmmirror.com/es-abstract@1.22.3 + dev: false + registry.npmmirror.com/strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz} name: strip-ansi @@ -2440,6 +3729,14 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/strip-literal@1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/strip-literal/-/strip-literal-1.0.1.tgz} + name: strip-literal + version: 1.0.1 + dependencies: + acorn: registry.npmmirror.com/acorn@8.10.0 + dev: true + registry.npmmirror.com/supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz} name: supports-color @@ -2449,19 +3746,45 @@ packages: has-flag: registry.npmmirror.com/has-flag@4.0.0 dev: true - registry.npmmirror.com/supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz} - name: supports-preserve-symlinks-flag - version: 1.0.0 - engines: {node: '>= 0.4'} - dev: true - registry.npmmirror.com/text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz} name: text-table version: 0.2.0 dev: true + registry.npmmirror.com/time-zone@1.0.0: + resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/time-zone/-/time-zone-1.0.0.tgz} + name: time-zone + version: 1.0.0 + engines: {node: '>=4'} + dev: true + + registry.npmmirror.com/tinybench@2.4.0: + resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tinybench/-/tinybench-2.4.0.tgz} + name: tinybench + version: 2.4.0 + dev: true + + registry.npmmirror.com/tinypool@0.4.0: + resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tinypool/-/tinypool-0.4.0.tgz} + name: tinypool + version: 0.4.0 + engines: {node: '>=14.0.0'} + dev: true + + registry.npmmirror.com/tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tinyspy/-/tinyspy-2.2.0.tgz} + name: tinyspy + version: 2.2.0 + engines: {node: '>=14.0.0'} + dev: true + + registry.npmmirror.com/to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz} + name: to-fast-properties + version: 2.0.0 + engines: {node: '>=4'} + registry.npmmirror.com/to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz} name: to-regex-range @@ -2499,6 +3822,13 @@ packages: prelude-ls: registry.npmmirror.com/prelude-ls@1.2.1 dev: true + registry.npmmirror.com/type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz} + name: type-detect + version: 4.0.8 + engines: {node: '>=4'} + dev: true + registry.npmmirror.com/type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz} name: type-fest @@ -2506,6 +3836,77 @@ packages: engines: {node: '>=10'} dev: true + registry.npmmirror.com/typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz} + name: typed-array-buffer + version: 1.0.0 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + get-intrinsic: registry.npmmirror.com/get-intrinsic@1.2.2 + is-typed-array: registry.npmmirror.com/is-typed-array@1.1.12 + dev: false + + registry.npmmirror.com/typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz} + name: typed-array-byte-length + version: 1.0.0 + engines: {node: '>= 0.4'} + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + for-each: registry.npmmirror.com/for-each@0.3.3 + has-proto: registry.npmmirror.com/has-proto@1.0.1 + is-typed-array: registry.npmmirror.com/is-typed-array@1.1.12 + dev: false + + registry.npmmirror.com/typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz} + name: typed-array-byte-offset + version: 1.0.0 + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: registry.npmmirror.com/available-typed-arrays@1.0.5 + call-bind: registry.npmmirror.com/call-bind@1.0.5 + for-each: registry.npmmirror.com/for-each@0.3.3 + has-proto: registry.npmmirror.com/has-proto@1.0.1 + is-typed-array: registry.npmmirror.com/is-typed-array@1.1.12 + dev: false + + registry.npmmirror.com/typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.4.tgz} + name: typed-array-length + version: 1.0.4 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + for-each: registry.npmmirror.com/for-each@0.3.3 + is-typed-array: registry.npmmirror.com/is-typed-array@1.1.12 + dev: false + + registry.npmmirror.com/typescript@5.0.3: + resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/typescript/-/typescript-5.0.3.tgz} + name: typescript + version: 5.0.3 + engines: {node: '>=12.20'} + hasBin: true + dev: true + + registry.npmmirror.com/ufo@1.1.1: + resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ufo/-/ufo-1.1.1.tgz} + name: ufo + version: 1.1.1 + dev: true + + registry.npmmirror.com/unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz} + name: unbox-primitive + version: 1.0.2 + dependencies: + call-bind: registry.npmmirror.com/call-bind@1.0.5 + has-bigints: registry.npmmirror.com/has-bigints@1.0.2 + has-symbols: registry.npmmirror.com/has-symbols@1.0.3 + which-boxed-primitive: registry.npmmirror.com/which-boxed-primitive@1.0.2 + dev: false + registry.npmmirror.com/uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz} name: uri-js @@ -2514,10 +3915,69 @@ packages: punycode: registry.npmmirror.com/punycode@2.3.0 dev: true - registry.npmmirror.com/vite@4.2.1: - resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.2.1.tgz} + registry.npmmirror.com/uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/uuid/-/uuid-9.0.0.tgz} + name: uuid + version: 9.0.0 + hasBin: true + dev: true + + registry.npmmirror.com/vite-node@0.30.1(@types/node@18.15.11): + resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite-node/-/vite-node-0.30.1.tgz} + id: registry.npmmirror.com/vite-node/0.30.1 + name: vite-node + version: 0.30.1 + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: registry.npmmirror.com/cac@6.7.14 + debug: registry.npmmirror.com/debug@4.3.4 + mlly: registry.npmmirror.com/mlly@1.2.0 + pathe: registry.npmmirror.com/pathe@1.1.1 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + vite: registry.npmmirror.com/vite@4.5.0(@types/node@18.15.11) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + registry.npmmirror.com/vite-plugin-top-level-await@1.3.0(vite@4.3.2): + resolution: {integrity: sha512-owIfsgWudMlQODWJSwp0sQB3AZZu3qsMygeBjZy8CyjEk6OB9AGd8lHqmgwrcEqgvy9N58lYxSBLVk3/4ejEiA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.3.0.tgz} + id: registry.npmmirror.com/vite-plugin-top-level-await/1.3.0 + name: vite-plugin-top-level-await + version: 1.3.0 + peerDependencies: + vite: '>=2.8' + dependencies: + '@rollup/plugin-virtual': registry.npmmirror.com/@rollup/plugin-virtual@3.0.1 + '@swc/core': registry.npmmirror.com/@swc/core@1.3.44 + uuid: registry.npmmirror.com/uuid@9.0.0 + vite: registry.npmmirror.com/vite@4.3.2 + transitivePeerDependencies: + - rollup + dev: true + + registry.npmmirror.com/vite-plugin-wasm@3.2.2(vite@4.3.2): + resolution: {integrity: sha512-cdbBUNR850AEoMd5nvLmnyeq63CSfoP1ctD/L2vLk/5+wsgAPlAVAzUK5nGKWO/jtehNlrSSHLteN+gFQw7VOA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite-plugin-wasm/-/vite-plugin-wasm-3.2.2.tgz} + id: registry.npmmirror.com/vite-plugin-wasm/3.2.2 + name: vite-plugin-wasm + version: 3.2.2 + peerDependencies: + vite: ^2 || ^3 || ^4 + dependencies: + vite: registry.npmmirror.com/vite@4.3.2 + dev: true + + registry.npmmirror.com/vite@4.3.2: + resolution: {integrity: sha512-9R53Mf+TBoXCYejcL+qFbZde+eZveQLDYd9XgULILLC1a5ZwPaqgmdVpL8/uvw2BM/1TzetWjglwm+3RO+xTyw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.3.2.tgz} name: vite - version: 4.2.1 + version: 4.3.2 engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2543,12 +4003,219 @@ packages: dependencies: esbuild: registry.npmmirror.com/esbuild@0.17.15 postcss: registry.npmmirror.com/postcss@8.4.21 - resolve: registry.npmmirror.com/resolve@1.22.1 - rollup: registry.npmmirror.com/rollup@3.20.2 + rollup: registry.npmmirror.com/rollup@3.29.4 optionalDependencies: fsevents: registry.npmmirror.com/fsevents@2.3.2 dev: true + registry.npmmirror.com/vite@4.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.5.0.tgz} + id: registry.npmmirror.com/vite/4.5.0 + name: vite + version: 4.5.0 + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': registry.npmmirror.com/@types/node@18.15.11 + esbuild: registry.npmmirror.com/esbuild@0.18.20 + postcss: registry.npmmirror.com/postcss@8.4.31 + rollup: registry.npmmirror.com/rollup@3.29.4 + optionalDependencies: + fsevents: registry.npmmirror.com/fsevents@2.3.2 + dev: true + + registry.npmmirror.com/vitest@0.30.1(@vitest/ui@0.34.6): + resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vitest/-/vitest-0.30.1.tgz} + id: registry.npmmirror.com/vitest/0.30.1 + name: vitest + version: 0.30.1 + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': registry.npmmirror.com/@types/chai@4.3.4 + '@types/chai-subset': registry.npmmirror.com/@types/chai-subset@1.3.3 + '@types/node': registry.npmmirror.com/@types/node@18.15.11 + '@vitest/expect': registry.npmmirror.com/@vitest/expect@0.30.1 + '@vitest/runner': registry.npmmirror.com/@vitest/runner@0.30.1 + '@vitest/snapshot': registry.npmmirror.com/@vitest/snapshot@0.30.1 + '@vitest/spy': registry.npmmirror.com/@vitest/spy@0.30.1 + '@vitest/ui': registry.npmmirror.com/@vitest/ui@0.34.6(vitest@0.30.1) + '@vitest/utils': registry.npmmirror.com/@vitest/utils@0.30.1 + acorn: registry.npmmirror.com/acorn@8.10.0 + acorn-walk: registry.npmmirror.com/acorn-walk@8.2.0 + cac: registry.npmmirror.com/cac@6.7.14 + chai: registry.npmmirror.com/chai@4.3.7 + concordance: registry.npmmirror.com/concordance@5.0.4 + debug: registry.npmmirror.com/debug@4.3.4 + local-pkg: registry.npmmirror.com/local-pkg@0.4.3 + magic-string: registry.npmmirror.com/magic-string@0.30.5 + pathe: registry.npmmirror.com/pathe@1.1.1 + picocolors: registry.npmmirror.com/picocolors@1.0.0 + source-map: registry.npmmirror.com/source-map@0.6.1 + std-env: registry.npmmirror.com/std-env@3.3.2 + strip-literal: registry.npmmirror.com/strip-literal@1.0.1 + tinybench: registry.npmmirror.com/tinybench@2.4.0 + tinypool: registry.npmmirror.com/tinypool@0.4.0 + vite: registry.npmmirror.com/vite@4.5.0(@types/node@18.15.11) + vite-node: registry.npmmirror.com/vite-node@0.30.1(@types/node@18.15.11) + why-is-node-running: registry.npmmirror.com/why-is-node-running@2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + registry.npmmirror.com/vue-template-compiler@2.7.15: + resolution: {integrity: sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz} + name: vue-template-compiler + version: 2.7.15 + dependencies: + de-indent: registry.npmmirror.com/de-indent@1.0.2 + he: registry.npmmirror.com/he@1.2.0 + dev: true + + registry.npmmirror.com/vue-tsc@1.4.2(typescript@5.0.3): + resolution: {integrity: sha512-8VFjVekJuFtFG+N4rEimoR0OvNubhoTIMl2dlvbpyAD40LVPR1PN2SUc2qZPnWGGRsXZAVmFgiBHX0RB20HGyA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.4.2.tgz} + id: registry.npmmirror.com/vue-tsc/1.4.2 + name: vue-tsc + version: 1.4.2 + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-language-core': registry.npmmirror.com/@volar/vue-language-core@1.4.2 + '@volar/vue-typescript': registry.npmmirror.com/@volar/vue-typescript@1.4.2(typescript@5.0.3) + semver: registry.npmmirror.com/semver@7.5.4 + typescript: registry.npmmirror.com/typescript@5.0.3 + dev: true + + registry.npmmirror.com/vue@3.2.47: + resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz} + name: vue + version: 3.2.47 + dependencies: + '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom@3.2.47 + '@vue/compiler-sfc': registry.npmmirror.com/@vue/compiler-sfc@3.2.47 + '@vue/runtime-dom': registry.npmmirror.com/@vue/runtime-dom@3.2.47 + '@vue/server-renderer': registry.npmmirror.com/@vue/server-renderer@3.2.47(vue@3.2.47) + '@vue/shared': registry.npmmirror.com/@vue/shared@3.2.47 + + registry.npmmirror.com/well-known-symbols@2.0.0: + resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz} + name: well-known-symbols + version: 2.0.0 + engines: {node: '>=6'} + dev: true + + registry.npmmirror.com/which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz} + name: which-boxed-primitive + version: 1.0.2 + dependencies: + is-bigint: registry.npmmirror.com/is-bigint@1.0.4 + is-boolean-object: registry.npmmirror.com/is-boolean-object@1.1.2 + is-number-object: registry.npmmirror.com/is-number-object@1.0.7 + is-string: registry.npmmirror.com/is-string@1.0.7 + is-symbol: registry.npmmirror.com/is-symbol@1.0.4 + dev: false + + registry.npmmirror.com/which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz} + name: which-builtin-type + version: 1.1.3 + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: registry.npmmirror.com/function.prototype.name@1.1.6 + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + is-async-function: registry.npmmirror.com/is-async-function@2.0.0 + is-date-object: registry.npmmirror.com/is-date-object@1.0.5 + is-finalizationregistry: registry.npmmirror.com/is-finalizationregistry@1.0.2 + is-generator-function: registry.npmmirror.com/is-generator-function@1.0.10 + is-regex: registry.npmmirror.com/is-regex@1.1.4 + is-weakref: registry.npmmirror.com/is-weakref@1.0.2 + isarray: registry.npmmirror.com/isarray@2.0.5 + which-boxed-primitive: registry.npmmirror.com/which-boxed-primitive@1.0.2 + which-collection: registry.npmmirror.com/which-collection@1.0.1 + which-typed-array: registry.npmmirror.com/which-typed-array@1.1.13 + dev: false + + registry.npmmirror.com/which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which-collection/-/which-collection-1.0.1.tgz} + name: which-collection + version: 1.0.1 + dependencies: + is-map: registry.npmmirror.com/is-map@2.0.2 + is-set: registry.npmmirror.com/is-set@2.0.2 + is-weakmap: registry.npmmirror.com/is-weakmap@2.0.1 + is-weakset: registry.npmmirror.com/is-weakset@2.0.2 + dev: false + + registry.npmmirror.com/which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.13.tgz} + name: which-typed-array + version: 1.1.13 + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: registry.npmmirror.com/available-typed-arrays@1.0.5 + call-bind: registry.npmmirror.com/call-bind@1.0.5 + for-each: registry.npmmirror.com/for-each@0.3.3 + gopd: registry.npmmirror.com/gopd@1.0.1 + has-tostringtag: registry.npmmirror.com/has-tostringtag@1.0.0 + dev: false + registry.npmmirror.com/which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which/-/which-2.0.2.tgz} name: which @@ -2559,6 +4226,17 @@ packages: isexe: registry.npmmirror.com/isexe@2.0.0 dev: true + registry.npmmirror.com/why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz} + name: why-is-node-running + version: 2.2.2 + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: registry.npmmirror.com/siginfo@2.0.0 + stackback: registry.npmmirror.com/stackback@0.0.2 + dev: true + registry.npmmirror.com/wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz} name: wrappy @@ -2577,3 +4255,10 @@ packages: version: 0.1.0 engines: {node: '>=10'} dev: true + + registry.npmmirror.com/yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.0.0.tgz} + name: yocto-queue + version: 1.0.0 + engines: {node: '>=12.20'} + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a3f23453..114b6e27 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - "loro-js" - "crates/loro-wasm" + - "examples/loro-quill"