chore: bump collab (#4348)

* chore: bump collab

* chore: optimize import

* chore: bump

* chore: disable ai test
This commit is contained in:
Nathan.fooo 2024-01-10 11:15:05 +08:00 committed by GitHub
parent 347698f68f
commit 190fae196f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 150 additions and 60 deletions

View File

@ -139,7 +139,7 @@ checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
[[package]]
name = "app-error"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"reqwest",
@ -147,6 +147,7 @@ dependencies = [
"serde_json",
"serde_repr",
"thiserror",
"tokio",
"url",
"uuid",
]
@ -407,9 +408,9 @@ dependencies = [
[[package]]
name = "brotli"
version = "3.3.4"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@ -418,9 +419,9 @@ dependencies = [
[[package]]
name = "brotli-decompressor"
version = "2.3.4"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744"
checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@ -683,12 +684,13 @@ dependencies = [
[[package]]
name = "client-api"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
"async-trait",
"bincode",
"brotli",
"bytes",
"collab",
"collab-entity",
@ -1147,7 +1149,7 @@ dependencies = [
"cssparser-macros",
"dtoa-short",
"itoa 1.0.6",
"phf 0.11.2",
"phf 0.8.0",
"smallvec",
]
@ -1258,7 +1260,7 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
[[package]]
name = "database-entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
@ -2505,7 +2507,7 @@ dependencies = [
[[package]]
name = "gotrue"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"futures-util",
@ -2521,7 +2523,7 @@ dependencies = [
[[package]]
name = "gotrue-entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
@ -2930,7 +2932,7 @@ dependencies = [
[[package]]
name = "infra"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"reqwest",
@ -3935,7 +3937,6 @@ version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
dependencies = [
"phf_macros 0.11.2",
"phf_shared 0.11.2",
]
@ -4027,19 +4028,6 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "phf_macros"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
dependencies = [
"phf_generator 0.11.2",
"phf_shared 0.11.2",
"proc-macro2",
"quote",
"syn 2.0.47",
]
[[package]]
name = "phf_shared"
version = "0.8.0"
@ -4587,7 +4575,7 @@ dependencies = [
[[package]]
name = "realtime-entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"bincode",
@ -4609,7 +4597,7 @@ dependencies = [
[[package]]
name = "realtime-protocol"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"bincode",
@ -5256,7 +5244,7 @@ dependencies = [
[[package]]
name = "shared_entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
@ -7039,7 +7027,7 @@ dependencies = [
[[package]]
name = "workspace-template"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"async-trait",

View File

@ -57,7 +57,7 @@ custom-protocol = ["tauri/custom-protocol"]
# Run the script:
# scripts/tool/update_client_api_rev.sh new_rev_id
# ⚠️⚠️⚠️️
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "2159c68688a69af83e1c8d07cf17c40f0c315566" }
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "284e2bf63800561c75a4eb36ce95692f3fbcca56" }
# Please use the following script to update collab.
# Working directory: frontend
#

View File

@ -95,6 +95,21 @@ dependencies = [
"pin-project",
]
[[package]]
name = "alloc-no-stdlib"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
[[package]]
name = "alloc-stdlib"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
dependencies = [
"alloc-no-stdlib",
]
[[package]]
name = "allocator-api2"
version = "0.2.16"
@ -125,7 +140,7 @@ checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
[[package]]
name = "app-error"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"reqwest",
@ -133,6 +148,7 @@ dependencies = [
"serde_json",
"serde_repr",
"thiserror",
"tokio",
"url",
"uuid",
]
@ -460,6 +476,27 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "brotli"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
"brotli-decompressor",
]
[[package]]
name = "brotli-decompressor"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
]
[[package]]
name = "bstr"
version = "1.6.2"
@ -620,12 +657,13 @@ dependencies = [
[[package]]
name = "client-api"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
"async-trait",
"bincode",
"brotli",
"bytes",
"collab",
"collab-entity",
@ -1155,7 +1193,7 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
[[package]]
name = "database-entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
@ -2306,7 +2344,7 @@ dependencies = [
[[package]]
name = "gotrue"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"futures-util",
@ -2322,7 +2360,7 @@ dependencies = [
[[package]]
name = "gotrue-entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
@ -2670,7 +2708,7 @@ dependencies = [
[[package]]
name = "infra"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"reqwest",
@ -2794,6 +2832,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"async-trait",
"brotli",
"bytes",
"chrono",
"futures-core",
@ -4036,7 +4075,7 @@ dependencies = [
[[package]]
name = "realtime-entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"bincode",
@ -4058,7 +4097,7 @@ dependencies = [
[[package]]
name = "realtime-protocol"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"bincode",
@ -4636,7 +4675,7 @@ dependencies = [
[[package]]
name = "shared_entity"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"app-error",
@ -5934,7 +5973,7 @@ dependencies = [
[[package]]
name = "workspace-template"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=2159c68688a69af83e1c8d07cf17c40f0c315566#2159c68688a69af83e1c8d07cf17c40f0c315566"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=284e2bf63800561c75a4eb36ce95692f3fbcca56#284e2bf63800561c75a4eb36ce95692f3fbcca56"
dependencies = [
"anyhow",
"async-trait",

View File

@ -107,7 +107,7 @@ incremental = false
# Run the script:
# scripts/tool/update_client_api_rev.sh new_rev_id
# ⚠️⚠️⚠️️
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "2159c68688a69af83e1c8d07cf17c40f0c315566" }
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "284e2bf63800561c75a4eb36ce95692f3fbcca56" }
# Please use the following script to update collab.
# Working directory: frontend
#

View File

@ -1 +1 @@
mod completion_test;
// mod completion_test;

View File

@ -154,6 +154,12 @@ impl DocumentManager {
.cloud_service
.get_document_doc_state(doc_id, &self.user_service.workspace_id()?)
.await?;
event!(
tracing::Level::DEBUG,
"get document from cloud service: {}, size:{}",
doc_id,
doc_state.len()
);
}
let uid = self.user_service.user_id()?;

View File

@ -4,6 +4,7 @@ use std::sync::Arc;
use anyhow::{anyhow, Error};
use client_api::entity::workspace_dto::{CreateWorkspaceMember, WorkspaceMemberChangeset};
use client_api::entity::{AFRole, AFWorkspace, AuthProvider, CollabParams, CreateCollabParams};
use client_api::ClientConfiguration;
use collab::core::collab::CollabDocState;
use collab_entity::CollabObject;
use parking_lot::RwLock;
@ -79,8 +80,12 @@ where
"GOTRUE_ADMIN_PASSWORD is not set. Please set it to the admin password for the test server"
)
})?;
let admin_client =
client_api::Client::new(client.base_url(), client.ws_addr(), client.gotrue_url());
let admin_client = client_api::Client::new(
client.base_url(),
client.ws_addr(),
client.gotrue_url(),
ClientConfiguration::default(),
);
admin_client
.sign_in_password(&admin_email, &admin_password)
.await?;
@ -238,15 +243,13 @@ where
let collab_object = collab_object.clone();
FutureResult::new(async move {
let client = try_get_client?;
let params = CreateCollabParams::new(
collab_object.workspace_id.clone(),
CollabParams {
let params = CreateCollabParams {
workspace_id: collab_object.workspace_id.clone(),
object_id: collab_object.object_id.clone(),
encoded_collab_v1: data,
collab_type: collab_object.collab_type.clone(),
override_if_exist,
},
);
};
client.create_collab(params).await?;
Ok(())
})

View File

@ -8,7 +8,7 @@ use client_api::notify::{TokenState, TokenStateReceiver};
use client_api::ws::{
ConnectState, WSClient, WSClientConfig, WSConnectStateReceiver, WebSocketChannel,
};
use client_api::Client;
use client_api::{Client, ClientConfiguration};
use tokio::sync::watch;
use tokio_stream::wrappers::WatchStream;
use tracing::{error, event, info};
@ -45,7 +45,14 @@ pub struct AppFlowyCloudServer {
impl AppFlowyCloudServer {
pub fn new(config: AFCloudConfiguration, enable_sync: bool, device_id: String) -> Self {
let api_client = AFCloudClient::new(&config.base_url, &config.ws_base_url, &config.gotrue_url);
let api_client = AFCloudClient::new(
&config.base_url,
&config.ws_base_url,
&config.gotrue_url,
ClientConfiguration::default()
.with_compression_buffer_size(10240)
.with_compression_quality(8),
);
let token_state_rx = api_client.subscribe_token_state();
let enable_sync = Arc::new(AtomicBool::new(enable_sync));
let network_reachable = Arc::new(AtomicBool::new(true));

View File

@ -1,3 +1,4 @@
use client_api::ClientConfiguration;
use std::collections::HashMap;
use std::sync::Arc;
@ -29,11 +30,20 @@ pub fn af_cloud_server(config: AFCloudConfiguration) -> Arc<AppFlowyCloudServer>
}
pub async fn generate_sign_in_url(user_email: &str, config: &AFCloudConfiguration) -> String {
let client = client_api::Client::new(&config.base_url, &config.ws_base_url, &config.gotrue_url);
let client = client_api::Client::new(
&config.base_url,
&config.ws_base_url,
&config.gotrue_url,
ClientConfiguration::default(),
);
let admin_email = std::env::var("GOTRUE_ADMIN_EMAIL").unwrap();
let admin_password = std::env::var("GOTRUE_ADMIN_PASSWORD").unwrap();
let admin_client =
client_api::Client::new(client.base_url(), client.ws_addr(), client.gotrue_url());
let admin_client = client_api::Client::new(
client.base_url(),
client.ws_addr(),
client.gotrue_url(),
ClientConfiguration::default(),
);
admin_client
.sign_in_password(&admin_email, &admin_password)
.await

View File

@ -398,13 +398,18 @@ where
}
let encoded_collab = doc.get_encoded_collab_v1();
info!(
"import collab:{} with len: {}",
new_object_id,
encoded_collab.doc_state.len()
);
if let Err(err) = w_txn.flush_doc(
new_uid,
&new_object_id,
encoded_collab.state_vector.to_vec(),
encoded_collab.doc_state.to_vec(),
) {
tracing::error!("import collab:{} failed: {:?}", new_object_id, err);
error!("import collab:{} failed: {:?}", new_object_id, err);
}
} else {
event!(tracing::Level::ERROR, "decode v1 failed");
@ -630,7 +635,7 @@ pub async fn upload_imported_data(
// Upload
let mut size_counter = 0;
let mut objects: Vec<UserCollabParams> = vec![];
let upload_size_limit = 2 * 1024 * 1024;
let upload_size_limit = 4 * 1024 * 1024;
for (collab_type, encoded_collab_by_oid) in object_by_collab_type {
info!(
"Batch import collab:{} ids: {:?}",
@ -686,6 +691,14 @@ async fn batch_create(
size_counter: &usize,
objects: Vec<UserCollabParams>,
) {
if objects.len() == 1 && size_counter > &(4 * 1024 * 1024) {
info!(
"Skip upload collab object: {}, payload size: {}",
objects[0].object_id, size_counter
);
return;
}
let ids = objects
.iter()
.map(|o| o.object_id.clone())

View File

@ -22,3 +22,7 @@ validator = "0.16.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
zip = { version = "0.6.6", features = ["deflate"] }
brotli = { version = "3.4.0", optional = true }
[features]
compression = ["brotli"]

View File

@ -0,0 +1,17 @@
use brotli::{CompressorReader, Decompressor};
use std::io;
use std::io::Read;
pub fn compress(data: &[u8], quality: u32, buffer_size: usize) -> io::Result<Vec<u8>> {
let mut compressor = CompressorReader::new(data, buffer_size, quality, 22);
let mut compressed_data = Vec::new();
compressor.read_to_end(&mut compressed_data)?;
Ok(compressed_data)
}
pub fn decompress(data: &[u8], buffer_size: usize) -> io::Result<Vec<u8>> {
let mut decompressor = Decompressor::new(data, buffer_size);
let mut decompressed_data = Vec::new();
decompressor.read_to_end(&mut decompressed_data)?;
Ok(decompressed_data)
}

View File

@ -4,6 +4,9 @@ pub mod box_any;
#[cfg(not(target_arch = "wasm32"))]
pub mod file_util;
#[cfg(feature = "compression")]
pub mod compression;
pub mod future;
pub mod ref_map;
pub mod util;