You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by gi...@apache.org on 2024/06/07 16:41:47 UTC

(opendal) branch gh-pages updated: deploy: 5b892088a2eeeaa2af60f88e4e76e1c3872621a9

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/opendal.git


The following commit(s) were added to refs/heads/gh-pages by this push:
     new 57e1750ef1 deploy: 5b892088a2eeeaa2af60f88e4e76e1c3872621a9
57e1750ef1 is described below

commit 57e1750ef1fc7a561c2f88d152137e0bf3ae443b
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Fri Jun 7 16:41:40 2024 +0000

    deploy: 5b892088a2eeeaa2af60f88e4e76e1c3872621a9
---
 404.html                                           |   8 +-
 assets/css/styles.b669fb25.css                     |   1 -
 assets/css/styles.d7ed97f5.css                     |   1 +
 .../basic-57d377a4cfc767b6779ce2b58560d1be.rs      |  43 --
 assets/js/054cd2fb.10bef45e.js                     |   1 -
 assets/js/0605a481.f968e2ed.js                     |   1 -
 assets/js/093f5f04.6b4f76aa.js                     |   1 -
 assets/js/09d8124e.e93f17fc.js                     |   1 -
 assets/js/136e1c50.143870a5.js                     |   1 -
 .../{14eb3368.f2b17714.js => 14eb3368.b4f48fb4.js} |   2 +-
 assets/js/151cd40f.ac9bf356.js                     |   1 -
 assets/js/170f36cb.32944e3f.js                     |   1 -
 .../{17896441.8e4c25ff.js => 17896441.5977d4f4.js} |   2 +-
 assets/js/1957547a.613f2979.js                     |   1 -
 assets/js/22d8fa67.e9db63bb.js                     |   1 -
 assets/js/29b208a4.1e4d0539.js                     |   1 -
 assets/js/2cbf1097.4a99635b.js                     |   1 -
 assets/js/2cdf76dd.22c4eec9.js                     |   1 +
 assets/js/3632610d.d01bb24e.js                     |   1 -
 assets/js/381c04e3.7e734e92.js                     |   1 -
 assets/js/39a95de5.3aa9fcf2.js                     |   1 -
 assets/js/42347498.4120d490.js                     |   1 -
 assets/js/434bbc94.046b0253.js                     |   1 -
 assets/js/4e2d8f56.b5ff424a.js                     |   1 -
 assets/js/500d55cb.4e649200.js                     |   1 -
 assets/js/570de2ed.64cb45b1.js                     |   1 +
 assets/js/57a16c1d.2ab2a24b.js                     |   1 -
 assets/js/58c94347.0e6c1415.js                     |   1 +
 assets/js/592d1076.eb63666e.js                     |   1 -
 assets/js/621b831b.8967cc3b.js                     |   1 -
 assets/js/65bf2b43.2b7d9cc0.js                     |   1 -
 assets/js/67ecc70e.6b0938ac.js                     |   1 -
 assets/js/6a41242b.cb96ea52.js                     |   1 -
 assets/js/6dc695d1.68a1ed52.js                     |   1 -
 assets/js/6f4d3fa1.247c932e.js                     |   1 -
 assets/js/7263c0b5.47af6055.js                     |   1 -
 assets/js/7345bab9.6d12ac11.js                     |   1 +
 assets/js/8070e160.b69fd20f.js                     |   1 +
 assets/js/8070e160.c482d60b.js                     |   1 -
 assets/js/8cc9519e.eaf21a7b.js                     |   1 -
 assets/js/8f4159f2.50e20ba2.js                     |   1 -
 assets/js/8fb00c63.08ef0985.js                     |   1 -
 assets/js/935f2afb.9eccbbb9.js                     |   1 +
 assets/js/935f2afb.e36506d2.js                     |   1 -
 assets/js/939f74f6.b95ccb70.js                     |   1 -
 assets/js/a0405932.b4c85c58.js                     |   1 -
 assets/js/a0def06b.687afa30.js                     |   1 -
 .../{a94703ab.cefa3005.js => a94703ab.dc27e969.js} |   2 +-
 assets/js/b114cefa.ff7ae03c.js                     |   1 -
 assets/js/b56f9725.f3aaf3e9.js                     |   1 -
 assets/js/b5990c80.d5933b2c.js                     |   1 +
 assets/js/bb5b2057.09215f24.js                     |   1 -
 assets/js/c0600a1b.e48f72d2.js                     |   1 -
 assets/js/c46c6b55.770d7cb2.js                     |   1 -
 assets/js/c4f5d8e4.22eb3cf5.js                     |   1 -
 assets/js/c4f5d8e4.36714769.js                     |   1 +
 assets/js/c6ab695b.ee5c233f.js                     |   1 -
 assets/js/c8a4ba5b.fc478763.js                     |   1 -
 assets/js/cc0be893.40ab4ac0.js                     |   1 +
 assets/js/cc62039a.7bb9693a.js                     |   1 -
 assets/js/d3c0d8d5.a49ef7ad.js                     |   1 -
 assets/js/ddccef4c.b1d51f8a.js                     |   1 -
 assets/js/e19a6781.cedaa5e2.js                     |   1 -
 assets/js/e892cec6.b94f4b19.js                     |   1 -
 assets/js/eec267e4.deb9acd5.js                     |   1 -
 assets/js/f1ca5a39.5d01c02f.js                     |   1 -
 assets/js/f9145722.9e3f4891.js                     |   1 -
 assets/js/fde7cc64.e990cc1a.js                     |   1 -
 assets/js/main.490d69d8.js                         |   2 +
 ...js.LICENSE.txt => main.490d69d8.js.LICENSE.txt} |   0
 assets/js/main.e58ac1f5.js                         |   2 -
 assets/js/runtime~main.7a109b7c.js                 |   1 +
 assets/js/runtime~main.e006eb5f.js                 |   1 -
 blog/apache-opendal-graduated/index.html           |   8 +-
 .../index.html                                     |   8 +-
 .../index.html                                     |   8 +-
 blog/archive/index.html                            |   8 +-
 blog/how-opendal-read-data/index.html              |   8 +-
 blog/index.html                                    |   8 +-
 blog/opendal-access-data-freely/index.html         |   8 +-
 blog/opendal-entered-apache-incubator/index.html   |   8 +-
 blog/owo-1/index.html                              |   8 +-
 blog/tags/announcement/index.html                  |   8 +-
 blog/tags/index.html                               |   8 +-
 blog/tags/internal/index.html                      |   8 +-
 blog/tags/owo/index.html                           |   8 +-
 community/category/committers/index.html           |   8 +-
 community/category/events/index.html               |   8 +-
 community/category/pmc-members/index.html          |   8 +-
 community/category/reference/index.html            |   8 +-
 community/committers/onboarding/index.html         |   8 +-
 .../reference/generate_release_note/index.html     |   8 +-
 .../committers/reference/setup_gpg/index.html      |   8 +-
 community/committers/release/index.html            |   8 +-
 .../request_for_adding_secrets/index.html          |   8 +-
 community/committers/verify/index.html             |   8 +-
 community/events/gsoc-proposal-guide/index.html    |   8 +-
 community/events/ospp-proposal-guide/index.html    |   8 +-
 community/index.html                               |   8 +-
 community/maturity/index.html                      |   8 +-
 community/pmc_members/board-reporting/index.html   |   8 +-
 .../pmc_members/nominate-committer/index.html      |   8 +-
 .../pmc_members/nominate-pmc-member/index.html     |   8 +-
 community/pmc_members/onboarding/index.html        |   8 +-
 community/security/index.html                      |   8 +-
 docs/binding-java/index.html                       |  15 +
 docs/binding-nodejs/index.html                     |  15 +
 docs/binding-python/index.html                     |  15 +
 docs/category/integrations/index.html              |  14 -
 docs/category/services/index.html                  |  14 -
 docs/dav-server/index.html                         |  15 +
 docs/integrations/dav-server-opendalfs/index.html  |  15 -
 docs/integrations/object_store_opendal/index.html  |  80 ----
 docs/lua/classes/opendal.metadata.html             |   2 +-
 docs/lua/classes/opendal.operator.html             |   2 +-
 docs/lua/index.html                                |   2 +-
 docs/nodejs/classes/BlockingLister.html            |   4 +-
 docs/nodejs/classes/BlockingReader.html            |   4 +-
 docs/nodejs/classes/BlockingWriter.html            |   8 +-
 docs/nodejs/classes/Capability.html                |  74 ++--
 docs/nodejs/classes/Entry.html                     |   4 +-
 docs/nodejs/classes/ExternalObject.html            |   4 +-
 docs/nodejs/classes/Layer.html                     |   2 +-
 docs/nodejs/classes/Lister.html                    |   4 +-
 docs/nodejs/classes/Metadata.html                  |  18 +-
 docs/nodejs/classes/Operator.html                  |  66 +--
 docs/nodejs/classes/Reader.html                    |   6 +-
 docs/nodejs/classes/RetryLayer.html                |  14 +-
 docs/nodejs/classes/Writer.html                    |   8 +-
 docs/nodejs/interfaces/ListOptions.html            |   4 +-
 docs/nodejs/interfaces/PresignedRequest.html       |   8 +-
 docs/object-store/index.html                       |  15 +
 docs/overview/index.html                           |   8 +-
 docs/python/opendal.html                           | 446 ++++++++++-----------
 docs/python/search.js                              |   2 +-
 docs/quickstart/index.html                         |  12 +-
 docs/rust-core/index.html                          |  46 +++
 docs/services/atomicserver/index.html              |  45 ---
 docs/services/azblob/index.html                    |  50 ---
 docs/services/azdls/index.html                     |  49 ---
 docs/services/cacache/index.html                   |  41 --
 docs/services/cos/index.html                       |  45 ---
 docs/services/d1/index.html                        |  46 ---
 docs/services/dashmap/index.html                   |  30 --
 docs/services/dropbox/index.html                   |  60 ---
 docs/services/etcd/index.html                      |  47 ---
 docs/services/foundationdb/index.html              |  43 --
 docs/services/fs/index.html                        |  43 --
 docs/services/ftp/index.html                       |  44 --
 docs/services/gcs/index.html                       |  72 ----
 docs/services/gdrive/index.html                    |  61 ---
 docs/services/ghac/index.html                      |  59 ---
 docs/services/gridfs/index.html                    |  44 --
 docs/services/hdfs/index.html                      |  95 -----
 docs/services/http/index.html                      |  45 ---
 docs/services/huggingface/index.html               |  48 ---
 docs/services/ipfs/index.html                      |  42 --
 docs/services/ipmfs/index.html                     |  30 --
 docs/services/libsql/index.html                    |  45 ---
 docs/services/memcached/index.html                 |  45 ---
 docs/services/memory/index.html                    |  36 --
 docs/services/moka/index.html                      |  45 ---
 docs/services/mongodb/index.html                   |  45 ---
 docs/services/mysql/index.html                     |  44 --
 docs/services/obs/index.html                       |  45 ---
 docs/services/onedrive/index.html                  |  41 --
 docs/services/oss/index.html                       |  50 ---
 docs/services/persy/index.html                     |  43 --
 docs/services/postgresql/index.html                |  44 --
 docs/services/redb/index.html                      |  41 --
 docs/services/redis/index.html                     |  46 ---
 docs/services/rocksdb/index.html                   |  53 ---
 docs/services/s3/index.html                        | 194 ---------
 docs/services/sftp/index.html                      |  50 ---
 docs/services/sled/index.html                      |  41 --
 docs/services/sqlite/index.html                    |  43 --
 docs/services/supabase/index.html                  |  46 ---
 docs/services/swift/index.html                     |  82 ----
 docs/services/tikv/index.html                      |  45 ---
 docs/services/vercel_artifacts/index.html          |  41 --
 docs/services/webdav/index.html                    |  45 ---
 docs/services/webhdfs/index.html                   |  65 ---
 download/index.html                                |   8 +-
 index.html                                         |  10 +-
 lunr-index-1717765913454.json                      |   1 -
 lunr-index-1717778466834.json                      |   1 +
 lunr-index.json                                    |   2 +-
 search-doc-1717765913454.json                      |   1 -
 search-doc-1717778466834.json                      |   1 +
 search-doc.json                                    |   2 +-
 sitemap.xml                                        |   2 +-
 191 files changed, 634 insertions(+), 3036 deletions(-)

diff --git a/404.html b/404.html
index 3470470a4e..aaa6146a00 100644
--- a/404.html
+++ b/404.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Page Not Found | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/404.html"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="tr [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/css/styles.b669fb25.css b/assets/css/styles.b669fb25.css
deleted file mode 100644
index 6b50d8bf03..0000000000
--- a/assets/css/styles.b669fb25.css
+++ /dev/null
@@ -1 +0,0 @@
-.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.butt [...]
\ No newline at end of file
diff --git a/assets/css/styles.d7ed97f5.css b/assets/css/styles.d7ed97f5.css
new file mode 100644
index 0000000000..3c53c93cdc
--- /dev/null
+++ b/assets/css/styles.d7ed97f5.css
@@ -0,0 +1 @@
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}body,ol ol,ol ul,ul ol,ul ul{margin:0}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.butt [...]
\ No newline at end of file
diff --git a/assets/files/basic-57d377a4cfc767b6779ce2b58560d1be.rs b/assets/files/basic-57d377a4cfc767b6779ce2b58560d1be.rs
deleted file mode 100644
index 3f8085c482..0000000000
--- a/assets/files/basic-57d377a4cfc767b6779ce2b58560d1be.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-use std::sync::Arc;
-
-use bytes::Bytes;
-use object_store::path::Path;
-use object_store::ObjectStore;
-use object_store_opendal::OpendalStore;
-use opendal::services::S3;
-use opendal::{Builder, Operator};
-
-#[tokio::main]
-async fn main() {
-    let builder = S3::from_map(
-        vec![
-            ("access_key".to_string(), "my_access_key".to_string()),
-            ("secret_key".to_string(), "my_secret_key".to_string()),
-            ("endpoint".to_string(), "my_endpoint".to_string()),
-            ("region".to_string(), "my_region".to_string()),
-        ]
-        .into_iter()
-        .collect(),
-    );
-
-    // Create a new operator
-    let operator = Operator::new(builder).unwrap().finish();
-
-    // Create a new object store
-    let object_store = Arc::new(OpendalStore::new(operator));
-
-    let path = Path::from("data/nested/test.txt");
-    let bytes = Bytes::from_static(b"hello, world! I am nested.");
-
-    object_store.put(&path, bytes.clone().into()).await.unwrap();
-
-    let content = object_store
-        .get(&path)
-        .await
-        .unwrap()
-        .bytes()
-        .await
-        .unwrap();
-
-    assert_eq!(content, bytes);
-}
diff --git a/assets/js/054cd2fb.10bef45e.js b/assets/js/054cd2fb.10bef45e.js
deleted file mode 100644
index 03a3689396..0000000000
--- a/assets/js/054cd2fb.10bef45e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1846],{5722:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>b,frontMatter:()=>o,metadata:()=>u,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",h1:"h1",h2:"h2",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(n.p,{chi [...]
\ No newline at end of file
diff --git a/assets/js/0605a481.f968e2ed.js b/assets/js/0605a481.f968e2ed.js
deleted file mode 100644
index 4e02f633a8..0000000000
--- a/assets/js/0605a481.f968e2ed.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2113],{6834:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var n=r(1527),s=r(2175);function a(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,n.jsx [...]
\ No newline at end of file
diff --git a/assets/js/093f5f04.6b4f76aa.js b/assets/js/093f5f04.6b4f76aa.js
deleted file mode 100644
index db67e2bef7..0000000000
--- a/assets/js/093f5f04.6b4f76aa.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6915],{493:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>m,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(n.p,{chil [...]
\ No newline at end of file
diff --git a/assets/js/09d8124e.e93f17fc.js b/assets/js/09d8124e.e93f17fc.js
deleted file mode 100644
index 388bb0c9f7..0000000000
--- a/assets/js/09d8124e.e93f17fc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4543],{7192:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>b,frontMatter:()=>c,metadata:()=>u,toc:()=>p});var s=t(1527),r=t(2175);function a(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(n. [...]
\ No newline at end of file
diff --git a/assets/js/136e1c50.143870a5.js b/assets/js/136e1c50.143870a5.js
deleted file mode 100644
index 6bec78b8cb..0000000000
--- a/assets/js/136e1c50.143870a5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3057],{1007:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>b,frontMatter:()=>c,metadata:()=>u,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/14eb3368.f2b17714.js b/assets/js/14eb3368.b4f48fb4.js
similarity index 98%
rename from assets/js/14eb3368.f2b17714.js
rename to assets/js/14eb3368.b4f48fb4.js
index 56fd128d7e..fe28bfc0c7 100644
--- a/assets/js/14eb3368.f2b17714.js
+++ b/assets/js/14eb3368.b4f48fb4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[9817],{5889:(e,t,s)=>{s.d(t,{Z:()=>v});s(959);var n=s(6259),i=s(4001),a=s(4403),r=s(5982),c=s(3556),l=s(1540),o=s(2923),d=s(1527);function m(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[9817],{5889:(e,t,s)=>{s.d(t,{Z:()=>v});s(959);var n=s(6259),i=s(4001),a=s(9663),r=s(5982),c=s(3556),l=s(1540),o=s(2923),d=s(1527);function m(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" [...]
\ No newline at end of file
diff --git a/assets/js/151cd40f.ac9bf356.js b/assets/js/151cd40f.ac9bf356.js
deleted file mode 100644
index 982aad975b..0000000000
--- a/assets/js/151cd40f.ac9bf356.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3702],{3919:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>x,frontMatter:()=>c,metadata:()=>u,toc:()=>h});var r=t(1527),s=t(2175);function a(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,r [...]
\ No newline at end of file
diff --git a/assets/js/170f36cb.32944e3f.js b/assets/js/170f36cb.32944e3f.js
deleted file mode 100644
index 0cfd30f76b..0000000000
--- a/assets/js/170f36cb.32944e3f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[527],{5766:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>x,frontMatter:()=>c,metadata:()=>h,toc:()=>a});var s=n(1527),r=n(2175);function o(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id [...]
\ No newline at end of file
diff --git a/assets/js/17896441.8e4c25ff.js b/assets/js/17896441.5977d4f4.js
similarity index 99%
rename from assets/js/17896441.8e4c25ff.js
rename to assets/js/17896441.5977d4f4.js
index e576c4b940..b4552adbb0 100644
--- a/assets/js/17896441.8e4c25ff.js
+++ b/assets/js/17896441.5977d4f4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7918],{5889:(e,t,n)=>{n.d(t,{Z:()=>b});n(959);var a=n(6259),s=n(4001),i=n(4403),l=n(5982),o=n(3556),r=n(1540),c=n(2923),d=n(1527);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7918],{5889:(e,t,n)=>{n.d(t,{Z:()=>b});n(959);var a=n(6259),s=n(4001),i=n(9663),l=n(5982),o=n(3556),r=n(1540),c=n(2923),d=n(1527);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" [...]
\ No newline at end of file
diff --git a/assets/js/1957547a.613f2979.js b/assets/js/1957547a.613f2979.js
deleted file mode 100644
index d6036f340f..0000000000
--- a/assets/js/1957547a.613f2979.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4477],{5034:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/22d8fa67.e9db63bb.js b/assets/js/22d8fa67.e9db63bb.js
deleted file mode 100644
index 21c0c9a4de..0000000000
--- a/assets/js/22d8fa67.e9db63bb.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4536],{9109:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>m});var r=n(1527),a=n(2175);function s(e){const t={code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,r.jsx)(t.p,{chi [...]
\ No newline at end of file
diff --git a/assets/js/29b208a4.1e4d0539.js b/assets/js/29b208a4.1e4d0539.js
deleted file mode 100644
index b0719a3741..0000000000
--- a/assets/js/29b208a4.1e4d0539.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6152],{4740:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=n(1527),a=n(2175);function r(e){const t={code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsxs)(t.ul,{c [...]
\ No newline at end of file
diff --git a/assets/js/2cbf1097.4a99635b.js b/assets/js/2cbf1097.4a99635b.js
deleted file mode 100644
index bbfff84600..0000000000
--- a/assets/js/2cbf1097.4a99635b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2804],{9989:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>m,contentTitle:()=>h,default:()=>j,frontMatter:()=>u,metadata:()=>p,toc:()=>x});var t=s(1527),r=s(2175);function i(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,t.jsx)(n. [...]
\ No newline at end of file
diff --git a/assets/js/2cdf76dd.22c4eec9.js b/assets/js/2cdf76dd.22c4eec9.js
new file mode 100644
index 0000000000..7272177ef2
--- /dev/null
+++ b/assets/js/2cdf76dd.22c4eec9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2026],{2431:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>d,toc:()=>c});var n=s(1527),r=s(2175);const o={title:"WebDAV Integration",sidebar_position:8},a=void 0,d={id:"dav-server",title:"WebDAV Integration",description:"Read the nightly version of the API docs at here.",source:"@site/docs/dav-server.md",sourceDirName:".",slug:"/dav-server",per [...]
\ No newline at end of file
diff --git a/assets/js/3632610d.d01bb24e.js b/assets/js/3632610d.d01bb24e.js
deleted file mode 100644
index 80417335af..0000000000
--- a/assets/js/3632610d.d01bb24e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2963],{5013:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>m,frontMatter:()=>c,metadata:()=>u,toc:()=>h});var r=t(1527),s=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,r.jsx [...]
\ No newline at end of file
diff --git a/assets/js/381c04e3.7e734e92.js b/assets/js/381c04e3.7e734e92.js
deleted file mode 100644
index c37cc0844d..0000000000
--- a/assets/js/381c04e3.7e734e92.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1725],{7917:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>p});var s=t(1527),r=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/39a95de5.3aa9fcf2.js b/assets/js/39a95de5.3aa9fcf2.js
deleted file mode 100644
index 5c5fd056e1..0000000000
--- a/assets/js/39a95de5.3aa9fcf2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5737],{1851:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>f,contentTitle:()=>h,default:()=>j,frontMatter:()=>u,metadata:()=>p,toc:()=>m});var s=t(1527),r=t(2175);function i(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/42347498.4120d490.js b/assets/js/42347498.4120d490.js
deleted file mode 100644
index ab24d837cd..0000000000
--- a/assets/js/42347498.4120d490.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7254],{8202:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=n(1527),a=n(2175);function r(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/434bbc94.046b0253.js b/assets/js/434bbc94.046b0253.js
deleted file mode 100644
index e5dd9235a4..0000000000
--- a/assets/js/434bbc94.046b0253.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1163],{6404:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=n(1527),a=n(2175);function r(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/4e2d8f56.b5ff424a.js b/assets/js/4e2d8f56.b5ff424a.js
deleted file mode 100644
index 77f4b20c29..0000000000
--- a/assets/js/4e2d8f56.b5ff424a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6752],{8723:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=n(1527),l=n(2175);function a(e){const t={code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,l.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(t.p,{chi [...]
\ No newline at end of file
diff --git a/assets/js/500d55cb.4e649200.js b/assets/js/500d55cb.4e649200.js
deleted file mode 100644
index 54f439efd3..0000000000
--- a/assets/js/500d55cb.4e649200.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7489],{6734:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/570de2ed.64cb45b1.js b/assets/js/570de2ed.64cb45b1.js
new file mode 100644
index 0000000000..a4efc486a0
--- /dev/null
+++ b/assets/js/570de2ed.64cb45b1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1667],{331:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var o=n(1527),s=n(2175);const i={title:"Python API",sidebar_position:5},a=void 0,r={id:"binding-python",title:"Python API",description:"Read the nightly version of Python API docs at here.",source:"@site/docs/binding-python.md",sourceDirName:".",slug:"/binding-python",perma [...]
\ No newline at end of file
diff --git a/assets/js/57a16c1d.2ab2a24b.js b/assets/js/57a16c1d.2ab2a24b.js
deleted file mode 100644
index e745914ee9..0000000000
--- a/assets/js/57a16c1d.2ab2a24b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7757],{3016:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var r=n(1527),s=n(2175);function a(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,r.jsx)(t. [...]
\ No newline at end of file
diff --git a/assets/js/58c94347.0e6c1415.js b/assets/js/58c94347.0e6c1415.js
new file mode 100644
index 0000000000..6c70861327
--- /dev/null
+++ b/assets/js/58c94347.0e6c1415.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8134],{6862:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>d,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var o=n(1527),s=n(2175);const i={title:"Node.js API",sidebar_position:6},d=void 0,a={id:"binding-nodejs",title:"Node.js API",description:"Read the nightly version of Node.js API docs at here.",source:"@site/docs/binding-nodejs.md",sourceDirName:".",slug:"/binding-nodejs",p [...]
\ No newline at end of file
diff --git a/assets/js/592d1076.eb63666e.js b/assets/js/592d1076.eb63666e.js
deleted file mode 100644
index 6e627ebd3d..0000000000
--- a/assets/js/592d1076.eb63666e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[990],{1760:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>d,default:()=>x,frontMatter:()=>o,metadata:()=>u,toc:()=>p});var s=n(1527),r=n(2175);function i(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",input:"input",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s. [...]
\ No newline at end of file
diff --git a/assets/js/621b831b.8967cc3b.js b/assets/js/621b831b.8967cc3b.js
deleted file mode 100644
index ef34ec3d2b..0000000000
--- a/assets/js/621b831b.8967cc3b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4551],{6611:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=t(1527),a=t(2175);function r(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["As known as ",(0,s.jsx)(n.code,{children:"abfs"}), [...]
\ No newline at end of file
diff --git a/assets/js/65bf2b43.2b7d9cc0.js b/assets/js/65bf2b43.2b7d9cc0.js
deleted file mode 100644
index fe95f4f966..0000000000
--- a/assets/js/65bf2b43.2b7d9cc0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2115],{4504:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=n(1527),l=n(2175);function r(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,l.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/67ecc70e.6b0938ac.js b/assets/js/67ecc70e.6b0938ac.js
deleted file mode 100644
index 60c3baa642..0000000000
--- a/assets/js/67ecc70e.6b0938ac.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4434],{1912:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var a=n(1527),s=n(2175);function r(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,a.jsx [...]
\ No newline at end of file
diff --git a/assets/js/6a41242b.cb96ea52.js b/assets/js/6a41242b.cb96ea52.js
deleted file mode 100644
index 9f6f45676c..0000000000
--- a/assets/js/6a41242b.cb96ea52.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5571],{6575:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>p});var s=t(1527),a=t(2175);function r(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/6dc695d1.68a1ed52.js b/assets/js/6dc695d1.68a1ed52.js
deleted file mode 100644
index f6ff709d62..0000000000
--- a/assets/js/6dc695d1.68a1ed52.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5982],{3335:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>b,frontMatter:()=>c,metadata:()=>u,toc:()=>h});var a=t(1527),s=t(2175);function i(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,a.jsx [...]
\ No newline at end of file
diff --git a/assets/js/6f4d3fa1.247c932e.js b/assets/js/6f4d3fa1.247c932e.js
deleted file mode 100644
index 2c1b5e9883..0000000000
--- a/assets/js/6f4d3fa1.247c932e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5885],{5854:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/7263c0b5.47af6055.js b/assets/js/7263c0b5.47af6055.js
deleted file mode 100644
index c02a2e58a9..0000000000
--- a/assets/js/7263c0b5.47af6055.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4649],{2203:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>p});var a=t(1527),s=t(2175);function r(e){const n={code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,a.jsx)(n.p,{chi [...]
\ No newline at end of file
diff --git a/assets/js/7345bab9.6d12ac11.js b/assets/js/7345bab9.6d12ac11.js
new file mode 100644
index 0000000000..32ea27577b
--- /dev/null
+++ b/assets/js/7345bab9.6d12ac11.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3217],{9362:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>i,default:()=>p,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var a=n(1527),o=n(2175);const s={title:"Java API",sidebar_position:4},i=void 0,d={id:"binding-java",title:"Java API",description:"Read the nightly version of Java API docs at here.",source:"@site/docs/binding-java.md",sourceDirName:".",slug:"/binding-java",permalink:"/docs [...]
\ No newline at end of file
diff --git a/assets/js/8070e160.b69fd20f.js b/assets/js/8070e160.b69fd20f.js
new file mode 100644
index 0000000000..97399f6d99
--- /dev/null
+++ b/assets/js/8070e160.b69fd20f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2651],{3866:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>d,toc:()=>r});var t=a(1527),l=a(2175);const i={title:"Quickstart",sidebar_position:2},o=void 0,d={id:"quickstart",title:"Quickstart",description:"Apache OpenDAL\u2122 can be easily integrated into different software with its Rust core and multilingual bindings.",source:"@site/docs/quick [...]
\ No newline at end of file
diff --git a/assets/js/8070e160.c482d60b.js b/assets/js/8070e160.c482d60b.js
deleted file mode 100644
index 761a925d3c..0000000000
--- a/assets/js/8070e160.c482d60b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2651],{3866:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>l,metadata:()=>d,toc:()=>r});var t=a(1527),i=a(2175);const l={title:"Quickstart",sidebar_position:3},o=void 0,d={id:"quickstart",title:"Quickstart",description:"Apache OpenDAL\u2122 can be easily integrated into different software with its Rust core and multilingual bindings.",source:"@site/docs/quick [...]
\ No newline at end of file
diff --git a/assets/js/8cc9519e.eaf21a7b.js b/assets/js/8cc9519e.eaf21a7b.js
deleted file mode 100644
index 2900796d09..0000000000
--- a/assets/js/8cc9519e.eaf21a7b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1652],{9755:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>o,contentTitle:()=>r,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var i=t(1527),n=t(2175);function c(e){const s={h2:"h2",input:"input",li:"li",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,i.jsx)(s.p,{children:"This service can be use [...]
\ No newline at end of file
diff --git a/assets/js/8f4159f2.50e20ba2.js b/assets/js/8f4159f2.50e20ba2.js
deleted file mode 100644
index 615e16b839..0000000000
--- a/assets/js/8f4159f2.50e20ba2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4719],{6282:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>o,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>r,toc:()=>p});var i=t(1527),n=t(2175);function c(e){const s={h2:"h2",input:"input",li:"li",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,i.jsx)(s.p,{children:"This service can be use [...]
\ No newline at end of file
diff --git a/assets/js/8fb00c63.08ef0985.js b/assets/js/8fb00c63.08ef0985.js
deleted file mode 100644
index e2f298830b..0000000000
--- a/assets/js/8fb00c63.08ef0985.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4600],{8608:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.9eccbbb9.js b/assets/js/935f2afb.9eccbbb9.js
new file mode 100644
index 0000000000..29a9a849c4
--- /dev/null
+++ b/assets/js/935f2afb.9eccbbb9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"About","href":"/docs/overview","docId":"overview","unlisted":false},{"type":"link","label":"Quickstart","href":"/docs/quickstart","docId":"quickstart","unlisted":fals [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.e36506d2.js b/assets/js/935f2afb.e36506d2.js
deleted file mode 100644
index adb4259e35..0000000000
--- a/assets/js/935f2afb.e36506d2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"About","href":"/docs/overview","docId":"overview","unlisted":false},{"type":"link","label":"Quickstart","href":"/docs/quickstart","docId":"quickstart","unlisted":fals [...]
\ No newline at end of file
diff --git a/assets/js/939f74f6.b95ccb70.js b/assets/js/939f74f6.b95ccb70.js
deleted file mode 100644
index 5bae801b97..0000000000
--- a/assets/js/939f74f6.b95ccb70.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4277],{7073:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>d,toc:()=>p});var s=t(1527),a=t(2175);function r(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/a0405932.b4c85c58.js b/assets/js/a0405932.b4c85c58.js
deleted file mode 100644
index ece0d5d46f..0000000000
--- a/assets/js/a0405932.b4c85c58.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[716],{3033:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(n.p,{chil [...]
\ No newline at end of file
diff --git a/assets/js/a0def06b.687afa30.js b/assets/js/a0def06b.687afa30.js
deleted file mode 100644
index 2ad7bf3f06..0000000000
--- a/assets/js/a0def06b.687afa30.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[891],{6562:e=>{e.exports=JSON.parse('{"title":"Integrations","slug":"/category/integrations","permalink":"/docs/category/integrations","navigation":{"previous":{"title":"WebHDFS","permalink":"/docs/services/webhdfs"},"next":{"title":"dav-server-opendalfs","permalink":"/docs/integrations/dav-server-opendalfs"}}}')}}]);
\ No newline at end of file
diff --git a/assets/js/a94703ab.cefa3005.js b/assets/js/a94703ab.dc27e969.js
similarity index 98%
rename from assets/js/a94703ab.cefa3005.js
rename to assets/js/a94703ab.dc27e969.js
index a522aa3405..cc1a04ff0c 100644
--- a/assets/js/a94703ab.cefa3005.js
+++ b/assets/js/a94703ab.dc27e969.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4368],{7545:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(959),o=n(6259),i=n(2101),s=n(4001),l=n(4403),r=n(828),c=n(1540),d=n(2990),u=n(8996);const m={backToTopButton:"backToTopButton_nIFV",backToTopButtonShow:"backToTopButtonShow_dKX5"};var b=n(1527);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelSc [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4368],{7545:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(959),o=n(6259),i=n(2101),s=n(4001),l=n(9663),r=n(828),c=n(1540),d=n(2990),u=n(8996);const m={backToTopButton:"backToTopButton_nIFV",backToTopButtonShow:"backToTopButtonShow_dKX5"};var b=n(1527);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelSc [...]
\ No newline at end of file
diff --git a/assets/js/b114cefa.ff7ae03c.js b/assets/js/b114cefa.ff7ae03c.js
deleted file mode 100644
index d7b8089898..0000000000
--- a/assets/js/b114cefa.ff7ae03c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2161],{9571:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var r=t(1527),s=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,r.jsx [...]
\ No newline at end of file
diff --git a/assets/js/b56f9725.f3aaf3e9.js b/assets/js/b56f9725.f3aaf3e9.js
deleted file mode 100644
index a590ed821e..0000000000
--- a/assets/js/b56f9725.f3aaf3e9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[217],{4958:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=t(1527),a=t(2175);function r(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx) [...]
\ No newline at end of file
diff --git a/assets/js/b5990c80.d5933b2c.js b/assets/js/b5990c80.d5933b2c.js
new file mode 100644
index 0000000000..7f3097a978
--- /dev/null
+++ b/assets/js/b5990c80.d5933b2c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1023],{8136:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var n=s(1527),d=s(2175);const r={title:"Rust Core",sidebar_position:3},o=void 0,a={id:"rust-core",title:"Rust Core",description:"Read the nightly version of Rust API docs at here.",source:"@site/docs/rust-core.md",sourceDirName:".",slug:"/rust-core",permalink:"/docs/rust-c [...]
\ No newline at end of file
diff --git a/assets/js/bb5b2057.09215f24.js b/assets/js/bb5b2057.09215f24.js
deleted file mode 100644
index 16d7436400..0000000000
--- a/assets/js/bb5b2057.09215f24.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5214],{5279:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/c0600a1b.e48f72d2.js b/assets/js/c0600a1b.e48f72d2.js
deleted file mode 100644
index ac46b4c69b..0000000000
--- a/assets/js/c0600a1b.e48f72d2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8874],{5329:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/c46c6b55.770d7cb2.js b/assets/js/c46c6b55.770d7cb2.js
deleted file mode 100644
index f3090bb1f0..0000000000
--- a/assets/js/c46c6b55.770d7cb2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5927],{7709:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>x,frontMatter:()=>c,metadata:()=>u,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/c4f5d8e4.22eb3cf5.js b/assets/js/c4f5d8e4.22eb3cf5.js
deleted file mode 100644
index d09b18b913..0000000000
--- a/assets/js/c4f5d8e4.22eb3cf5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4195],{4255:(e,s,n)=>{n.r(s),n.d(s,{default:()=>b});n(959);var r=n(5924),t=n(7858),i=n(8190);const a={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var c=n(1527),o=n(2175);function l(e){const s={a:"a",p:"p",...(0,o.a)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.p,{children:"Apache OpenDAL provides a core implementation in Rust as well as multilingual bindings, su [...]
\ No newline at end of file
diff --git a/assets/js/c4f5d8e4.36714769.js b/assets/js/c4f5d8e4.36714769.js
new file mode 100644
index 0000000000..19e7c9eeb3
--- /dev/null
+++ b/assets/js/c4f5d8e4.36714769.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4195],{4255:(e,s,n)=>{n.r(s),n.d(s,{default:()=>y});n(959);var r=n(5924),t=n(7858),i=n(8190);const a={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var c=n(1527),o=n(2175);function l(e){const s={a:"a",p:"p",...(0,o.a)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.p,{children:"Apache OpenDAL provides a core implementation in Rust as well as multilingual bindings, su [...]
\ No newline at end of file
diff --git a/assets/js/c6ab695b.ee5c233f.js b/assets/js/c6ab695b.ee5c233f.js
deleted file mode 100644
index 6fef377c2d..0000000000
--- a/assets/js/c6ab695b.ee5c233f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7289],{6614:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>c,default:()=>b,frontMatter:()=>d,metadata:()=>u,toc:()=>p});var s=n(1527),i=n(2175);function r(e){const t={a:"a",code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"There two implementations of WebHDFS REST  [...]
\ No newline at end of file
diff --git a/assets/js/c8a4ba5b.fc478763.js b/assets/js/c8a4ba5b.fc478763.js
deleted file mode 100644
index 194193a052..0000000000
--- a/assets/js/c8a4ba5b.fc478763.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6580],{5367:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>v,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var s=n(1527),r=n(2175);function o(e){const t={a:"a",code:"code",h1:"h1",p:"p",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"dav-server-opendalfs",children:"dav-server-opendalfs"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{hre [...]
\ No newline at end of file
diff --git a/assets/js/cc0be893.40ab4ac0.js b/assets/js/cc0be893.40ab4ac0.js
new file mode 100644
index 0000000000..6c5eedda62
--- /dev/null
+++ b/assets/js/cc0be893.40ab4ac0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7639],{3387:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var n=o(1527),s=o(2175);const r={title:"object_store Integration",sidebar_position:7},a=void 0,i={id:"object-store",title:"object_store Integration",description:"Read the nightly version of the API docs at here.",source:"@site/docs/object-store.md",sourceDirName:".",slug:" [...]
\ No newline at end of file
diff --git a/assets/js/cc62039a.7bb9693a.js b/assets/js/cc62039a.7bb9693a.js
deleted file mode 100644
index 71b828443c..0000000000
--- a/assets/js/cc62039a.7bb9693a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1011],{4217:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>d,default:()=>m,frontMatter:()=>c,metadata:()=>h,toc:()=>p});var t=s(1527),r=s(2175);function i(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"A distributed file system that provides  [...]
\ No newline at end of file
diff --git a/assets/js/d3c0d8d5.a49ef7ad.js b/assets/js/d3c0d8d5.a49ef7ad.js
deleted file mode 100644
index 066da6bf08..0000000000
--- a/assets/js/d3c0d8d5.a49ef7ad.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4790],{3529:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>m,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=t(1527),a=t(2175);function r(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/ddccef4c.b1d51f8a.js b/assets/js/ddccef4c.b1d51f8a.js
deleted file mode 100644
index 3ada6b568c..0000000000
--- a/assets/js/ddccef4c.b1d51f8a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[9826],{627:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>x,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx) [...]
\ No newline at end of file
diff --git a/assets/js/e19a6781.cedaa5e2.js b/assets/js/e19a6781.cedaa5e2.js
deleted file mode 100644
index 4c6379b801..0000000000
--- a/assets/js/e19a6781.cedaa5e2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6948],{9884:e=>{e.exports=JSON.parse('{"title":"Services","slug":"/category/services","permalink":"/docs/category/services","navigation":{"previous":{"title":"Quickstart","permalink":"/docs/quickstart"},"next":{"title":"AtomicServer","permalink":"/docs/services/atomicserver"}}}')}}]);
\ No newline at end of file
diff --git a/assets/js/e892cec6.b94f4b19.js b/assets/js/e892cec6.b94f4b19.js
deleted file mode 100644
index e007694f99..0000000000
--- a/assets/js/e892cec6.b94f4b19.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3845],{8627:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx [...]
\ No newline at end of file
diff --git a/assets/js/eec267e4.deb9acd5.js b/assets/js/eec267e4.deb9acd5.js
deleted file mode 100644
index 1d6bb64a38..0000000000
--- a/assets/js/eec267e4.deb9acd5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2217],{3453:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>f,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var s=t(1527),r=t(2175);function a(e){const n={a:"a",code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["This service will visit the ",(0,s.jsx)( [...]
\ No newline at end of file
diff --git a/assets/js/f1ca5a39.5d01c02f.js b/assets/js/f1ca5a39.5d01c02f.js
deleted file mode 100644
index ca7c471b70..0000000000
--- a/assets/js/f1ca5a39.5d01c02f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4538],{6633:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>m,frontMatter:()=>c,metadata:()=>u,toc:()=>h});var s=t(1527),r=t(2175);function a(e){const n={a:"a",code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0 [...]
\ No newline at end of file
diff --git a/assets/js/f9145722.9e3f4891.js b/assets/js/f9145722.9e3f4891.js
deleted file mode 100644
index 3a22d092c9..0000000000
--- a/assets/js/f9145722.9e3f4891.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6529],{9638:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>f,frontMatter:()=>c,metadata:()=>u,toc:()=>p});var r=t(1527),s=t(2175);function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",input:"input",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"capabilities",children:"Capabilities"})," [...]
\ No newline at end of file
diff --git a/assets/js/fde7cc64.e990cc1a.js b/assets/js/fde7cc64.e990cc1a.js
deleted file mode 100644
index ea5370a95b..0000000000
--- a/assets/js/fde7cc64.e990cc1a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3454],{1625:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var a=t(1527),s=t(2175);function r(e){const n={a:"a",code:"code",del:"del",h2:"h2",h3:"h3",input:"input",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"capabilities",children:"Capabil [...]
\ No newline at end of file
diff --git a/assets/js/main.490d69d8.js b/assets/js/main.490d69d8.js
new file mode 100644
index 0000000000..7396df0f68
--- /dev/null
+++ b/assets/js/main.490d69d8.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.490d69d8.js.LICENSE.txt */
+(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[179],{8852:(e,t,n)=>{var r={"./prism-groovy":1199,"./prism-java":955,"./prism-rust":457};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=8852},7812:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});n(959);var r=n(9010),o=n.n(r),a=n(6887);const  [...]
\ No newline at end of file
diff --git a/assets/js/main.e58ac1f5.js.LICENSE.txt b/assets/js/main.490d69d8.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.e58ac1f5.js.LICENSE.txt
rename to assets/js/main.490d69d8.js.LICENSE.txt
diff --git a/assets/js/main.e58ac1f5.js b/assets/js/main.e58ac1f5.js
deleted file mode 100644
index 4e2a1b5266..0000000000
--- a/assets/js/main.e58ac1f5.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.e58ac1f5.js.LICENSE.txt */
-(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[179],{8852:(e,t,n)=>{var r={"./prism-groovy":1199,"./prism-java":955,"./prism-rust":457};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=8852},7812:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(959);var r=n(9010),o=n.n(r),a=n(6887);const  [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.7a109b7c.js b/assets/js/runtime~main.7a109b7c.js
new file mode 100644
index 0000000000..6d7cb5fda2
--- /dev/null
+++ b/assets/js/runtime~main.7a109b7c.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,c,a,f,t,d={},b={};function r(e){var c=b[e];if(void 0!==c)return c.exports;var a=b[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,t)=>{if(!a){var d=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],t=e[i][2];for(var b=!0,o=0;o<a.length;o++)(!1&t||d>=t)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(b=!1,t<d&&(d=t));if(b){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}t=t||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.e006eb5f.js b/assets/js/runtime~main.e006eb5f.js
deleted file mode 100644
index 8ce4f52833..0000000000
--- a/assets/js/runtime~main.e006eb5f.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,c,a,f,d,b={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return b[e].call(a.exports,a,a.exports,r),a.exports}r.m=b,e=[],r.O=(c,a,f,d)=>{if(!a){var b=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}d=d||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/apache-opendal-graduated/index.html b/blog/apache-opendal-graduated/index.html
index 1f9960bc3b..a434c1220c 100644
--- a/blog/apache-opendal-graduated/index.html
+++ b/blog/apache-opendal-graduated/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache OpenDAL™ is now Graduated | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/apache-opendal-graduated"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="whats-apache-opendal">What&#x27;s Apache OpenDAL?<a href="#whats-apache-opendal" class="hash-link" aria-label="Direct link to What&#x27;s Apache OpenDAL?" title="Direct link to What&#x27;s Apache OpenDAL?">​</a></h2>
 <p><strong>Apache OpenDAL</strong> is a data access layer that allows users to easily and efficiently retrieve data from various storage services in a unified way. Our VISION is <strong>access data freely</strong>.</p>
 <p>OpenDAL could be used as a <strong>better</strong> SDK for your storage services: A SDK with native integration of <a href="https://opendal.apache.org/docs/rust/opendal/layers/struct.RetryLayer.html" target="_blank" rel="noopener noreferrer">retry</a>, <a href="https://opendal.apache.org/docs/rust/opendal/layers/struct.LoggingLayer.html" target="_blank" rel="noopener noreferrer">logging</a>, <a href="https://opendal.apache.org/docs/rust/opendal/layers/struct.MetricsLayer.html" target= [...]
diff --git a/blog/apache-opendal-participates-in-gsoc-2024/index.html b/blog/apache-opendal-participates-in-gsoc-2024/index.html
index e4f0a65e5a..1625930d35 100644
--- a/blog/apache-opendal-participates-in-gsoc-2024/index.html
+++ b/blog/apache-opendal-participates-in-gsoc-2024/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache OpenDAL™ participates in Google Summer of Code 2024 | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/apache-opendal-participates-in-gsoc-2024"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="e [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>We&#x27;re writing this blog post to announce that the Apache OpenDAL™ Project will be participating in <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer">Google Summer of Code (GSoC) 2024</a>. If you&#x27;re not eligible or interested in participating in GSoC, then most of this post likely isn&#x27;t relevant to you; if you are, this should contain some useful information and links.</p>
 <p>Google Summer of Code (GSoC) is an annual global program organized by Google that aims to bring new contributors to the world of open-source. The program pairs organizations (such as the OpenDAL Project) with contributors (usually students), with the goal of helping the participants make meaningful open-source contributions under the guidance of experienced mentors.</p>
 <p>Google is sponsoring the <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer">2024 Summer of Code</a> and <a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer">The Apache Software Foundation</a> (ASF) registered as a mentoring organization. The GSoC applicants now have several weeks to send project proposals to organizations that appeal to them. If their project proposal is accepted, they will embark on a 12-week journey during [...]
diff --git a/blog/apache-opendal-participates-in-ospp-2024/index.html b/blog/apache-opendal-participates-in-ospp-2024/index.html
index a496f1e743..d872882bd4 100644
--- a/blog/apache-opendal-participates-in-ospp-2024/index.html
+++ b/blog/apache-opendal-participates-in-ospp-2024/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache OpenDAL™ participates in Open Source Promotion Plan 2024 | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/apache-opendal-participates-in-ospp-2024"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" conte [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>We&#x27;re writing this blog post to announce that the Apache OpenDAL™ Project will be participating in <a href="https://summer-ospp.ac.cn/" target="_blank" rel="noopener noreferrer">Open Source Promotion Plan (OSPP) 2024</a>. If you&#x27;re not eligible or interested in participating in OSPP, then most of this post likely isn&#x27;t relevant to you; if you are, this should contain some useful information and links.</p>
 <p>Open Source Promotion Plan is a summer program organized by the Institute of Software Chinese Academy of Sciences and long-term supported by the Open Source Software Supply Chain Promotion Plan. It aims to encourage college students to actively participate in the maintenance and development of open source software, promote the vigorous development of open source software communities, and build the open source software supply chain together.</p>
 <p>The OSPP applicants now have several weeks to send project proposals to organizations that appeal to them. If their project proposal is accepted, they will embark on a 12-week journey during which they will try to complete their proposed project under the guidance of an assigned mentor.</p>
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 09712f43e4..1f586f2ebb 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Archive | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/archive"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/how-opendal-read-data/index.html b/blog/how-opendal-read-data/index.html
index d7af2456a8..c875a3d6c4 100644
--- a/blog/how-opendal-read-data/index.html
+++ b/blog/how-opendal-read-data/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache OpenDAL™ Internal: Data Reading | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/how-opendal-read-data"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusauru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>The first article will discuss OpenDAL&#x27;s most commonly used data reading function. I will start from the outermost interface and then gradually unfold according to the calling sequence of OpenDAL. Let&#x27;s get started!</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="overall-framework">Overall Framework<a href="#overall-framework" class="hash-link" aria-label="Direct link to Overall Framework" title="Direct link to Overall Framework">​</a></h2>
 <p>Before starting to introduce the specific OpenDAL interface, let&#x27;s first get familiar with the OpenDAL project.</p>
diff --git a/blog/index.html b/blog/index.html
index 88c3f4df29..4710b0649b 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Blog | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="o [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>We&#x27;re writing this blog post to announce that the Apache OpenDAL™ Project will be participating in <a href="https://summer-ospp.ac.cn/" target="_blank" rel="noopener noreferrer">Open Source Promotion Plan (OSPP) 2024</a>. If you&#x27;re not eligible or interested in participating in OSPP, then most of this post likely isn&#x27;t relevant to you; if you are, this should contain some useful information and links.</p>
 <p>Open Source Promotion Plan is a summer program organized by the Institute of Software Chinese Academy of Sciences and long-term supported by the Open Source Software Supply Chain Promotion Plan. It aims to encourage college students to actively participate in the maintenance and development of open source software, promote the vigorous development of open source software communities, and build the open source software supply chain together.</p>
 <p>The OSPP applicants now have several weeks to send project proposals to organizations that appeal to them. If their project proposal is accepted, they will embark on a 12-week journey during which they will try to complete their proposed project under the guidance of an assigned mentor.</p>
diff --git a/blog/opendal-access-data-freely/index.html b/blog/opendal-access-data-freely/index.html
index 686a1f0796..0cea1dc027 100644
--- a/blog/opendal-access-data-freely/index.html
+++ b/blog/opendal-access-data-freely/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache OpenDAL™: Access Data Freely | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/opendal-access-data-freely"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusau [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p><img decoding="async" loading="lazy" alt="OpenDAL Arch" src="/assets/images/opendal-arch-a614dff17a53ecef1fdbedb43be31c13.png" width="3932" height="2662" class="img_U3rc"></p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="what-is-opendal">What is OpenDAL?<a href="#what-is-opendal" class="hash-link" aria-label="Direct link to What is OpenDAL?" title="Direct link to What is OpenDAL?">​</a></h2>
 <p><strong>OpenDAL</strong> is a data access layer that allows users to easily and efficiently retrieve data from various storage services in a unified way.</p>
diff --git a/blog/opendal-entered-apache-incubator/index.html b/blog/opendal-entered-apache-incubator/index.html
index a3eb230169..5dcfed56d0 100644
--- a/blog/opendal-entered-apache-incubator/index.html
+++ b/blog/opendal-entered-apache-incubator/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Way to Go: OpenDAL successfully entered Apache Incubator | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/opendal-entered-apache-incubator"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta d [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>On February 27th, 2023, the <a href="https://github.com/apache/opendal" target="_blank" rel="noopener noreferrer">OpenDAL</a> project achieved a milestone by winning the approval to join the incubator of the <a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer">Apache Software Foundation</a> (ASF), the world&#x27;s leading open source software organization. On March 15th, the OpenDAL project was officially transferred to the Apache Software Foundation.</p>
 <p>This is a significant moment for <a href="https://github.com/datafuselabs/databend" target="_blank" rel="noopener noreferrer">Databend</a>, as it means that OpenDAL&#x27;s technology and vision have received wider recognition and support from the open source community.</p>
 <blockquote>
diff --git a/blog/owo-1/index.html b/blog/owo-1/index.html
index 1f11d150f2..9977bc204d 100644
--- a/blog/owo-1/index.html
+++ b/blog/owo-1/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">OwO #1: The v0.40 Release | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/owo-1"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><met [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>OwO (Outcome, Working, Outlook) is an Apache OpenDAL™ release blog series, where we share the current work status and future plans.</p>
 </blockquote>
 <p>Hello! It&#x27;s been a while since our last update. We&#x27;ve been hard at work determining the optimal way to implement new features and improvements. We&#x27;re thrilled to announce that we&#x27;ll soon be releasing v0.40.</p>
diff --git a/blog/tags/announcement/index.html b/blog/tags/announcement/index.html
index 6feb535c0a..f12a6fdc7a 100644
--- a/blog/tags/announcement/index.html
+++ b/blog/tags/announcement/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">5 posts tagged with &quot;announcement&quot; | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/announcement"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsear [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>We&#x27;re writing this blog post to announce that the Apache OpenDAL™ Project will be participating in <a href="https://summer-ospp.ac.cn/" target="_blank" rel="noopener noreferrer">Open Source Promotion Plan (OSPP) 2024</a>. If you&#x27;re not eligible or interested in participating in OSPP, then most of this post likely isn&#x27;t relevant to you; if you are, this should contain some useful information and links.</p>
 <p>Open Source Promotion Plan is a summer program organized by the Institute of Software Chinese Academy of Sciences and long-term supported by the Open Source Software Supply Chain Promotion Plan. It aims to encourage college students to actively participate in the maintenance and development of open source software, promote the vigorous development of open source software communities, and build the open source software supply chain together.</p>
 <p>The OSPP applicants now have several weeks to send project proposals to organizations that appeal to them. If their project proposal is accepted, they will embark on a 12-week journey during which they will try to complete their proposed project under the guidance of an assigned mentor.</p>
diff --git a/blog/tags/index.html b/blog/tags/index.html
index f3311e08fa..d4d747839c 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Tags | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" proper [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/internal/index.html b/blog/tags/internal/index.html
index 5c84aa95ca..195b8500f1 100644
--- a/blog/tags/internal/index.html
+++ b/blog/tags/internal/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">One post tagged with &quot;internal&quot; | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/internal"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lang [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>The first article will discuss OpenDAL&#x27;s most commonly used data reading function. I will start from the outermost interface and then gradually unfold according to the calling sequence of OpenDAL. Let&#x27;s get started!</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="overall-framework">Overall Framework<a href="#overall-framework" class="hash-link" aria-label="Direct link to Overall Framework" title="Direct link to Overall Framework">​</a></h2>
 <p>Before starting to introduce the specific OpenDAL interface, let&#x27;s first get familiar with the OpenDAL project.</p>
diff --git a/blog/tags/owo/index.html b/blog/tags/owo/index.html
index 6bb2625fff..026ef3fa9a 100644
--- a/blog/tags/owo/index.html
+++ b/blog/tags/owo/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">One post tagged with &quot;owo&quot; | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/owo"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" cont [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>OwO (Outcome, Working, Outlook) is an Apache OpenDAL™ release blog series, where we share the current work status and future plans.</p>
 </blockquote>
 <p>Hello! It&#x27;s been a while since our last update. We&#x27;ve been hard at work determining the optimal way to implement new features and improvements. We&#x27;re thrilled to announce that we&#x27;ll soon be releasing v0.40.</p>
diff --git a/community/category/committers/index.html b/community/category/committers/index.html
index c5a972f6a0..8743555e33 100644
--- a/community/category/committers/index.html
+++ b/community/category/committers/index.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Committers | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/committers"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/community/category/events/index.html b/community/category/events/index.html
index 50299e82ca..2cd575d1d4 100644
--- a/community/category/events/index.html
+++ b/community/category/events/index.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Events | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/events"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta dat [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/community/category/pmc-members/index.html b/community/category/pmc-members/index.html
index 72b2dc6b5a..16408562ae 100644
--- a/community/category/pmc-members/index.html
+++ b/community/category/pmc-members/index.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Committers | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/pmc-members"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/community/category/reference/index.html b/community/category/reference/index.html
index 078f3a4eb8..ae9188f9c4 100644
--- a/community/category/reference/index.html
+++ b/community/category/reference/index.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Reference | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/reference"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><me [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/community/committers/onboarding/index.html b/community/committers/onboarding/index.html
index 54f5d5326f..faefe05b63 100644
--- a/community/committers/onboarding/index.html
+++ b/community/committers/onboarding/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Onboarding | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/onboarding"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>Upon receiving an invitation email from OpenDAL PMC, a new committer should consider whether accepting.
 If they decide in favor, they should select &quot;Reply All&quot; and express their decision.</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="submit-cla">Submit CLA<a href="#submit-cla" class="hash-link" aria-label="Direct link to Submit CLA" title="Direct link to Submit CLA">​</a></h2>
diff --git a/community/committers/reference/generate_release_note/index.html b/community/committers/reference/generate_release_note/index.html
index 2208908368..9d45a541b6 100644
--- a/community/committers/reference/generate_release_note/index.html
+++ b/community/committers/reference/generate_release_note/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Generate release note | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/reference/generate_release_note"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name=" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <ol>
 <li>Go to <a href="https://github.com/apache/opendal/releases/new" target="_blank" rel="noopener noreferrer">https://github.com/apache/opendal/releases/new</a> to start a new release.</li>
 <li>Fill the tag with <code>draft</code>.</li>
diff --git a/community/committers/reference/setup_gpg/index.html b/community/committers/reference/setup_gpg/index.html
index 40b1a75033..a6ebc6ef41 100644
--- a/community/committers/reference/setup_gpg/index.html
+++ b/community/committers/reference/setup_gpg/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Setup GPG key | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/reference/setup_gpg"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language"  [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="install-gpg">Install GPG<a href="#install-gpg" class="hash-link" aria-label="Direct link to Install GPG" title="Direct link to Install GPG">​</a></h2>
 <p>For more details, please refer to <a href="https://www.gnupg.org/download/index.html" target="_blank" rel="noopener noreferrer">GPG official website</a>. Here shows one approach to install GPG with <code>apt</code>:</p>
 <div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">sudo apt install gnupg2</span><br></span></code></pre><div class="buttonGroup_fpPU"><butt [...]
diff --git a/community/committers/release/index.html b/community/committers/release/index.html
index 9f173ed103..90a10ff3de 100644
--- a/community/committers/release/index.html
+++ b/community/committers/release/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Create a release | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/release"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content=" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 releases a new version of Apache OpenDAL™ in accordance with the Apache requirements.</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction">​</a></h2>
 <p><code>Source Release</code> is the key point which Apache values, and is also necessary for an ASF release.</p>
diff --git a/community/committers/request_for_adding_secrets/index.html b/community/committers/request_for_adding_secrets/index.html
index 977fedb7e8..e921b37d7f 100644
--- a/community/committers/request_for_adding_secrets/index.html
+++ b/community/committers/request_for_adding_secrets/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Request for adding secrets | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/request_for_adding_secrets"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name=" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>OpenDAL&#x27;s behavior tests depend on the secrets stored in 1password.</p>
 <p>If you want to sponsor any service,
 please email <a href="mailto:private@opendal.apache.org" target="_blank" rel="noopener noreferrer">private@opendal.apache.org</a> with the subject line <code>Request to Add Secrets for &lt;service&gt;</code>.
diff --git a/community/committers/verify/index.html b/community/committers/verify/index.html
index 01b0f24ae2..37b5f8f011 100644
--- a/community/committers/verify/index.html
+++ b/community/committers/verify/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Verify a release candidate | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/verify"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language"  [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <ul class="contains-task-list containsTaskList_wG5T">
 <li class="task-list-item"><input type="checkbox" disabled=""> Download links are valid.</li>
 <li class="task-list-item"><input type="checkbox" disabled=""> Checksums and signatures.</li>
diff --git a/community/events/gsoc-proposal-guide/index.html b/community/events/gsoc-proposal-guide/index.html
index f1d6d16eaf..56f675e4b3 100644
--- a/community/events/gsoc-proposal-guide/index.html
+++ b/community/events/gsoc-proposal-guide/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">GSoC Project Proposal Guidance | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/events/gsoc-proposal-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsear [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="choosing-a-project">Choosing a project<a href="#choosing-a-project" class="hash-link" aria-label="Direct link to Choosing a project" title="Direct link to Choosing a project">​</a></h2>
 <p>You should start by deciding on which project do you want to work on. You can use our <a href="https://github.com/apache/opendal/issues/4131" target="_blank" rel="noopener noreferrer">list of project ideas</a>
 as an inspiration, or you can come up with your own project idea. However, you should keep in mind that each GSoC project needs at least one mentor available. Therefore, if you come up with a completely new project idea, you should also try to find someone from the OpenDAL community who could mentor you on the project.</p>
diff --git a/community/events/ospp-proposal-guide/index.html b/community/events/ospp-proposal-guide/index.html
index 7f31f3ca34..56b2341e05 100644
--- a/community/events/ospp-proposal-guide/index.html
+++ b/community/events/ospp-proposal-guide/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">OSPP Project Proposal Guidance | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/events/ospp-proposal-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsear [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="choosing-a-project">Choosing a project<a href="#choosing-a-project" class="hash-link" aria-label="Direct link to Choosing a project" title="Direct link to Choosing a project">​</a></h2>
 <p>You should start by deciding on which project do you want to work on. You can use our <a href="https://github.com/apache/opendal/issues/4554" target="_blank" rel="noopener noreferrer">list of project ideas</a> as an inspiration.</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="interacting-with-the-opendal-community">Interacting with the OpenDAL community<a href="#interacting-with-the-opendal-community" class="hash-link" aria-label="Direct link to Interacting with the OpenDAL community" title="Direct link to Interacting with the OpenDAL community">​</a></h2>
diff --git a/community/index.html b/community/index.html
index de9e055dc0..a1ba52fefb 100644
--- a/community/index.html
+++ b/community/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Community | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true"  [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>Welcome to the Apache OpenDAL™ community!</p>
 <p>Every volunteer project obtains its strength from the people involved in it. We invite you to participate as much or as little as you choose.</p>
 <p>You can:</p>
diff --git a/community/maturity/index.html b/community/maturity/index.html
index 9c15445d07..b896106d44 100644
--- a/community/maturity/index.html
+++ b/community/maturity/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Maturity | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/maturity"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>The goals of this maturity model are to describe how Apache projects operate in a concise and high-level way, and to provide a basic framework that projects may choose to use to evaluate themselves.</p>
 <p>More details can be found <a href="https://community.apache.org/apache-way/apache-project-maturity-model.html" target="_blank" rel="noopener noreferrer">here</a>.</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="status-of-this-assessment">Status of this assessment<a href="#status-of-this-assessment" class="hash-link" aria-label="Direct link to Status of this assessment" title="Direct link to Status of this assessment">​</a></h2>
diff --git a/community/pmc_members/board-reporting/index.html b/community/pmc_members/board-reporting/index.html
index 3ab5dbd099..0820f52953 100644
--- a/community/pmc_members/board-reporting/index.html
+++ b/community/pmc_members/board-reporting/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Board reporting | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/board-reporting"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h3 class="anchor anchorWithStickyNavbar_VwHQ" id="frequency-of-reporting">Frequency of Reporting<a href="#frequency-of-reporting" class="hash-link" aria-label="Direct link to Frequency of Reporting" title="Direct link to Frequency of Reporting">​</a></h3>
 <p>New graduates from the Apache Incubator are required to report monthly for the first three months, then quarterly.</p>
 <p><strong>The current reporting frequency for Apache OpenDAL™ is once per quarter.</strong></p>
diff --git a/community/pmc_members/nominate-committer/index.html b/community/pmc_members/nominate-committer/index.html
index 2997cfe807..ff6a6bf2e4 100644
--- a/community/pmc_members/nominate-committer/index.html
+++ b/community/pmc_members/nominate-committer/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Nominate Committer | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/nominate-committer"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:langu [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="start-vote-about-the-candidate">Start vote about the candidate<a href="#start-vote-about-the-candidate" class="hash-link" aria-label="Direct link to Start vote about the candidate" title="Direct link to Start vote about the candidate">​</a></h2>
 <p>Start a vote about the candidate via sending email to: <a href="mailto:private@opendal.apache.org" target="_blank" rel="noopener noreferrer">private@opendal.apache.org</a>:</p>
 <ul>
diff --git a/community/pmc_members/nominate-pmc-member/index.html b/community/pmc_members/nominate-pmc-member/index.html
index 188b97c23d..e03518dd82 100644
--- a/community/pmc_members/nominate-pmc-member/index.html
+++ b/community/pmc_members/nominate-pmc-member/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Nominate PMC Member | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/nominate-pmc-member"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lan [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="start-vote-about-the-candidate">Start vote about the candidate<a href="#start-vote-about-the-candidate" class="hash-link" aria-label="Direct link to Start vote about the candidate" title="Direct link to Start vote about the candidate">​</a></h2>
 <p>Start a vote about the candidate via sending email to: <a href="mailto:private@opendal.apache.org" target="_blank" rel="noopener noreferrer">private@opendal.apache.org</a>:</p>
 <ul>
diff --git a/community/pmc_members/onboarding/index.html b/community/pmc_members/onboarding/index.html
index 2c3404ddd1..b7632eb17b 100644
--- a/community/pmc_members/onboarding/index.html
+++ b/community/pmc_members/onboarding/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Onboarding | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/onboarding"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>Upon receiving an invitation email from OpenDAL PMC, a new PMC member should consider whether accepting.
 If they decide in favor, they should select &quot;Reply All&quot; and express their decision.</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="subscribe-to-private-mailing-list">Subscribe to Private Mailing List<a href="#subscribe-to-private-mailing-list" class="hash-link" aria-label="Direct link to Subscribe to Private Mailing List" title="Direct link to Subscribe to Private Mailing List">​</a></h2>
diff --git a/community/security/index.html b/community/security/index.html
index 945fb8b948..6ee8ab2f4a 100644
--- a/community/security/index.html
+++ b/community/security/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Security | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/security"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. Likewise, Apache OpenDAL™ is also vigilant and takes security issues related to its features and functionality into the highest consideration.</p>
 <p>If you have any concerns regarding OpenDAL&#x27;s security,
 or you discover a vulnerability or potential threat,
diff --git a/docs/binding-java/index.html b/docs/binding-java/index.html
new file mode 100644
index 0000000000..12b4caf834
--- /dev/null
+++ b/docs/binding-java/index.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-binding-java" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">Java API | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/binding-java"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh=" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>Read the latest stable version instead at <a href="https://javadoc.io/doc/org.apache.opendal/opendal-java/latest/index.html" target="_blank" rel="noopener noreferrer">https://javadoc.io/doc/org.apache.opendal/opendal-java/latest/index.html</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/binding-java.md" target="_blank" rel="noopener norefer [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/binding-nodejs/index.html b/docs/binding-nodejs/index.html
new file mode 100644
index 0000000000..0000f09ebe
--- /dev/null
+++ b/docs/binding-nodejs/index.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-binding-nodejs" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">Node.js API | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/binding-nodejs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>Read the README of latest stable version instead at <a href="https://www.npmjs.com/package/opendal" target="_blank" rel="noopener noreferrer">https://www.npmjs.com/package/opendal</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/binding-nodejs.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/binding-python/index.html b/docs/binding-python/index.html
new file mode 100644
index 0000000000..21f8c1873f
--- /dev/null
+++ b/docs/binding-python/index.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-binding-python" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">Python API | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/binding-python"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data- [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>Read the README of latest stable version instead at <a href="https://pypi.org/project/opendal/" target="_blank" rel="noopener noreferrer">https://pypi.org/project/opendal/</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/binding-python.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height= [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/category/integrations/index.html b/docs/category/integrations/index.html
deleted file mode 100644
index 57f557950c..0000000000
--- a/docs/category/integrations/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Integrations | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/category/integrations"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><m [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/category/services/index.html b/docs/category/services/index.html
deleted file mode 100644
index 6345d7584e..0000000000
--- a/docs/category/services/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Services | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/category/services"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/dav-server/index.html b/docs/dav-server/index.html
new file mode 100644
index 0000000000..04503f8283
--- /dev/null
+++ b/docs/dav-server/index.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-dav-server" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">WebDAV Integration | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/dav-server"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>Read the latest stable version instead at <a href="https://docs.rs/dav-server-opendalfs/latest/dav_server_opendalfs/index.html" target="_blank" rel="noopener noreferrer">https://docs.rs/dav-server-opendalfs/latest/dav_server_opendalfs/index.html</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/dav-server.md" target="_blank" rel="noopener nor [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/integrations/dav-server-opendalfs/index.html b/docs/integrations/dav-server-opendalfs/index.html
deleted file mode 100644
index 672e1a46df..0000000000
--- a/docs/integrations/dav-server-opendalfs/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-integrations/dav-server-opendalfs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">dav-server-opendalfs | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/integrations/dav-server-opendalfs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:langu [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p><a href="https://crates.io/crates/dav-server-opendalfs" target="_blank" rel="noopener noreferrer"><code>dav-server-opendalfs</code></a> is an integration which uses OpenDAL as a backend to access data in various service with WebDAV protocol.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/integrations/dav-server-opendalfs.mdx" target="_blank" re [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/integrations/object_store_opendal/index.html b/docs/integrations/object_store_opendal/index.html
deleted file mode 100644
index ddf3d0ccad..0000000000
--- a/docs/integrations/object_store_opendal/index.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-integrations/object_store_opendal" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">object_store_opendal | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/integrations/object_store_opendal"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:langu [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<!-- -->
-<h1>OpenDAL object_store Binding</h1>
-<p>This crate intends to build an <a href="https://crates.io/crates/object_store" target="_blank" rel="noopener noreferrer">object_store</a> binding.</p>
-<p>The <code>OpendalStore</code> uses the <code>opendal</code> crate to interact with the underlying object storage system. The <code>Operator</code> is used to create a new <code>OpendalStore</code> instance. The <code>OpendalStore</code> uses the <code>Operator</code> to perform operations on the object storage system, such as <code>put</code>, <code>get</code>, <code>delete</code>, and <code>list</code>.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h2>
-<p>Firstly, you need to add the following dependencies to your <code>Cargo.toml</code>:</p>
-<div class="language-toml codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-toml codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">[dependencies]</span><br></span><span class="token-line" style="color:#393A34"><span class= [...]
-<blockquote>
-<p>[!NOTE]</p>
-<p>The current version we support is object store 0.10.</p>
-</blockquote>
-<p>Then you can use the <code>OpendalStore</code> as in the <a href="/assets/files/basic-57d377a4cfc767b6779ce2b58560d1be.rs" target="_blank">example</a>.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="api">API<a href="#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API">​</a></h2>
-<p>The <code>OpendalStore</code> implements the <code>ObjectStore</code> trait, which provides the following methods:</p>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<table><thead><tr><th>Method</th><th>Description</th><th>link</th></tr></thead><tbody><tr><td><code>put</code></td><td>Put an object into the store.</td><td><a href="https://docs.rs/object_store/0.9.0/object_store/trait.ObjectStore.html#tymethod.put" target="_blank" rel="noopener noreferrer">put</a></td></tr><tr><td><code>get</code></td><td>Get an object from the store.</td><td><a href="https://docs.rs/object_store/0.9.0/object_store/trait.ObjectStore.html#tymethod.get" target="_blank" r [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/lua/classes/opendal.metadata.html b/docs/lua/classes/opendal.metadata.html
index d5a4ffce97..0a74929446 100644
--- a/docs/lua/classes/opendal.metadata.html
+++ b/docs/lua/classes/opendal.metadata.html
@@ -138,7 +138,7 @@
 </div> <!-- id="main" -->
 <div id="about">
 <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2024-06-07 12:54:13 </i>
+<i style="float:right;">Last updated 2024-06-07 16:25:15 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/lua/classes/opendal.operator.html b/docs/lua/classes/opendal.operator.html
index 8f4c14ee3b..474c5eb5dc 100644
--- a/docs/lua/classes/opendal.operator.html
+++ b/docs/lua/classes/opendal.operator.html
@@ -321,7 +321,7 @@
 </div> <!-- id="main" -->
 <div id="about">
 <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2024-06-07 12:54:13 </i>
+<i style="float:right;">Last updated 2024-06-07 16:25:15 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/lua/index.html b/docs/lua/index.html
index abfb5c0c53..09c9cc7826 100644
--- a/docs/lua/index.html
+++ b/docs/lua/index.html
@@ -57,7 +57,7 @@
 </div> <!-- id="main" -->
 <div id="about">
 <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2024-06-07 12:54:13 </i>
+<i style="float:right;">Last updated 2024-06-07 16:25:15 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index 117d68395e..01490a9e70 100644
--- a/docs/nodejs/classes/BlockingLister.html
+++ b/docs/nodejs/classes/BlockingLister.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingLister | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L655">generated.d.ts:655</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L655">generated.d.ts:655</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingLister.html#next" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>next</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingReader.html b/docs/nodejs/classes/BlockingReader.html
index 20f3b680a1..324ba2e89d 100644
--- a/docs/nodejs/classes/BlockingReader.html
+++ b/docs/nodejs/classes/BlockingReader.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingReader | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L546">generated.d.ts:546</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/index.d.ts#L23">index.d.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L546">generated.d.ts:546</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/index.d.ts#L23">index.d.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingReader.html#createReadStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Read<wbr/>Stream</span></a>
 <a href="BlockingReader.html#read" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>read</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingWriter.html b/docs/nodejs/classes/BlockingWriter.html
index 8889b787c0..6468db20a9 100644
--- a/docs/nodejs/classes/BlockingWriter.html
+++ b/docs/nodejs/classes/BlockingWriter.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingWriter | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L567">generated.d.ts:567</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/index.d.ts#L32">index.d.ts:32</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L567">generated.d.ts:567</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/index.d.ts#L32">index.d.ts:32</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingWriter.html#close" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>close</span></a>
 <a href="BlockingWriter.html#createWriteStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Write<wbr/>Stream</span></a>
 <a href="BlockingWriter.html#write" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>write</span></a>
@@ -10,11 +10,11 @@ manner.</p>
 <p>Close this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writerSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span><br/><span class="hl-5">writer</span><span class="hl-1 [...]
 </code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L598">generated.d.ts:598</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createWriteStream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Write<wbr/>Stream</sp [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L598">generated.d.ts:598</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createWriteStream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Write<wbr/>Stream</sp [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>Write bytes into this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span> [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Capability.html b/docs/nodejs/classes/Capability.html
index 3fb90494b3..f6af3f21f7 100644
--- a/docs/nodejs/classes/Capability.html
+++ b/docs/nodejs/classes/Capability.html
@@ -7,7 +7,7 @@ by current Operator.</p>
 <li>What&#39;s current Operator max supports batch operations count.</li>
 </ul>
 <p>Add fields of Capabilities with be public and can be accessed directly.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L56">generated.d.ts:56</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L56">generated.d.ts:56</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="Capability.html#batch" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch</span></a>
 <a href="Capability.html#batchDelete" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch<wbr/>Delete</span></a>
 <a href="Capability.html#batchMaxOperations" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch<wbr/>Max<wbr/>Operations</span></a>
@@ -45,43 +45,43 @@ by current Operator.</p>
 <a href="Capability.html#writeWithContentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>write<wbr/>With<wbr/>Content<wbr/>Disposition</span></a>
 <a href="Capability.html#writeWithContentType" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>write<wbr/>With<wbr/>Content<wbr/>Type</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Cap [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L138">generated.d.ts:138</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchDelete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Delete</span><a href="#ba [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L140">generated.d.ts:140</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchMaxOperations" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Max<wbr/>Operation [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L142">generated.d.ts:142</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="blocking" class="t [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L144">generated.d.ts:144</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="copy" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copy</span><a href="#copy" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L118">generated.d.ts:118</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createDir" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a href="#create [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L114">generated.d.ts:114</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L116">generated.d.ts:116</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="list" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L122">generated.d.ts:122</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithLimit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Limit</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L124">generated.d.ts:124</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithRecursive" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Recursive< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L128">generated.d.ts:128</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithStartAfter" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Start<wbr [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L126">generated.d.ts:126</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presign" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign</span><a href="#presign" aria-la [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L130">generated.d.ts:130</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignRead" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a href="#pr [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L132">generated.d.ts:132</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignStat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a href="#pr [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L134">generated.d.ts:134</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignWrite" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span><a href="# [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L136">generated.d.ts:136</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="read" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L64">generated.d.ts:64</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/>Match< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L66">generated.d.ts:66</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/>No [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L68">generated.d.ts:68</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideCacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>O [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L70">generated.d.ts:70</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L72">generated.d.ts:72</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>Ov [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L74">generated.d.ts:74</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="rename" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" aria-label=" [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L120">generated.d.ts:120</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="stat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L58">generated.d.ts:58</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/>Match< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L60">generated.d.ts:60</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/>No [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L62">generated.d.ts:62</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="write" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria-label="Per [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L76">generated.d.ts:76</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanAppend" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Append</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L82">generated.d.ts:82</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanEmpty" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Empty</span><a h [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L80">generated.d.ts:80</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanMulti" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Multi</span><a h [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L78">generated.d.ts:78</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiAlignSize" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Multi<wbr/>Align<wb [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L138">generated.d.ts:138</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchDelete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Delete</span><a href="#ba [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L140">generated.d.ts:140</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchMaxOperations" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Max<wbr/>Operation [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L142">generated.d.ts:142</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="blocking" class="t [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L144">generated.d.ts:144</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="copy" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copy</span><a href="#copy" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L118">generated.d.ts:118</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createDir" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a href="#create [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L114">generated.d.ts:114</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L116">generated.d.ts:116</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="list" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L122">generated.d.ts:122</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithLimit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Limit</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L124">generated.d.ts:124</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithRecursive" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Recursive< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L128">generated.d.ts:128</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithStartAfter" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Start<wbr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L126">generated.d.ts:126</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presign" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign</span><a href="#presign" aria-la [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L130">generated.d.ts:130</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignRead" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a href="#pr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L132">generated.d.ts:132</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignStat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a href="#pr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L134">generated.d.ts:134</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignWrite" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span><a href="# [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L136">generated.d.ts:136</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="read" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L64">generated.d.ts:64</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/>Match< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L66">generated.d.ts:66</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/>No [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L68">generated.d.ts:68</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideCacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>O [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L70">generated.d.ts:70</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L72">generated.d.ts:72</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>Ov [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L74">generated.d.ts:74</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="rename" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" aria-label=" [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L120">generated.d.ts:120</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="stat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L58">generated.d.ts:58</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/>Match< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L60">generated.d.ts:60</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/>No [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L62">generated.d.ts:62</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="write" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria-label="Per [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L76">generated.d.ts:76</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanAppend" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Append</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L82">generated.d.ts:82</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanEmpty" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Empty</span><a h [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L80">generated.d.ts:80</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanMulti" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Multi</span><a h [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L78">generated.d.ts:78</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiAlignSize" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Multi<wbr/>Align<wb [...]
 <p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L106">generated.d.ts:106</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMaxSize" [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L106">generated.d.ts:106</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMaxSize" [...]
 <p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L94">generated.d.ts:94</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMinSize" c [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L94">generated.d.ts:94</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMinSize" c [...]
 <p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L100">generated.d.ts:100</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeTotalMaxSize" [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L100">generated.d.ts:100</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeTotalMaxSize" [...]
 <p>For example, Cloudflare D1 supports 1MB as max in write_total.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L112">generated.d.ts:112</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithCacheCont [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L88">generated.d.ts:88</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/>C [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L86">generated.d.ts:86</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/>Content< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L84">generated.d.ts:84</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class= [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L112">generated.d.ts:112</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithCacheCont [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L88">generated.d.ts:88</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/>C [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L86">generated.d.ts:86</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/>Content< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L84">generated.d.ts:84</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class= [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index 3b12fee6b2..7955305428 100644
--- a/docs/nodejs/classes/Entry.html
+++ b/docs/nodejs/classes/Entry.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Entry | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../ [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L515">generated.d.ts:515</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L515">generated.d.ts:515</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Entry.html#path" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>path</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ent [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L517">generated.d.ts:517</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L517">generated.d.ts:517</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/ExternalObject.html b/docs/nodejs/classes/ExternalObject.html
index a631322c54..0cce1acbe1 100644
--- a/docs/nodejs/classes/ExternalObject.html
+++ b/docs/nodejs/classes/ExternalObject.html
@@ -1,3 +1,3 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ExternalObject | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ExternalObject | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="ExternalObject.html#reflection-5" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span><em>Property</em></span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ext [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ext [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Layer.html b/docs/nodejs/classes/Layer.html
index 39500481fa..9135fbf33a 100644
--- a/docs/nodejs/classes/Layer.html
+++ b/docs/nodejs/classes/Layer.html
@@ -1,3 +1,3 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Layer | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../ [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L659">generated.d.ts:659</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L659">generated.d.ts:659</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Lay [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index d8d65c861f..794972739a 100644
--- a/docs/nodejs/classes/Lister.html
+++ b/docs/nodejs/classes/Lister.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Lister | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L640">generated.d.ts:640</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L640">generated.d.ts:640</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Lister.html#next" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>next</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Lis [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>napi will make sure the function is safe, and we didn&#39;t do unsafe
 thing internally.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2 [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index 2740cc2ed2..8aa5d4e898 100644
--- a/docs/nodejs/classes/Metadata.html
+++ b/docs/nodejs/classes/Metadata.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Metadata | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=" [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L520">generated.d.ts:520</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L520">generated.d.ts:520</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="Metadata.html#contentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Disposition</span></a>
 <a href="Metadata.html#contentLength" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Length</span></a>
 <a href="Metadata.html#contentMd5" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Md5</span></a>
@@ -9,12 +9,12 @@
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Metadata.html#isDirectory" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>is<wbr/>Directory</span></a>
 <a href="Metadata.html#isFile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>is<wbr/>File</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Met [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L526">generated.d.ts:526</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentLength" cla [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L528">generated.d.ts:528</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentMd5" class= [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L530">generated.d.ts:530</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentType" class [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L532">generated.d.ts:532</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="etag" class="tsd-a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L534">generated.d.ts:534</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="lastModified" clas [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L526">generated.d.ts:526</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentLength" cla [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L528">generated.d.ts:528</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentMd5" class= [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L530">generated.d.ts:530</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentType" class [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L532">generated.d.ts:532</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="etag" class="tsd-a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L534">generated.d.ts:534</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="lastModified" clas [...]
 <p>We will output this time in RFC3339 format like <code>1996-12-19T16:39:57+08:00</code>.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L540">generated.d.ts:540</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2 [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L522">generated.d.ts:522</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="isFile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>File</span><a href="#isFile" aria [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L524">generated.d.ts:524</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary clas [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L540">generated.d.ts:540</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2 [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L522">generated.d.ts:522</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="isFile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>File</span><a href="#isFile" aria [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L524">generated.d.ts:524</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary clas [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index 9fb1c4ded1..c475dd8bbf 100644
--- a/docs/nodejs/classes/Operator.html
+++ b/docs/nodejs/classes/Operator.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Operator | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=" [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Operator | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=" [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Operator.html#append" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>append</span></a>
 <a href="Operator.html#capability" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>capability</span></a>
 <a href="Operator.html#check" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>check</span></a>
@@ -31,45 +31,45 @@
 <a href="Operator.html#writer" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>writer</span></a>
 <a href="Operator.html#writerSync" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>writer<wbr/>Sync</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ope [...]
-</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L148">generated.d.ts:148</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="append" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>append</span><a href="#append" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24 [...]
+</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L148">generated.d.ts:148</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="append" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>append</span><a href="#append" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24 [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><ul>
 <li>It always appends content to the end of the file.</li>
 <li>It will create file if the path not exists.</li>
 </ul>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">append</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-5">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><sp [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
-</div><h4 class="tsd-returns-title">Returns <a href="Capability.html" class="tsd-signature-type tsd-kind-class">Capability</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L150">generated.d.ts:150</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="check" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>check</ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
+</div><h4 class="tsd-returns-title">Returns <a href="Capability.html" class="tsd-signature-type tsd-kind-class">Capability</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L150">generated.d.ts:150</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="check" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>check</ [...]
 <p>We will send a <code>list</code> request to path and return any errors we met.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">check</span><span class="hl-1">();</span>
 </code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L193">generated.d.ts:193</a></li></ul></aside></li></ul></section><section class [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L193">generated.d.ts:193</a></li></ul></aside></li></ul></section><section class [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">copy</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">copySync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">createDir</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">createDirSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generat [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generat [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>Delete not existing error won’t return errors.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">delete</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">deleteSync</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generat [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generat [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">isExist</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">isExistSync</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/gene [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">layer</span>: <a href="ExternalObject.html" class="tsd-signature-type tsd-kind-class">ExternalObject</a><span class="tsd-signature-symbol">&lt;</span><a href="Layer.html" class="tsd-signature-type tsd-kind-class">Layer</a><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Op [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/gene [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">layer</span>: <a href="ExternalObject.html" class="tsd-signature-type tsd-kind-class">ExternalObject</a><span class="tsd-signature-symbol">&lt;</span><a href="Layer.html" class="tsd-signature-type tsd-kind-class">Layer</a><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Op [...]
 <p>This function will return an array of entries.</p>
 <p>An error will be returned if given path doesn&#39;t end with <code>/</code>.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">list</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span><br/ [...]
@@ -77,7 +77,7 @@
 <a id="md:list-recursively" class="tsd-anchor"></a><h4><a href="#md:list-recursively">List recursively</a></h4><p>With <code>recursive</code> option, you can list recursively.</p>
 <pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">list</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">, { </span><span class="hl-5">recursive:</span><span class="hl-1"> </span><span class="hl-6">true [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
 <p>This function will return a array of entries.</p>
 <p>An error will be returned if given path doesn&#39;t end with <code>/</code>.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">listSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span><br/><span class="hl-4">for</span><span class="hl-1"> (</s [...]
@@ -85,45 +85,45 @@
 <a id="md:list-recursively" class="tsd-anchor"></a><h4><a href="#md:list-recursively">List recursively</a></h4><p>With <code>recursive</code> option, you can list recursively.</p>
 <pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">listSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">, { </span><span class="hl-5">recursive:</span><span class="hl-1"> </span><span class="hl-6">true</span><span class="hl-1"> });</span><br/><span class= [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
 <p>Unit of expires is seconds.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">req</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">presignRead</span><span class="hl-1">(</span><span class="hl-5">path</span><span class="hl-1">, </span><span class="hl-0" [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
 <p>Unit of expires is seconds.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">req</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">presignStat</span><span class="hl-1">(</span><span class="hl-5">path</span><span class="hl-1">, </span><span class="hl-0" [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
 <p>Unit of expires is seconds.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">req</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">presignWrite</span><span class="hl-1">(</span><span class="hl-5">path</span><span class="hl-1">, </span><span class="hl-0 [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">buf</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">read</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">buf</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">readSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Buffer</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/gene [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Buffer</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/gene [...]
 <p>It could be used to read large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Reader.html" class="tsd-signature-type tsd-kind-class">Reader</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Reader.html" class="tsd-signature-type tsd-kind-class">Reader</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
 <p>It could be used to read large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingReader.html" class="tsd-signature-type tsd-kind-class">BlockingReader</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingReader.html" class="tsd-signature-type tsd-kind-class">BlockingReader</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>If underlying services support delete in batch, we will use batch delete instead.</p>
 <a id="md:examples" class="tsd-anchor"></a><h3><a href="#md:examples">Examples</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">([</span><span class="hl-2">&quot;abc&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;def&quot;</span><span class="hl-1">]);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">paths</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&g [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">paths</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&g [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>If underlying services support delete in batch, we will use batch delete instead.</p>
 <a id="md:examples" class="tsd-anchor"></a><h3><a href="#md:examples">Examples</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">removeAll</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
 <p>It&#39;s similar to <code>mv</code> command.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">rename</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
 <p>It&#39;s similar to <code>mv</code> command.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">renameSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>Use stat if you:</p>
 <ul>
 <li>Want detect the outside changes of path.</li>
@@ -132,17 +132,17 @@
 <p>You may want to use <code>metadata</code> if you are working with entries returned by <code>Lister</code>. It’s highly possible that metadata you want has already been cached.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">meta</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">stat</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span><br/><span c [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">&gt;</span></ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">&gt;</span></ [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">meta</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">statSync</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span><br/><span class="hl-4">if</span><span class="hl-1"> (</span><span [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/bl [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/bl [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">write</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-5">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><spa [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writeSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-5">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><span class="hl-2">&quot;hello world&quot;</span><span cla [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
 <p>It could be used to write large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Writer.html" class="tsd-signature-type tsd-kind-class">Writer</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Writer.html" class="tsd-signature-type tsd-kind-class">Writer</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
 <p>It could be used to write large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingWriter.html" class="tsd-signature-type tsd-kind-class">BlockingWriter</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingWriter.html" class="tsd-signature-type tsd-kind-class">BlockingWriter</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Reader.html b/docs/nodejs/classes/Reader.html
index 37c346cc9b..68cf8305c8 100644
--- a/docs/nodejs/classes/Reader.html
+++ b/docs/nodejs/classes/Reader.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Reader | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L553">generated.d.ts:553</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L553">generated.d.ts:553</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Reader.html#createReadStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Read<wbr/>Stream</span></a>
 <a href="Reader.html#read" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>read</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Rea [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>Read bytes from this reader into given buffer.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">buf</span>: <span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">bigint</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-t [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">buf</span>: <span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">bigint</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-t [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/RetryLayer.html b/docs/nodejs/classes/RetryLayer.html
index 076b71f27a..2193a2e468 100644
--- a/docs/nodejs/classes/RetryLayer.html
+++ b/docs/nodejs/classes/RetryLayer.html
@@ -6,27 +6,27 @@ returns true. If operation still failed, this layer will set error to
 <p><code>write</code> and <code>blocking_write</code> don&#39;t support retry so far, visit <a href="https://github.com/apache/opendal/issues/1223">this issue</a> for more details.</p>
 <a id="md:examples" class="tsd-anchor"></a><h1><a href="#md:examples">Examples</a></h1><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">op</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">Operator</span><span class="hl-1">(</span><span class="hl-2">&quot;file&quot;</span><span class="hl-1">, { </span><span class="hl-5">root:</span><span class="hl-1"> </span><spa [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L685">generated.d.ts:685</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L685">generated.d.ts:685</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="RetryLayer.html#factor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>factor</span></a>
 <a href="RetryLayer.html#jitter" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>jitter</span></a>
 <a href="RetryLayer.html#maxDelay" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>max<wbr/>Delay</span></a>
 <a href="RetryLayer.html#maxTimes" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>max<wbr/>Times</span></a>
 <a href="RetryLayer.html#minDelay" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>min<wbr/>Delay</span></a>
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="RetryLayer.html#build" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>build</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ret [...]
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ret [...]
 <a id="md:panics" class="tsd-anchor"></a><h1><a href="#md:panics">Panics</a></h1><p>This function will panic if input factor smaller than <code>1.0</code>.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated. [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated. [...]
 <p>If jitter is enabled, ExponentialBackoff will add a random jitter in `[0, min_delay)
 to current delay.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">boolean</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">boolean</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated [...]
 <p>Delay will not increasing if current delay is larger than max_delay.</p>
 <a id="md:notes" class="tsd-anchor"></a><h1><a href="#md:notes">Notes</a></h1><ul>
 <li>The unit of max_delay is millisecond.</li>
 </ul>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated. [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated. [...]
 <p>Backoff will return <code>None</code> if max times is reaching.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated. [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated. [...]
 <a id="md:notes" class="tsd-anchor"></a><h1><a href="#md:notes">Notes</a></h1><ul>
 <li>The unit of min_delay is millisecond.</li>
 </ul>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated. [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated. [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Writer.html b/docs/nodejs/classes/Writer.html
index 23bf059ea0..0d46f51dab 100644
--- a/docs/nodejs/classes/Writer.html
+++ b/docs/nodejs/classes/Writer.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Writer | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L604">generated.d.ts:604</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/index.d.ts#L37">index.d.ts:37</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L604">generated.d.ts:604</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/index.d.ts#L37">index.d.ts:37</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content  [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Writer.html#close" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>close</span></a>
 <a href="Writer.html#createWriteStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Write<wbr/>Stream</span></a>
 <a href="Writer.html#write" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>write</span></a>
@@ -10,11 +10,11 @@ manner.</p>
 <p>Close this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span> [...]
 </code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L634">generated.d.ts:634</a></li></ul></aside></li></ul></section><section class [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L634">generated.d.ts:634</a></li></ul></aside></li></ul></section><section class [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>Write bytes into this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span> [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type [...]
\ No newline at end of file
diff --git a/docs/nodejs/interfaces/ListOptions.html b/docs/nodejs/interfaces/ListOptions.html
index d593ed8a64..c654f0b574 100644
--- a/docs/nodejs/interfaces/ListOptions.html
+++ b/docs/nodejs/interfaces/ListOptions.html
@@ -1,3 +1,3 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ListOptions | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async sr [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ListOptions | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async sr [...]
 <a href="ListOptions.html#recursive" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>recursive?</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="limit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>limit</span><a href="#limit" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">li [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="limit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>limit</span><a href="#limit" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">li [...]
\ No newline at end of file
diff --git a/docs/nodejs/interfaces/PresignedRequest.html b/docs/nodejs/interfaces/PresignedRequest.html
index 48deead631..53d5b61ad3 100644
--- a/docs/nodejs/interfaces/PresignedRequest.html
+++ b/docs/nodejs/interfaces/PresignedRequest.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PresignedRequest | Apache OpenDAL™ - v0.46.1</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script asy [...]
-</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">PresignedRequest </span><span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="PresignedRequest.html#headers">headers</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol">&lt;</span><span class=" [...]
+</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">PresignedRequest </span><span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="PresignedRequest.html#headers">headers</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol">&lt;</span><span class=" [...]
 <a href="PresignedRequest.html#method" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>method</span></a>
 <a href="PresignedRequest.html#url" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>url</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="headers" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>headers</span><a href="#headers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">headers</span><span class="tsd-signature-symbol">: [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L42">generated.d.ts:42</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="method" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L38">generated.d.ts:38</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="url" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><di [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/f2aa333/bindings/nodejs/generated.d.ts#L40">generated.d.ts:40</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L42">generated.d.ts:42</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="method" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L38">generated.d.ts:38</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="url" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><di [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/5b89208/bindings/nodejs/generated.d.ts#L40">generated.d.ts:40</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
diff --git a/docs/object-store/index.html b/docs/object-store/index.html
new file mode 100644
index 0000000000..170f32eaae
--- /dev/null
+++ b/docs/object-store/index.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-object-store" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">object_store Integration | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/object-store"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en" [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>Read the latest stable version instead at <a href="https://docs.rs/object_store_opendal/latest/object_store_opendal/index.html" target="_blank" rel="noopener noreferrer">https://docs.rs/object_store_opendal/latest/object_store_opendal/index.html</a>.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/object-store.md" target="_blank" rel="noopener n [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 49dff282da..e677b45c15 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Welcome to Apache OpenDAL™ | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/overview"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>OpenDAL represents <strong>Open</strong> <strong>D</strong>ata <strong>A</strong>ccess <strong>L</strong>ayer. Our vision is to <strong>access data freely</strong>.</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="what-does-opendal-do">What does OpenDAL do?<a href="#what-does-opendal-do" class="hash-link" aria-label="Direct link to What does OpenDAL do?" title="Direct link to What does OpenDAL do?">​</a></h2>
 <p><img decoding="async" loading="lazy" src="https://user-images.githubusercontent.com/5351546/222356748-14276998-501b-4d2a-9b09-b8cff3018204.png" alt="" class="img_U3rc"></p>
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 568802bc38..f1552cadd0 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -246,22 +246,22 @@
                     <a class="class" href="#Metadata">Metadata</a>
                             <ul class="memberlist">
                         <li>
-                                <a class="variable" href="#Metadata.content_type">content_type</a>
+                                <a class="variable" href="#Metadata.mode">mode</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_length">content_length</a>
+                                <a class="variable" href="#Metadata.etag">etag</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_disposition">content_disposition</a>
+                                <a class="variable" href="#Metadata.content_md5">content_md5</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_md5">content_md5</a>
+                                <a class="variable" href="#Metadata.content_disposition">content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.etag">etag</a>
+                                <a class="variable" href="#Metadata.content_length">content_length</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.mode">mode</a>
+                                <a class="variable" href="#Metadata.content_type">content_type</a>
                         </li>
                 </ul>
 
@@ -269,15 +269,15 @@
             <li>
                     <a class="class" href="#PresignedRequest">PresignedRequest</a>
                             <ul class="memberlist">
-                        <li>
-                                <a class="variable" href="#PresignedRequest.method">method</a>
-                        </li>
                         <li>
                                 <a class="variable" href="#PresignedRequest.headers">headers</a>
                         </li>
                         <li>
                                 <a class="variable" href="#PresignedRequest.url">url</a>
                         </li>
+                        <li>
+                                <a class="variable" href="#PresignedRequest.method">method</a>
+                        </li>
                 </ul>
 
             </li>
@@ -285,112 +285,112 @@
                     <a class="class" href="#Capability">Capability</a>
                             <ul class="memberlist">
                         <li>
-                                <a class="variable" href="#Capability.write_can_append">write_can_append</a>
+                                <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read">read</a>
+                                <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
+                                <a class="variable" href="#Capability.read_with_if_none_match">read_with_if_none_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
+                                <a class="variable" href="#Capability.create_dir">create_dir</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
+                                <a class="variable" href="#Capability.delete">delete</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</a>
+                                <a class="variable" href="#Capability.read_with_override_content_disposition">read_with_override_content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
+                                <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write">write</a>
+                                <a class="variable" href="#Capability.batch">batch</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.create_dir">create_dir</a>
+                                <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.blocking">blocking</a>
+                                <a class="variable" href="#Capability.presign_write">presign_write</a>
                         </li>
                         <li>
                                 <a class="variable" href="#Capability.copy">copy</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
+                                <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_if_none_match">read_with_if_none_match</a>
+                                <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_max_size">write_multi_max_size</a>
+                                <a class="variable" href="#Capability.read">read</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_content_disposition">read_with_override_content_disposition</a>
+                                <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
+                                <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
+                                <a class="variable" href="#Capability.presign_read">presign_read</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.rename">rename</a>
+                                <a class="variable" href="#Capability.write_multi_min_size">write_multi_min_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
+                                <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_stat">presign_stat</a>
+                                <a class="variable" href="#Capability.presign">presign</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch_delete">batch_delete</a>
+                                <a class="variable" href="#Capability.write_can_empty">write_can_empty</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_read">presign_read</a>
+                                <a class="variable" href="#Capability.rename">rename</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_cache_control">read_with_override_cache_control</a>
+                                <a class="variable" href="#Capability.write_multi_max_size">write_multi_max_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.delete">delete</a>
+                                <a class="variable" href="#Capability.blocking">blocking</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
+                                <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_write">presign_write</a>
+                                <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch">batch</a>
+                                <a class="variable" href="#Capability.stat">stat</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_min_size">write_multi_min_size</a>
+                                <a class="variable" href="#Capability.write">write</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list">list</a>
+                                <a class="variable" href="#Capability.read_with_override_cache_control">read_with_override_cache_control</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
+                                <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat">stat</a>
+                                <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</a>
+                                <a class="variable" href="#Capability.presign_stat">presign_stat</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_can_empty">write_can_empty</a>
+                                <a class="variable" href="#Capability.list">list</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign">presign</a>
+                                <a class="variable" href="#Capability.batch_delete">batch_delete</a>
                         </li>
                         <li>
                                 <a class="variable" href="#Capability.write_total_max_size">write_total_max_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
+                                <a class="variable" href="#Capability.write_can_append">write_can_append</a>
                         </li>
                 </ul>
 
@@ -1456,78 +1456,78 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <div id="Metadata.content_type" class="classattr">
+                            <div id="Metadata.mode" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
+            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">EntryMode</a></span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_type"></a>
+    <a class="headerlink" href="#Metadata.mode"></a>
     
-            <div class="docstring"><p>Content Type of this entry.</p>
+            <div class="docstring"><p>mode represent this entry's mode.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_length" class="classattr">
+                            <div id="Metadata.etag" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_length</span><span class="annotation">: int</span>
+            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_length"></a>
+    <a class="headerlink" href="#Metadata.etag"></a>
     
-            <div class="docstring"><p>Content length of this entry.</p>
+            <div class="docstring"><p>ETag of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_disposition" class="classattr">
+                            <div id="Metadata.content_md5" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_disposition</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_disposition"></a>
-    
+    <a class="headerlink" href="#Metadata.content_md5"></a>
     
+            <div class="docstring"><p>Content MD5 of this entry.</p>
+</div>
+
 
                             </div>
-                            <div id="Metadata.content_md5" class="classattr">
+                            <div id="Metadata.content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_disposition</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_md5"></a>
+    <a class="headerlink" href="#Metadata.content_disposition"></a>
+    
     
-            <div class="docstring"><p>Content MD5 of this entry.</p>
-</div>
-
 
                             </div>
-                            <div id="Metadata.etag" class="classattr">
+                            <div id="Metadata.content_length" class="classattr">
                                 <div class="attr variable">
-            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_length</span><span class="annotation">: int</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.etag"></a>
+    <a class="headerlink" href="#Metadata.content_length"></a>
     
-            <div class="docstring"><p>ETag of this entry.</p>
+            <div class="docstring"><p>Content length of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.mode" class="classattr">
+                            <div id="Metadata.content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">EntryMode</a></span>
+            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.mode"></a>
+    <a class="headerlink" href="#Metadata.content_type"></a>
     
-            <div class="docstring"><p>mode represent this entry's mode.</p>
+            <div class="docstring"><p>Content Type of this entry.</p>
 </div>
 
 
@@ -1545,41 +1545,41 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <div id="PresignedRequest.method" class="classattr">
+                            <div id="PresignedRequest.headers" class="classattr">
                                 <div class="attr variable">
-            <span class="name">method</span><span class="annotation">: str</span>
+            <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.method"></a>
+    <a class="headerlink" href="#PresignedRequest.headers"></a>
     
-            <div class="docstring"><p>Return the HTTP method of this request.</p>
+            <div class="docstring"><p>Return the HTTP headers of this request.</p>
 </div>
 
 
                             </div>
-                            <div id="PresignedRequest.headers" class="classattr">
+                            <div id="PresignedRequest.url" class="classattr">
                                 <div class="attr variable">
-            <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
+            <span class="name">url</span><span class="annotation">: str</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.headers"></a>
+    <a class="headerlink" href="#PresignedRequest.url"></a>
     
-            <div class="docstring"><p>Return the HTTP headers of this request.</p>
+            <div class="docstring"><p>Return the URL of this request.</p>
 </div>
 
 
                             </div>
-                            <div id="PresignedRequest.url" class="classattr">
+                            <div id="PresignedRequest.method" class="classattr">
                                 <div class="attr variable">
-            <span class="name">url</span><span class="annotation">: str</span>
+            <span class="name">method</span><span class="annotation">: str</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.url"></a>
+    <a class="headerlink" href="#PresignedRequest.method"></a>
     
-            <div class="docstring"><p>Return the URL of this request.</p>
+            <div class="docstring"><p>Return the HTTP method of this request.</p>
 </div>
 
 
@@ -1600,132 +1600,132 @@ by current Operator.</p>
 </div>
 
 
-                            <div id="Capability.write_can_append" class="classattr">
+                            <div id="Capability.write_can_multi" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_can_append</span><span class="annotation">: bool</span>
+            <span class="name">write_can_multi</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_can_append"></a>
+    <a class="headerlink" href="#Capability.write_can_multi"></a>
     
-            <div class="docstring"><p>If operator supports write by append.</p>
+            <div class="docstring"><p>If operator supports write can be called in multi times.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read" class="classattr">
+                            <div id="Capability.read_with_if_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read</span><span class="annotation">: bool</span>
+            <span class="name">read_with_if_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read"></a>
+    <a class="headerlink" href="#Capability.read_with_if_match"></a>
     
-            <div class="docstring"><p>If operator supports read.</p>
+            <div class="docstring"><p>If operator supports read with if match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_content_type" class="classattr">
+                            <div id="Capability.read_with_if_none_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_content_type</span><span class="annotation">: bool</span>
+            <span class="name">read_with_if_none_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_content_type"></a>
+    <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
     
-            <div class="docstring"><p>If operator supports write with content type.</p>
+            <div class="docstring"><p>If operator supports read with if none match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_if_match" class="classattr">
+                            <div id="Capability.create_dir" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_if_match</span><span class="annotation">: bool</span>
+            <span class="name">create_dir</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_if_match"></a>
+    <a class="headerlink" href="#Capability.create_dir"></a>
     
-            <div class="docstring"><p>If operator supports read with if match.</p>
+            <div class="docstring"><p>If operator supports create dir.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_content_disposition" class="classattr">
+                            <div id="Capability.delete" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_content_disposition</span><span class="annotation">: bool</span>
+            <span class="name">delete</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
+    <a class="headerlink" href="#Capability.delete"></a>
     
-            <div class="docstring"><p>If operator supports write with content disposition.</p>
+            <div class="docstring"><p>If operator supports delete.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_start_after" class="classattr">
+                            <div id="Capability.read_with_override_content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_start_after</span><span class="annotation">: bool</span>
+            <span class="name">read_with_override_content_disposition</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_start_after"></a>
+    <a class="headerlink" href="#Capability.read_with_override_content_disposition"></a>
     
-            <div class="docstring"><p>If backend supports list with start after.</p>
+            <div class="docstring"><p>if operator supports read with override content disposition.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_can_multi" class="classattr">
+                            <div id="Capability.read_with_override_content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_can_multi</span><span class="annotation">: bool</span>
+            <span class="name">read_with_override_content_type</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_can_multi"></a>
+    <a class="headerlink" href="#Capability.read_with_override_content_type"></a>
     
-            <div class="docstring"><p>If operator supports write can be called in multi times.</p>
+            <div class="docstring"><p>if operator supports read with override content type.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write" class="classattr">
+                            <div id="Capability.batch" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write</span><span class="annotation">: bool</span>
+            <span class="name">batch</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write"></a>
+    <a class="headerlink" href="#Capability.batch"></a>
     
-            <div class="docstring"><p>If operator supports write.</p>
+            <div class="docstring"><p>If operator supports batch.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.create_dir" class="classattr">
+                            <div id="Capability.list_with_limit" class="classattr">
                                 <div class="attr variable">
-            <span class="name">create_dir</span><span class="annotation">: bool</span>
+            <span class="name">list_with_limit</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.create_dir"></a>
+    <a class="headerlink" href="#Capability.list_with_limit"></a>
     
-            <div class="docstring"><p>If operator supports create dir.</p>
+            <div class="docstring"><p>If backend supports list with limit.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.blocking" class="classattr">
+                            <div id="Capability.presign_write" class="classattr">
                                 <div class="attr variable">
-            <span class="name">blocking</span><span class="annotation">: bool</span>
+            <span class="name">presign_write</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.blocking"></a>
+    <a class="headerlink" href="#Capability.presign_write"></a>
     
-            <div class="docstring"><p>If operator supports blocking.</p>
+            <div class="docstring"><p>If operator supports presign write.</p>
 </div>
 
 
@@ -1743,307 +1743,307 @@ by current Operator.</p>
 
 
                             </div>
-                            <div id="Capability.batch_max_operations" class="classattr">
+                            <div id="Capability.stat_with_if_none_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch_max_operations</span><span class="annotation">: Optional[int]</span>
+            <span class="name">stat_with_if_none_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch_max_operations"></a>
+    <a class="headerlink" href="#Capability.stat_with_if_none_match"></a>
     
-            <div class="docstring"><p>The max operations that operator supports in batch.</p>
+            <div class="docstring"><p>If operator supports stat with if none match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_if_none_match" class="classattr">
+                            <div id="Capability.write_with_cache_control" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_if_none_match</span><span class="annotation">: bool</span>
+            <span class="name">write_with_cache_control</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
+    <a class="headerlink" href="#Capability.write_with_cache_control"></a>
     
-            <div class="docstring"><p>If operator supports read with if none match.</p>
+            <div class="docstring"><p>If operator supports write with cache control.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_max_size" class="classattr">
+                            <div id="Capability.read" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_max_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">read</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_max_size"></a>
+    <a class="headerlink" href="#Capability.read"></a>
     
-            <div class="docstring"><p>write_multi_max_size is the max size that services support in write_multi.</p>
-
-<p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
+            <div class="docstring"><p>If operator supports read.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_override_content_disposition" class="classattr">
+                            <div id="Capability.write_with_content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_content_disposition</span><span class="annotation">: bool</span>
+            <span class="name">write_with_content_type</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_override_content_disposition"></a>
+    <a class="headerlink" href="#Capability.write_with_content_type"></a>
     
-            <div class="docstring"><p>if operator supports read with override content disposition.</p>
+            <div class="docstring"><p>If operator supports write with content type.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_align_size" class="classattr">
+                            <div id="Capability.list_with_recursive" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_align_size"></a>
+    <a class="headerlink" href="#Capability.list_with_recursive"></a>
     
-            <div class="docstring"><p>write_multi_align_size is the align size that services required in write_multi.</p>
-
-<p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
+            <div class="docstring"><p>If backend supports list without delimiter.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat_with_if_none_match" class="classattr">
+                            <div id="Capability.presign_read" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat_with_if_none_match</span><span class="annotation">: bool</span>
+            <span class="name">presign_read</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.stat_with_if_none_match"></a>
+    <a class="headerlink" href="#Capability.presign_read"></a>
     
-            <div class="docstring"><p>If operator supports stat with if none match.</p>
+            <div class="docstring"><p>If operator supports presign read.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.rename" class="classattr">
+                            <div id="Capability.write_multi_min_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">rename</span><span class="annotation">: bool</span>
+            <span class="name">write_multi_min_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.rename"></a>
+    <a class="headerlink" href="#Capability.write_multi_min_size"></a>
     
-            <div class="docstring"><p>If operator supports rename.</p>
+            <div class="docstring"><p>write_multi_min_size is the min size that services support in write_multi.</p>
+
+<p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_recursive" class="classattr">
+                            <div id="Capability.list_with_start_after" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
+            <span class="name">list_with_start_after</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_recursive"></a>
+    <a class="headerlink" href="#Capability.list_with_start_after"></a>
     
-            <div class="docstring"><p>If backend supports list without delimiter.</p>
+            <div class="docstring"><p>If backend supports list with start after.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_stat" class="classattr">
+                            <div id="Capability.presign" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_stat</span><span class="annotation">: bool</span>
+            <span class="name">presign</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_stat"></a>
+    <a class="headerlink" href="#Capability.presign"></a>
     
-            <div class="docstring"><p>If operator supports presign stat.</p>
+            <div class="docstring"><p>If operator supports presign.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.batch_delete" class="classattr">
+                            <div id="Capability.write_can_empty" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch_delete</span><span class="annotation">: bool</span>
+            <span class="name">write_can_empty</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch_delete"></a>
+    <a class="headerlink" href="#Capability.write_can_empty"></a>
     
-            <div class="docstring"><p>If operator supports batch delete.</p>
+            <div class="docstring"><p>If operator supports write with empty content.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_read" class="classattr">
+                            <div id="Capability.rename" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_read</span><span class="annotation">: bool</span>
+            <span class="name">rename</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_read"></a>
+    <a class="headerlink" href="#Capability.rename"></a>
     
-            <div class="docstring"><p>If operator supports presign read.</p>
+            <div class="docstring"><p>If operator supports rename.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_override_cache_control" class="classattr">
+                            <div id="Capability.write_multi_max_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_cache_control</span><span class="annotation">: bool</span>
+            <span class="name">write_multi_max_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_override_cache_control"></a>
+    <a class="headerlink" href="#Capability.write_multi_max_size"></a>
     
-            <div class="docstring"><p>if operator supports read with override cache control.</p>
+            <div class="docstring"><p>write_multi_max_size is the max size that services support in write_multi.</p>
+
+<p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.delete" class="classattr">
+                            <div id="Capability.blocking" class="classattr">
                                 <div class="attr variable">
-            <span class="name">delete</span><span class="annotation">: bool</span>
+            <span class="name">blocking</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.delete"></a>
+    <a class="headerlink" href="#Capability.blocking"></a>
     
-            <div class="docstring"><p>If operator supports delete.</p>
+            <div class="docstring"><p>If operator supports blocking.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_cache_control" class="classattr">
+                            <div id="Capability.write_multi_align_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_cache_control</span><span class="annotation">: bool</span>
+            <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_cache_control"></a>
+    <a class="headerlink" href="#Capability.write_multi_align_size"></a>
     
-            <div class="docstring"><p>If operator supports write with cache control.</p>
+            <div class="docstring"><p>write_multi_align_size is the align size that services required in write_multi.</p>
+
+<p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_write" class="classattr">
+                            <div id="Capability.write_with_content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_write</span><span class="annotation">: bool</span>
+            <span class="name">write_with_content_disposition</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_write"></a>
+    <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
     
-            <div class="docstring"><p>If operator supports presign write.</p>
+            <div class="docstring"><p>If operator supports write with content disposition.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.batch" class="classattr">
+                            <div id="Capability.stat" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch</span><span class="annotation">: bool</span>
+            <span class="name">stat</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch"></a>
+    <a class="headerlink" href="#Capability.stat"></a>
     
-            <div class="docstring"><p>If operator supports batch.</p>
+            <div class="docstring"><p>If operator supports stat.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_min_size" class="classattr">
+                            <div id="Capability.write" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_min_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">write</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_min_size"></a>
+    <a class="headerlink" href="#Capability.write"></a>
     
-            <div class="docstring"><p>write_multi_min_size is the min size that services support in write_multi.</p>
-
-<p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
+            <div class="docstring"><p>If operator supports write.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list" class="classattr">
+                            <div id="Capability.read_with_override_cache_control" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list</span><span class="annotation">: bool</span>
+            <span class="name">read_with_override_cache_control</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list"></a>
+    <a class="headerlink" href="#Capability.read_with_override_cache_control"></a>
     
-            <div class="docstring"><p>If operator supports list.</p>
+            <div class="docstring"><p>if operator supports read with override cache control.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat_with_if_match" class="classattr">
+                            <div id="Capability.batch_max_operations" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat_with_if_match</span><span class="annotation">: bool</span>
+            <span class="name">batch_max_operations</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.stat_with_if_match"></a>
+    <a class="headerlink" href="#Capability.batch_max_operations"></a>
     
-            <div class="docstring"><p>If operator supports stat with if match.</p>
+            <div class="docstring"><p>The max operations that operator supports in batch.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat" class="classattr">
+                            <div id="Capability.stat_with_if_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat</span><span class="annotation">: bool</span>
+            <span class="name">stat_with_if_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.stat"></a>
+    <a class="headerlink" href="#Capability.stat_with_if_match"></a>
     
-            <div class="docstring"><p>If operator supports stat.</p>
+            <div class="docstring"><p>If operator supports stat with if match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_override_content_type" class="classattr">
+                            <div id="Capability.presign_stat" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_content_type</span><span class="annotation">: bool</span>
+            <span class="name">presign_stat</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_override_content_type"></a>
+    <a class="headerlink" href="#Capability.presign_stat"></a>
     
-            <div class="docstring"><p>if operator supports read with override content type.</p>
+            <div class="docstring"><p>If operator supports presign stat.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_can_empty" class="classattr">
+                            <div id="Capability.list" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_can_empty</span><span class="annotation">: bool</span>
+            <span class="name">list</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_can_empty"></a>
+    <a class="headerlink" href="#Capability.list"></a>
     
-            <div class="docstring"><p>If operator supports write with empty content.</p>
+            <div class="docstring"><p>If operator supports list.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign" class="classattr">
+                            <div id="Capability.batch_delete" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign</span><span class="annotation">: bool</span>
+            <span class="name">batch_delete</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign"></a>
+    <a class="headerlink" href="#Capability.batch_delete"></a>
     
-            <div class="docstring"><p>If operator supports presign.</p>
+            <div class="docstring"><p>If operator supports batch delete.</p>
 </div>
 
 
@@ -2063,15 +2063,15 @@ by current Operator.</p>
 
 
                             </div>
-                            <div id="Capability.list_with_limit" class="classattr">
+                            <div id="Capability.write_can_append" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_limit</span><span class="annotation">: bool</span>
+            <span class="name">write_can_append</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_limit"></a>
+    <a class="headerlink" href="#Capability.write_can_append"></a>
     
-            <div class="docstring"><p>If backend supports list with limit.</p>
+            <div class="docstring"><p>If operator supports write by append.</p>
 </div>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index 978e68a2af..fb28dd4937 100644
--- a/docs/python/search.js
+++ b/docs/python/search.js
@@ -1,6 +1,6 @@
 window.pdocSearch = (function(){
 /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.wa [...]
-    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>Apache OpenDAL\u2122 Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\ [...]
+    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>Apache OpenDAL\u2122 Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\ [...]
 
     // mirrored in build-search-index.js (part 1)
     // Also split on html tags. this is a cheap heuristic, but good enough.
diff --git a/docs/quickstart/index.html b/docs/quickstart/index.html
index 60e2c64a8f..968e3650dc 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -4,19 +4,19 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Quickstart | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/quickstart"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh=" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="rust-core">Rust core<a href="#rust-core" class="hash-link" aria-label="Direct link to Rust core" title="Direct link to Rust core">​</a></h2>
 <p>OpenDAL&#x27;s core is implemented in Rust programming language. The most convenient way to use OpenDAL in your Rust program add the OpenDAL Cargo crate as a dependency.</p>
 <h3 class="anchor anchorWithStickyNavbar_VwHQ" id="install">Install<a href="#install" class="hash-link" aria-label="Direct link to Install" title="Direct link to Install">​</a></h3>
 <p>Run the following Cargo command in your project directory:</p>
 <div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">cargo add opendal</span><br></span></code></pre><div class="buttonGroup_fpPU"><button typ [...]
 <p>Or add the following line to your Cargo.toml:</p>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">opendal = &quot;0.40.0&quot;</span><br></span></code></pre><div class="buttonGroup_fpPU"> [...]
+<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">opendal = &quot;0.46.0&quot;</span><br></span></code></pre><div class="buttonGroup_fpPU"> [...]
 <h3 class="anchor anchorWithStickyNavbar_VwHQ" id="demo">Demo<a href="#demo" class="hash-link" aria-label="Direct link to Demo" title="Direct link to Demo">​</a></h3>
 <p>Try it out:</p>
 <div class="language-rust codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">use</span><span class="token plain"> </span><span class="token name [...]
@@ -53,6 +53,6 @@
 <div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">npm install opendal</span><br></span></code></pre><div class="buttonGroup_fpPU"><button t [...]
 <h3 class="anchor anchorWithStickyNavbar_VwHQ" id="demo-3">Demo<a href="#demo-3" class="hash-link" aria-label="Direct link to Demo" title="Direct link to Demo">​</a></h3>
 <p>Try it out:</p>
-<div class="language-javascript codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-javascript codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span>< [...]
+<div class="language-javascript codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-javascript codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span>< [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/rust-core/index.html b/docs/rust-core/index.html
new file mode 100644
index 0000000000..f3f2550c7e
--- /dev/null
+++ b/docs/rust-core/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-rust-core" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">Rust Core | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/rust-core"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tr [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<p>Read the latest stable version instead at <a href="https://docs.rs/opendal/latest/opendal/index.html" target="_blank" rel="noopener noreferrer">https://docs.rs/opendal/latest/opendal/index.html</a>.</p>
+<p>Below are selected docs you should read:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table><thead><tr><th>Topic</th><th>Link</th></tr></thead><tbody><tr><td>Usage</td><td><a href="https://docs.rs/opendal/latest/opendal/index.html" target="_blank" rel="noopener noreferrer">https://docs.rs/opendal/latest/opendal/index.html</a></td></tr><tr><td>Concepts</td><td><a href="https://docs.rs/opendal/latest/opendal/docs/concepts/index.html" target="_blank" rel="noopener noreferrer">https://docs.rs/opendal/latest/opendal/docs/concepts/index.html</a></td></tr><tr><td>Services</td>< [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/services/atomicserver/index.html b/docs/services/atomicserver/index.html
deleted file mode 100644
index af525431aa..0000000000
--- a/docs/services/atomicserver/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/atomicserver" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">AtomicServer | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/atomicserver"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><m [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>endpoint</code>: Set the server address for <code>Atomicserver</code></li>
-<li><code>private_key</code>: Set the private key for agent used for <code>Atomicserver</code></li>
-<li><code>public_key</code>: Set the public key for agent used for <code>Atomicserver</code></li>
-<li><code>parent_resource_id</code>:  Set the parent resource id (url) that <code>Atomicserver</code> uses to store resources under</li>
-</ul>
-<p>You can refer to [<code>AtomicserverBuilder</code>]&#x27;s docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/azblob/index.html b/docs/services/azblob/index.html
deleted file mode 100644
index 99d84fed8d..0000000000
--- a/docs/services/azblob/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/azblob" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Azblob | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/azblob"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> append</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-<li><code>container</code>: Set the container name for backend.</li>
-<li><code>endpoint</code>: Set the endpoint for backend.</li>
-<li><code>account_name</code>: Set the account_name for backend.</li>
-<li><code>account_key</code>: Set the account_key for backend.</li>
-</ul>
-<p>Refer to public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h2>
-<p>This example works on <a href="https://github.com/Azure/Azurite" target="_blank" rel="noopener noreferrer">Azurite</a> for local developments.</p>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="start-local-blob-service">Start local blob service<a href="#start-local-blob-service" class="hash-link" aria-label="Direct link to Start local blob service" title="Direct link to Start local blob service">​</a></h3>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite</span><br></span><span  [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="init-opendal-operator">Init OpenDAL Operator<a href="#init-opendal-operator" class="hash-link" aria-label="Direct link to Init OpenDAL Operator" title="Direct link to Init OpenDAL Operator">​</a></h3>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/azdls/index.html b/docs/services/azdls/index.html
deleted file mode 100644
index 64255318ba..0000000000
--- a/docs/services/azdls/index.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/azdls" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Azdls | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/azdls"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<p>As known as <code>abfs</code>, <code>azdls</code> or <code>azdls</code>.</p>
-<p>This service will visit the <a href="https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-abfs-driver" target="_blank" rel="noopener noreferrer">ABFS</a> URI supported by <a href="https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction" target="_blank" rel="noopener noreferrer">Azure Data Lake Storage Gen2</a>.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="notes">Notes<a href="#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes">​</a></h2>
-<p><code>azdls</code> is different from <code>azfile</code> service which used to visit <a href="https://azure.microsoft.com/en-us/services/storage/files/" target="_blank" rel="noopener noreferrer">Azure File Storage</a>.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-<li><code>filesystem</code>: Set the filesystem name for backend.</li>
-<li><code>endpoint</code>: Set the endpoint for backend.</li>
-<li><code>account_name</code>: Set the account_name for backend.</li>
-<li><code>account_key</code>: Set the account_key for backend.</li>
-</ul>
-<p>Refer to public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/cacache/index.html b/docs/services/cacache/index.html
deleted file mode 100644
index 22a4a28509..0000000000
--- a/docs/services/cacache/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/cacache" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Cacache | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/cacache"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-r [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>datadir</code>: Set the path to the cacache data directory</li>
-</ul>
-<p>You can refer to [<code>CacacheBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/cos/index.html b/docs/services/cos/index.html
deleted file mode 100644
index cba0b33d85..0000000000
--- a/docs/services/cos/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/cos" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">COS | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/cos"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work directory for backend</li>
-<li><code>bucket</code>: Set the container name for backend</li>
-<li><code>endpoint</code>: Customizable endpoint setting</li>
-<li><code>access_key_id</code>: Set the access_key_id for backend.</li>
-<li><code>secret_access_key</code>: Set the secret_access_key for backend.</li>
-</ul>
-<p>You can refer to [<code>CosBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/d1/index.html b/docs/services/d1/index.html
deleted file mode 100644
index 70a2242f86..0000000000
--- a/docs/services/d1/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/d1" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">D1 | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/d1"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>token</code>: Set the token of cloudflare api</li>
-<li><code>account_id</code>: Set the account id of cloudflare api</li>
-<li><code>database_id</code>: Set the database id of cloudflare api</li>
-<li><code>table</code>: Set the table of D1 Database</li>
-<li><code>key_field</code>: Set the key field of D1 Database</li>
-<li><code>value_field</code>: Set the value field of D1 Database</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/dashmap/index.html b/docs/services/dashmap/index.html
deleted file mode 100644
index d23d6cdc7d..0000000000
--- a/docs/services/dashmap/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/dashmap" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">DashMap | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/dashmap"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-r [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/services/dashmap.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit__AOS" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1 [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/dropbox/index.html b/docs/services/dropbox/index.html
deleted file mode 100644
index 45c96d7eb3..0000000000
--- a/docs/services/dropbox/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/dropbox" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Dropbox | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/dropbox"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-r [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> batch</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work directory for this backend.</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="credentials-related">Credentials related<a href="#credentials-related" class="hash-link" aria-label="Direct link to Credentials related" title="Direct link to Credentials related">​</a></h3>
-<h4 class="anchor anchorWithStickyNavbar_VwHQ" id="just-provide-access-token-temporary">Just provide Access Token (Temporary)<a href="#just-provide-access-token-temporary" class="hash-link" aria-label="Direct link to Just provide Access Token (Temporary)" title="Direct link to Just provide Access Token (Temporary)">​</a></h4>
-<ul>
-<li><code>access_token</code>: set the access_token for this backend.
-Please notice its expiration.</li>
-</ul>
-<h4 class="anchor anchorWithStickyNavbar_VwHQ" id="or-provide-client-id-and-client-secret-and-refresh-token-long-term">Or provide Client ID and Client Secret and refresh token (Long Term)<a href="#or-provide-client-id-and-client-secret-and-refresh-token-long-term" class="hash-link" aria-label="Direct link to Or provide Client ID and Client Secret and refresh token (Long Term)" title="Direct link to Or provide Client ID and Client Secret and refresh token (Long Term)">​</a></h4>
-<p>If you want to let OpenDAL to refresh the access token automatically,
-please provide the following fields:</p>
-<ul>
-<li><code>refresh_token</code>: set the refresh_token for dropbox api</li>
-<li><code>client_id</code>: set the client_id for dropbox api</li>
-<li><code>client_secret</code>: set the client_secret for dropbox api</li>
-</ul>
-<p>OpenDAL is a library, it cannot do the first step of OAuth2 for you.
-You need to get authorization code from user by calling Dropbox&#x27;s authorize url
-and exchange it for refresh token.</p>
-<p>Please refer to <a href="https://www.dropbox.com/developers/reference/oauth-guide" target="_blank" rel="noopener noreferrer">Dropbox OAuth2 Guide</a>
-for more information.</p>
-<p>You can refer to [<code>DropboxBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/etcd/index.html b/docs/services/etcd/index.html
deleted file mode 100644
index 2fcadb76ff..0000000000
--- a/docs/services/etcd/index.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/etcd" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Etcd | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/etcd"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>endpoints</code>: Set the network address of etcd servers</li>
-<li><code>username</code>: Set the username of Etcd</li>
-<li><code>password</code>: Set the password for authentication</li>
-<li><code>ca_path</code>: Set the ca path to the etcd connection</li>
-<li><code>cert_path</code>: Set the cert path to the etcd connection</li>
-<li><code>key_path</code>: Set the key path to the etcd connection</li>
-</ul>
-<p>You can refer to [<code>EtcdBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/foundationdb/index.html b/docs/services/foundationdb/index.html
deleted file mode 100644
index 003f71c895..0000000000
--- a/docs/services/foundationdb/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/foundationdb" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">FoundationDB | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/foundationdb"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><m [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<p><strong>Note</strong>: As for <a href="https://apple.github.io/foundationdb/known-limitations" target="_blank" rel="noopener noreferrer">Known Limitations - FoundationDB</a>, keys cannot exceed 10,000 bytes in size, and values cannot exceed 100,000 bytes in size. Errors will be raised by OpenDAL if these limits are exceeded.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work directory for this backend.</li>
-<li><code>config_path</code>: Set the configuration path for foundationdb. If not provided, the default configuration path will be used.</li>
-</ul>
-<p>You can refer to [<code>FoundationdbBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/fs/index.html b/docs/services/fs/index.html
deleted file mode 100644
index 7479531553..0000000000
--- a/docs/services/fs/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/fs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Fs | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/fs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> append</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-<li></li>
-</ul>
-<p>You can refer to [<code>FsBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/ftp/index.html b/docs/services/ftp/index.html
deleted file mode 100644
index da9cba36a4..0000000000
--- a/docs/services/ftp/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/ftp" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">FTP | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/ftp"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>endpoint</code>: Set the endpoint for connection</li>
-<li><code>root</code>: Set the work directory for backend</li>
-<li><code>user</code>: Set the login user</li>
-<li><code>password</code>: Set the login password</li>
-</ul>
-<p>You can refer to [<code>FtpBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/gcs/index.html b/docs/services/gcs/index.html
deleted file mode 100644
index 1b2255b15c..0000000000
--- a/docs/services/gcs/index.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/gcs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Gcs | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/gcs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work directory for backend</li>
-<li><code>bucket</code>: Set the container name for backend</li>
-<li><code>endpoint</code>: Customizable endpoint setting</li>
-<li><code>credential</code>: Service Account or External Account JSON, in base64</li>
-<li><code>credential_path</code>: local path to Service Account or External Account JSON file</li>
-<li><code>service_account</code>: name of Service Account</li>
-<li><code>predefined_acl</code>: Predefined ACL for GCS</li>
-<li><code>default_storage_class</code>: Default storage class for GCS</li>
-</ul>
-<p>Refer to public API docs for more information. For authentication related options, read on.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="options-to-authenticate-to-gcs">Options to authenticate to GCS<a href="#options-to-authenticate-to-gcs" class="hash-link" aria-label="Direct link to Options to authenticate to GCS" title="Direct link to Options to authenticate to GCS">​</a></h2>
-<p>OpenDAL supports the following authentication options:</p>
-<ol>
-<li>Provide a base64-ed JSON key string with <code>credential</code></li>
-<li>Provide a JSON key file at explicit path with <code>credential_path</code></li>
-<li>Provide a JSON key file at implicit path
-<ul>
-<li><code>GcsBackend</code> will attempt to load Service Account key from <a href="https://cloud.google.com/docs/authentication/application-default-credentials" target="_blank" rel="noopener noreferrer">ADC well-known places</a>.</li>
-</ul>
-</li>
-<li>Fetch access token from <a href="https://cloud.google.com/docs/authentication/rest#metadata-server" target="_blank" rel="noopener noreferrer">VM metadata</a>
-<ul>
-<li>Only works when running inside Google Cloud.</li>
-<li>If a non-default Service Account name is required, set with <code>service_account</code>. Otherwise, nothing need to be set.</li>
-</ul>
-</li>
-<li>A custom <code>TokenLoader</code> via <code>GcsBuilder.customed_token_loader()</code></li>
-</ol>
-<p>Notes:</p>
-<ul>
-<li>When a Service Account key is provided, it will be used to create access tokens (VM metadata will not be used).</li>
-<li>Explicit Service Account key, in json or path, always take precedence over ADC-defined key paths.</li>
-<li>Due to <a href="https://cloud.google.com/storage/docs/authentication/signatures#signing-process" target="_blank" rel="noopener noreferrer">limitation in GCS</a>, a private key is required to create Pre-signed URL. Currently, OpenDAL only supports Service Account key.</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/gdrive/index.html b/docs/services/gdrive/index.html
deleted file mode 100644
index 3af69028d1..0000000000
--- a/docs/services/gdrive/index.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/gdrive" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Gdrive | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/gdrive"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> batch</li>
-</ul>
-<h1>Configuration</h1>
-<ul>
-<li><code>root</code>: Set the work directory for backend</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="credentials-related">Credentials related<a href="#credentials-related" class="hash-link" aria-label="Direct link to Credentials related" title="Direct link to Credentials related">​</a></h3>
-<h4 class="anchor anchorWithStickyNavbar_VwHQ" id="just-provide-access-token-temporary">Just provide Access Token (Temporary)<a href="#just-provide-access-token-temporary" class="hash-link" aria-label="Direct link to Just provide Access Token (Temporary)" title="Direct link to Just provide Access Token (Temporary)">​</a></h4>
-<ul>
-<li><code>access_token</code>: set the access_token for google drive api
-Please notice its expiration.</li>
-</ul>
-<h4 class="anchor anchorWithStickyNavbar_VwHQ" id="or-provide-client-id-and-client-secret-and-refresh-token-long-term">Or provide Client ID and Client Secret and refresh token (Long Term)<a href="#or-provide-client-id-and-client-secret-and-refresh-token-long-term" class="hash-link" aria-label="Direct link to Or provide Client ID and Client Secret and refresh token (Long Term)" title="Direct link to Or provide Client ID and Client Secret and refresh token (Long Term)">​</a></h4>
-<p>If you want to let OpenDAL to refresh the access token automatically,
-please provide the following fields:</p>
-<ul>
-<li><code>refresh_token</code>: set the refresh_token for google drive api</li>
-<li><code>client_id</code>: set the client_id for google drive api</li>
-<li><code>client_secret</code>: set the client_secret for google drive api</li>
-</ul>
-<p>OpenDAL is a library, it cannot do the first step of OAuth2 for you.
-You need to get authorization code from user by calling GoogleDrive&#x27;s authorize url
-and exchange it for refresh token.</p>
-<p>Make sure you have enabled Google Drive API in your Google Cloud Console.
-And your OAuth scope contains <code>https://www.googleapis.com/auth/drive</code>.</p>
-<p>Please refer to <a href="https://developers.google.com/identity/protocols/oauth2/" target="_blank" rel="noopener noreferrer">GoogleDrive OAuth2 Flow</a>
-for more information.</p>
-<p>You can refer to [<code>GdriveBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/ghac/index.html b/docs/services/ghac/index.html
deleted file mode 100644
index 2f67d9af1f..0000000000
--- a/docs/services/ghac/index.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/ghac" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">GHAC | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/ghac"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="notes">Notes<a href="#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes">​</a></h2>
-<p>This service is mainly provided by GitHub actions.</p>
-<p>Refer to <a href="https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows" target="_blank" rel="noopener noreferrer">Caching dependencies to speed up workflows</a> for more information.</p>
-<p>To make this service work as expected, please make sure to either call <code>endpoint</code> and <code>token</code> to
-configure the URL and credentials, or that the following environment has been setup correctly:</p>
-<ul>
-<li><code>ACTIONS_CACHE_URL</code></li>
-<li><code>ACTIONS_RUNTIME_TOKEN</code></li>
-</ul>
-<p>They can be exposed by following action:</p>
-<div class="language-yaml codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-yaml codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token ke [...]
-<p>To make <code>delete</code> work as expected, <code>GITHUB_TOKEN</code> should also be set via:</p>
-<div class="language-yaml codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-yaml codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">env</span><span class="token punctuation" style="color:#393A34"> [...]
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="limitations">Limitations<a href="#limitations" class="hash-link" aria-label="Direct link to Limitations" title="Direct link to Limitations">​</a></h2>
-<p>Unlike other services, ghac doesn&#x27;t support create empty files.
-We provide a <code>enable_create_simulation()</code> to support this operation but may result unexpected side effects.</p>
-<p>Also, <code>ghac</code> is a cache service which means the data store inside could
-be automatically evicted at any time.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-</ul>
-<p>Refer to [<code>GhacBuilder</code>]&#x27;s public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#393A34"><sp [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/gridfs/index.html b/docs/services/gridfs/index.html
deleted file mode 100644
index 38f14a6dd3..0000000000
--- a/docs/services/gridfs/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/gridfs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Gridfs | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/gridfs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>connection_string</code>: Set the connection string of mongodb server</li>
-<li><code>database</code>: Set the database of mongodb</li>
-<li><code>bucket</code>: Set the bucket of mongodb gridfs</li>
-<li><code>chunk_size</code>: Set the chunk size of mongodb gridfs</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/hdfs/index.html b/docs/services/hdfs/index.html
deleted file mode 100644
index 63eb6150b1..0000000000
--- a/docs/services/hdfs/index.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/hdfs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">HDFS | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/hdfs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<p>A distributed file system that provides high-throughput access to application data.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> blocking</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> append</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="differences-with-webhdfs">Differences with webhdfs<a href="#differences-with-webhdfs" class="hash-link" aria-label="Direct link to Differences with webhdfs" title="Direct link to Differences with webhdfs">​</a></h2>
-<p>[Webhdfs][crate::services::Webhdfs] is powered by hdfs&#x27;s RESTful HTTP API.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="features">Features<a href="#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features">​</a></h2>
-<p>HDFS support needs to enable feature <code>services-hdfs</code>.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-<li><code>name_node</code>: Set the name node for backend.</li>
-<li><code>kerberos_ticket_cache_path</code>: Set the kerberos ticket cache path for backend, this should be gotten by <code>klist</code> after <code>kinit</code></li>
-<li><code>user</code>: Set the user for backend</li>
-<li><code>enable_append</code>: enable the append capacity. Default is false.</li>
-</ul>
-<p>Refer to [<code>HdfsBuilder</code>]&#x27;s public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="environment">Environment<a href="#environment" class="hash-link" aria-label="Direct link to Environment" title="Direct link to Environment">​</a></h2>
-<p>HDFS needs some environment set correctly.</p>
-<ul>
-<li><code>JAVA_HOME</code>: the path to java home, could be found via <code>java -XshowSettings:properties -version</code></li>
-<li><code>HADOOP_HOME</code>: the path to hadoop home, opendal relays on this env to discover hadoop jars and set <code>CLASSPATH</code> automatically.</li>
-</ul>
-<p>Most of the time, setting <code>JAVA_HOME</code> and <code>HADOOP_HOME</code> is enough. But there are some edge cases:</p>
-<ul>
-<li>If meeting errors like the following:</li>
-</ul>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">error while loading shared libraries: libjvm.so: cannot open shared object file: No such  [...]
-<p>Java&#x27;s lib are not including in pkg-config find path, please set <code>LD_LIBRARY_PATH</code>:</p>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">export LD_LIBRARY_PATH=${JAVA_HOME}/lib/server:${LD_LIBRARY_PATH}</span><br></span></code [...]
-<p>The path of <code>libjvm.so</code> could be different, please keep an eye on it.</p>
-<ul>
-<li>If meeting errors like the following:</li>
-</ul>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils:: [...]
-<p><code>CLASSPATH</code> is not set correctly or your hadoop installation is incorrect.</p>
-<p>To set <code>CLASSPATH</code>:</p>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">export CLASSPATH=$(find $HADOOP_HOME -iname &quot;*.jar&quot; | xargs echo | tr &#x27; &# [...]
-<ul>
-<li>If HDFS has High Availability (HA) enabled with multiple available NameNodes, some configuration is required:</li>
-</ul>
-<ol>
-<li>Obtain the entire HDFS config folder (usually located at HADOOP_HOME/etc/hadoop).</li>
-<li>Set the environment variable HADOOP_CONF_DIR to the path of this folder.</li>
-</ol>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">export HADOOP_CONF_DIR=&lt;path of the config folder&gt;</span><br></span></code></pre><d [...]
-<ol start="3">
-<li>Append the HADOOP_CONF_DIR to the <code>CLASSPATH</code></li>
-</ol>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">export CLASSPATH=$HADOOP_CONF_DIR:$HADOOP_CLASSPATH:$CLASSPATH</span><br></span></code></ [...]
-<ol start="4">
-<li>Use the <code>cluster_name</code> specified in the <code>core-site.xml</code> file (located in the HADOOP_CONF_DIR folder) to replace namenode:port.</li>
-</ol>
-<div class="language-ignore codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-ignore codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">builder.name_node(&quot;hdfs://cluster_name&quot;);</span><br></span></code></pre><div  [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="macos-specific-note">macOS Specific Note<a href="#macos-specific-note" class="hash-link" aria-label="Direct link to macOS Specific Note" title="Direct link to macOS Specific Note">​</a></h3>
-<p>If you encounter an issue during the build process on macOS with an error message similar to:</p>
-<div class="language-shell codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-shell codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">ld: unknown file type in $HADOOP_HOME/lib/native/libhdfs.so.0.0.0</span><br></span><span  [...]
-<p>This error is likely due to the fact that the official Hadoop build includes the libhdfs.so file for the x86-64 architecture, which is not compatible with aarch64 architecture required for MacOS.</p>
-<p>To resolve this issue, you can add hdrs as a dependency in your Rust application&#x27;s Cargo.toml file, and enable the vendored feature:</p>
-<div class="language-toml codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-toml codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">[dependencies]</span><br></span><span class="token-line" style="color:#393A34"><span class= [...]
-<p>Enabling the vendored feature ensures that hdrs includes the necessary libhdfs.so library built for the correct architecture.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/http/index.html b/docs/services/http/index.html
deleted file mode 100644
index 64177daac5..0000000000
--- a/docs/services/http/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/http" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">HTTP | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/http"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>write</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>create_dir</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>delete</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>copy</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>rename</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="notes">Notes<a href="#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes">​</a></h2>
-<p>Only <code>read</code> and <code>stat</code> are supported. We can use this service to visit any
-HTTP Server like nginx, caddy.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>endpoint</code>: set the endpoint for http</li>
-<li><code>root</code>: Set the work directory for backend</li>
-</ul>
-<p>You can refer to [<code>HttpBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/huggingface/index.html b/docs/services/huggingface/index.html
deleted file mode 100644
index e18e9f0aef..0000000000
--- a/docs/services/huggingface/index.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/huggingface" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Hugging Face | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/huggingface"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><me [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<p>This service will visit the <a href="https://huggingface.co/docs/huggingface_hub/package_reference/hf_api" target="_blank" rel="noopener noreferrer">Huggingface API</a> to access the Huggingface File System.
-Currently, we only support the <code>model</code> and <code>dataset</code> types of repositories, and operations are limited to reading and listing/stating.</p>
-<p>Huggingface doesn&#x27;t host official HTTP API docs. Detailed HTTP request API information can be found on the <a href="https://github.com/huggingface/huggingface_hub" target="_blank" rel="noopener noreferrer"><code>huggingface_hub</code> Source Code</a>.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configurations">Configurations<a href="#configurations" class="hash-link" aria-label="Direct link to Configurations" title="Direct link to Configurations">​</a></h2>
-<ul>
-<li><code>repo_type</code>: The type of the repository.</li>
-<li><code>repo_id</code>: The id of the repository.</li>
-<li><code>revision</code>: The revision of the repository.</li>
-<li><code>root</code>: Set the work directory for backend.</li>
-<li><code>token</code>: The token for accessing the repository.</li>
-</ul>
-<p>Refer to [<code>HuggingfaceBuilder</code>]&#x27;s public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/ipfs/index.html b/docs/services/ipfs/index.html
deleted file mode 100644
index 4eda73134e..0000000000
--- a/docs/services/ipfs/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/ipfs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">IPFS | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/ipfs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>write</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>create_dir</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>delete</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>copy</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>rename</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work directory for backend</li>
-<li><code>endpoint</code>: Customizable endpoint setting</li>
-</ul>
-<p>You can refer to [<code>IpfsBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/ipmfs/index.html b/docs/services/ipmfs/index.html
deleted file mode 100644
index 0a290bf0de..0000000000
--- a/docs/services/ipmfs/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/ipmfs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">IPMFS | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/ipmfs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/services/ipmfs.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit__AOS" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2 [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/libsql/index.html b/docs/services/libsql/index.html
deleted file mode 100644
index 7085ae70c6..0000000000
--- a/docs/services/libsql/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/libsql" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">LibSQL | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/libsql"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>connection_string</code>: Set the connection string for libsql server</li>
-<li><code>auth_token</code>: Set the authentication token for libsql server</li>
-<li><code>table</code>: Set the table of libsql</li>
-<li><code>key_field</code>: Set the key field of libsql</li>
-<li><code>value_field</code>: Set the value field of libsql</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/memcached/index.html b/docs/services/memcached/index.html
deleted file mode 100644
index 777630d894..0000000000
--- a/docs/services/memcached/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/memcached" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Memcached | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/memcached"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>username</code>: Set the username for authentication.</li>
-<li><code>password</code>: Set the password for authentication.</li>
-<li><code>endpoint</code>: Set the network address of memcached server</li>
-<li><code>default_ttl</code>: Set the ttl for memcached service.</li>
-</ul>
-<p>You can refer to [<code>MemcachedBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/memory/index.html b/docs/services/memory/index.html
deleted file mode 100644
index dbfa3ea9fd..0000000000
--- a/docs/services/memory/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/memory" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Memory | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/memory"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/moka/index.html b/docs/services/moka/index.html
deleted file mode 100644
index 2bd4d38b1f..0000000000
--- a/docs/services/moka/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/moka" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Moka | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/moka"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>name</code>: Set the name for this cache instance.</li>
-<li><code>max_capacity</code>: Set the max capacity of the cache.</li>
-<li><code>time_to_live</code>: Set the time to live of the cache.</li>
-<li><code>time_to_idle</code>: Set the time to idle of the cache.</li>
-<li><code>num_segments</code>: Set the segments number of the cache.</li>
-</ul>
-<p>You can refer to [<code>MokaBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/mongodb/index.html b/docs/services/mongodb/index.html
deleted file mode 100644
index a38c6deb20..0000000000
--- a/docs/services/mongodb/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/mongodb" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">MongoDB | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/mongodb"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-r [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>connection_string</code>: Set the connection string of mongodb server</li>
-<li><code>database</code>: Set the database of mongodb</li>
-<li><code>collection</code>: Set the collection of mongodb</li>
-<li><code>key_field</code>: Set the key field of mongodb</li>
-<li><code>value_field</code>: Set the value field of mongodb</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/mysql/index.html b/docs/services/mysql/index.html
deleted file mode 100644
index e069c08074..0000000000
--- a/docs/services/mysql/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/mysql" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">MySQL | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/mysql"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>connection_string</code>: Set the connection string of mysql server</li>
-<li><code>table</code>: Set the table of mysql</li>
-<li><code>key_field</code>: Set the key field of mysql</li>
-<li><code>value_field</code>: Set the value field of mysql</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/obs/index.html b/docs/services/obs/index.html
deleted file mode 100644
index 7cf48599fa..0000000000
--- a/docs/services/obs/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/obs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Obs | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/obs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work directory for backend</li>
-<li><code>bucket</code>: Set the container name for backend</li>
-<li><code>endpoint</code>: Customizable endpoint setting</li>
-<li><code>access_key_id</code>: Set the access_key_id for backend.</li>
-<li><code>secret_access_key</code>: Set the secret_access_key for backend.</li>
-</ul>
-<p>You can refer to [<code>ObsBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/onedrive/index.html b/docs/services/onedrive/index.html
deleted file mode 100644
index e73fe6e4db..0000000000
--- a/docs/services/onedrive/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/onedrive" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">OneDrive | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/onedrive"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="notes">Notes<a href="#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes">​</a></h2>
-<p>Currently, only OneDrive Personal is supported.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>access_token</code>: set the access_token for Graph API</li>
-<li><code>root</code>: Set the work directory for backend</li>
-</ul>
-<p>You can refer to [<code>OnedriveBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/oss/index.html b/docs/services/oss/index.html
deleted file mode 100644
index 50b9a5c486..0000000000
--- a/docs/services/oss/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/oss" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">OSS | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/oss"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h1>Capabilities</h1>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> append</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h1>Configuration</h1>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-<li><code>bucket</code>: Set the container name for backend.</li>
-<li><code>endpoint</code>: Set the endpoint for backend.</li>
-<li><code>presign_endpoint</code>: Set the endpoint for presign.</li>
-<li><code>access_key_id</code>: Set the access_key_id for backend.</li>
-<li><code>access_key_secret</code>: Set the access_key_secret for backend.</li>
-<li><code>role_arn</code>: Set the role of backend.</li>
-<li><code>oidc_token</code>: Set the oidc_token for backend.</li>
-<li><code>allow_anonymous</code>: Set the backend access OSS in anonymous way.</li>
-</ul>
-<p>Refer to [<code>OssBuilder</code>]&#x27;s public API docs for more information.</p>
-<h1>Example</h1>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h2>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/persy/index.html b/docs/services/persy/index.html
deleted file mode 100644
index b65f496830..0000000000
--- a/docs/services/persy/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/persy" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Persy | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/persy"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>datafile</code>: Set the path to the persy data file. The directory in the path must already exist.</li>
-<li><code>segment</code>: Set the name of the persy segment.</li>
-<li><code>index</code>: Set the name of the persy index.</li>
-</ul>
-<p>You can refer to [<code>PersyBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/postgresql/index.html b/docs/services/postgresql/index.html
deleted file mode 100644
index abb8443d0a..0000000000
--- a/docs/services/postgresql/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/postgresql" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">PostgreSQL | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/postgresql"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta  [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>connection_string</code>: Set the connection string of postgres server</li>
-<li><code>table</code>: Set the table of postgresql</li>
-<li><code>key_field</code>: Set the key field of postgresql</li>
-<li><code>value_field</code>: Set the value field of postgresql</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/redb/index.html b/docs/services/redb/index.html
deleted file mode 100644
index 99c2c5df0b..0000000000
--- a/docs/services/redb/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/redb" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Redb | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/redb"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>datadir</code>: Set the path to the redb data directory</li>
-</ul>
-<p>You can refer to [<code>RedbBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/redis/index.html b/docs/services/redis/index.html
deleted file mode 100644
index e93f8471a6..0000000000
--- a/docs/services/redis/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/redis" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Redis | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/redis"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>endpoint</code>: Set the network address of redis server</li>
-<li><code>cluster_endpoints</code>: Set the network address of redis cluster server. This parameter is mutually exclusive with the <code>endpoint</code> parameter.</li>
-<li><code>username</code>: Set the username of Redis</li>
-<li><code>password</code>: Set the password for authentication</li>
-<li><code>db</code>: Set the DB of redis</li>
-</ul>
-<p>You can refer to [<code>RedisBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/rocksdb/index.html b/docs/services/rocksdb/index.html
deleted file mode 100644
index 442dce5c0c..0000000000
--- a/docs/services/rocksdb/index.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/rocksdb" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">RocksDB | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/rocksdb"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-r [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="note">Note<a href="#note" class="hash-link" aria-label="Direct link to Note" title="Direct link to Note">​</a></h2>
-<p>OpenDAL will build rocksdb from source by default.</p>
-<p>To link with existing rocksdb lib, please set one of the following:</p>
-<ul>
-<li><code>ROCKSDB_LIB_DIR</code> to the dir that contains <code>librocksdb.so</code></li>
-<li><code>ROCKSDB_STATIC</code> to the dir that contains <code>librocksdb.a</code></li>
-</ul>
-<p>If the version of RocksDB is below 6.0, you may encounter compatibility
-issues. It is advisable to follow the steps provided in the <a href="https://github.com/facebook/rocksdb/blob/main/INSTALL.md" target="_blank" rel="noopener noreferrer"><code>INSTALL</code></a>
-file to build rocksdb, rather than relying on system libraries that
-may be outdated and incompatible.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>datadir</code>: Set the path to the rocksdb data directory</li>
-</ul>
-<p>You can refer to [<code>RocksdbBuilder</code>]&#x27;s docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/s3/index.html b/docs/services/s3/index.html
deleted file mode 100644
index 83f35d76c9..0000000000
--- a/docs/services/s3/index.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/s3" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">S3 | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/s3"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p>For more information about s3-compatible services, refer to <a href="#compatible-services">Compatible Services</a>.</p>
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-<li><code>bucket</code>: Set the container name for backend.</li>
-<li><code>endpoint</code>: Set the endpoint for backend.</li>
-<li><code>region</code>: Set the region for backend.</li>
-<li><code>access_key_id</code>: Set the access_key_id for backend.</li>
-<li><code>secret_access_key</code>: Set the secret_access_key for backend.</li>
-<li><code>security_token</code>: Set the security_token for backend.</li>
-<li><code>default_storage_class</code>: Set the default storage_class for backend.</li>
-<li><code>server_side_encryption</code>: Set the server_side_encryption for backend.</li>
-<li><code>server_side_encryption_aws_kms_key_id</code>: Set the server_side_encryption_aws_kms_key_id for backend.</li>
-<li><code>server_side_encryption_customer_algorithm</code>: Set the server_side_encryption_customer_algorithm for backend.</li>
-<li><code>server_side_encryption_customer_key</code>: Set the server_side_encryption_customer_key for backend.</li>
-<li><code>server_side_encryption_customer_key_md5</code>: Set the server_side_encryption_customer_key_md5 for backend.</li>
-<li><code>disable_config_load</code>: Disable aws config load from env</li>
-<li><code>enable_virtual_host_style</code>: Enable virtual host style.</li>
-</ul>
-<p>Refer to [<code>S3Builder</code>]&#x27;s public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="temporary-security-credentials">Temporary security credentials<a href="#temporary-security-credentials" class="hash-link" aria-label="Direct link to Temporary security credentials" title="Direct link to Temporary security credentials">​</a></h2>
-<p>OpenDAL now provides support for S3 temporary security credentials in IAM.</p>
-<p>The way to take advantage of this feature is to build your S3 backend with <code>Builder::security_token</code>.</p>
-<p>But OpenDAL will not refresh the temporary security credentials, please keep in mind to refresh those credentials in time.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="server-side-encryption">Server Side Encryption<a href="#server-side-encryption" class="hash-link" aria-label="Direct link to Server Side Encryption" title="Direct link to Server Side Encryption">​</a></h2>
-<p>OpenDAL provides full support of S3 Server Side Encryption(SSE) features.</p>
-<p>The easiest way to configure them is to use helper functions like</p>
-<ul>
-<li>SSE-KMS: <code>server_side_encryption_with_aws_managed_kms_key</code></li>
-<li>SSE-KMS: <code>server_side_encryption_with_customer_managed_kms_key</code></li>
-<li>SSE-S3: <code>server_side_encryption_with_s3_key</code></li>
-<li>SSE-C: <code>server_side_encryption_with_customer_key</code></li>
-</ul>
-<p>If those functions don&#x27;t fulfill need, low-level options are also provided:</p>
-<ul>
-<li>Use service managed kms key
-<ul>
-<li><code>server_side_encryption=&quot;aws:kms&quot;</code></li>
-</ul>
-</li>
-<li>Use customer provided kms key
-<ul>
-<li><code>server_side_encryption=&quot;aws:kms&quot;</code></li>
-<li><code>server_side_encryption_aws_kms_key_id=&quot;your-kms-key&quot;</code></li>
-</ul>
-</li>
-<li>Use S3 managed key
-<ul>
-<li><code>server_side_encryption=&quot;AES256&quot;</code></li>
-</ul>
-</li>
-<li>Use customer key
-<ul>
-<li><code>server_side_encryption_customer_algorithm=&quot;AES256&quot;</code></li>
-<li><code>server_side_encryption_customer_key=&quot;base64-of-your-aes256-key&quot;</code></li>
-<li><code>server_side_encryption_customer_key_md5=&quot;base64-of-your-aes256-key-md5&quot;</code></li>
-</ul>
-</li>
-</ul>
-<p>After SSE have been configured, all requests send by this backed will attach those headers.</p>
-<p>Reference: <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html" target="_blank" rel="noopener noreferrer">Protecting data using server-side encryption</a></p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="basic-setup">Basic Setup<a href="#basic-setup" class="hash-link" aria-label="Direct link to Basic Setup" title="Direct link to Basic Setup">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="s3-with-sse-c">S3 with SSE-C<a href="#s3-with-sse-c" class="hash-link" aria-label="Direct link to S3 with SSE-C" title="Direct link to S3 with SSE-C">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="s3-with-sse-kms-and-aws-managed-kms-key">S3 with SSE-KMS and aws managed kms key<a href="#s3-with-sse-kms-and-aws-managed-kms-key" class="hash-link" aria-label="Direct link to S3 with SSE-KMS and aws managed kms key" title="Direct link to S3 with SSE-KMS and aws managed kms key">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="s3-with-sse-kms-and-customer-managed-kms-key">S3 with SSE-KMS and customer managed kms key<a href="#s3-with-sse-kms-and-customer-managed-kms-key" class="hash-link" aria-label="Direct link to S3 with SSE-KMS and customer managed kms key" title="Direct link to S3 with SSE-KMS and customer managed kms key">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="s3-with-sse-s3">S3 with SSE-S3<a href="#s3-with-sse-s3" class="hash-link" aria-label="Direct link to S3 with SSE-S3" title="Direct link to S3 with SSE-S3">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h2>
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-<!-- -->
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="compatible-services">Compatible Services<a href="#compatible-services" class="hash-link" aria-label="Direct link to Compatible Services" title="Direct link to Compatible Services">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="aws-s3">AWS S3<a href="#aws-s3" class="hash-link" aria-label="Direct link to AWS S3" title="Direct link to AWS S3">​</a></h3>
-<p><a href="https://aws.amazon.com/s3/" target="_blank" rel="noopener noreferrer">AWS S3</a> is the default implementations of s3 services. Only <code>bucket</code> is required.</p>
-<div class="language-rust,ignore codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,ignore codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">builder.bucket(&quot;&lt;bucket_name&gt;&quot;);</span><br></span></code></pr [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="alibaba-object-storage-service-oss">Alibaba Object Storage Service (OSS)<a href="#alibaba-object-storage-service-oss" class="hash-link" aria-label="Direct link to Alibaba Object Storage Service (OSS)" title="Direct link to Alibaba Object Storage Service (OSS)">​</a></h3>
-<p><a href="https://www.alibabacloud.com/product/object-storage-service" target="_blank" rel="noopener noreferrer">OSS</a> is a s3 compatible service provided by <a href="https://www.alibabacloud.com" target="_blank" rel="noopener noreferrer">Alibaba Cloud</a>.</p>
-<p>To connect to OSS, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of oss, for example: <code>https://oss-cn-hangzhou.aliyuncs.com</code></li>
-<li><code>bucket</code>: The bucket name of oss.</li>
-</ul>
-<blockquote>
-<p>OSS provide internal endpoint for used at alibabacloud internally, please visit <a href="https://www.alibabacloud.com/help/en/object-storage-service/latest/regions-and-endpoints" target="_blank" rel="noopener noreferrer">OSS Regions and endpoints</a> for more details.</p>
-</blockquote>
-<blockquote>
-<p>OSS only supports the virtual host style, users could meet errors like:</p>
-<div class="language-xml codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-xml codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token prolog" style="color:#999988;font-style:italic">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF- [...]
-<p>In that case, please enable virtual host style for requesting.</p>
-</blockquote>
-<div class="language-rust,ignore codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,ignore codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">builder.endpoint(&quot;https://oss-cn-hangzhou.aliyuncs.com&quot;);</span><br [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="minio">Minio<a href="#minio" class="hash-link" aria-label="Direct link to Minio" title="Direct link to Minio">​</a></h3>
-<p><a href="https://min.io/" target="_blank" rel="noopener noreferrer">minio</a> is an open-source s3 compatible services.</p>
-<p>To connect to minio, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of minio, for example: <code>http://127.0.0.1:9000</code></li>
-<li><code>region</code>: The region of minio. If you don&#x27;t care about it, just set it to &quot;auto&quot;, it will be ignored.</li>
-<li><code>bucket</code>: The bucket name of minio.</li>
-</ul>
-<div class="language-rust,ignore codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,ignore codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">builder.endpoint(&quot;http://127.0.0.1:9000&quot;);</span><br></span><span c [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="qingstor-object-storage">QingStor Object Storage<a href="#qingstor-object-storage" class="hash-link" aria-label="Direct link to QingStor Object Storage" title="Direct link to QingStor Object Storage">​</a></h3>
-<p><a href="https://www.qingcloud.com/products/qingstor" target="_blank" rel="noopener noreferrer">QingStor Object Storage</a> is a S3-compatible service provided by <a href="https://www.qingcloud.com/" target="_blank" rel="noopener noreferrer">QingCloud</a>.</p>
-<p>To connect to QingStor Object Storage, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of QingStor s3 compatible endpoint, for example: <code>https://s3.pek3b.qingstor.com</code></li>
-<li><code>bucket</code>: The bucket name.</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="scaleway-object-storage">Scaleway Object Storage<a href="#scaleway-object-storage" class="hash-link" aria-label="Direct link to Scaleway Object Storage" title="Direct link to Scaleway Object Storage">​</a></h3>
-<p><a href="https://www.scaleway.com/en/object-storage/" target="_blank" rel="noopener noreferrer">Scaleway Object Storage</a> is a S3-compatible and multi-AZ redundant object storage service.</p>
-<p>To connect to Scaleway Object Storage, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of scaleway, for example: <code>https://s3.nl-ams.scw.cloud</code></li>
-<li><code>region</code>: The region of scaleway.</li>
-<li><code>bucket</code>: The bucket name of scaleway.</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="tencent-cloud-object-storage-cos">Tencent Cloud Object Storage (COS)<a href="#tencent-cloud-object-storage-cos" class="hash-link" aria-label="Direct link to Tencent Cloud Object Storage (COS)" title="Direct link to Tencent Cloud Object Storage (COS)">​</a></h3>
-<p><a href="https://intl.cloud.tencent.com/products/cos" target="_blank" rel="noopener noreferrer">COS</a> is a s3 compatible service provided by <a href="https://intl.cloud.tencent.com/" target="_blank" rel="noopener noreferrer">Tencent Cloud</a>.</p>
-<p>To connect to COS, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of cos, for example: <code>https://cos.ap-beijing.myqcloud.com</code></li>
-<li><code>bucket</code>: The bucket name of cos.</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="wasabi-object-storage">Wasabi Object Storage<a href="#wasabi-object-storage" class="hash-link" aria-label="Direct link to Wasabi Object Storage" title="Direct link to Wasabi Object Storage">​</a></h3>
-<p><a href="https://wasabi.com/" target="_blank" rel="noopener noreferrer">Wasabi</a> is a s3 compatible service.</p>
-<blockquote>
-<p>Cloud storage pricing that is 80% less than Amazon S3.</p>
-</blockquote>
-<p>To connect to wasabi, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of wasabi, for example: <code>https://s3.us-east-2.wasabisys.com</code></li>
-<li><code>bucket</code>: The bucket name of wasabi.</li>
-</ul>
-<blockquote>
-<p>Refer to <a href="https://wasabi-support.zendesk.com/hc/en-us/articles/360015106031" target="_blank" rel="noopener noreferrer">What are the service URLs for Wasabi&#x27;s different storage regions?</a> for more details.</p>
-</blockquote>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="cloudflare-r2">Cloudflare R2<a href="#cloudflare-r2" class="hash-link" aria-label="Direct link to Cloudflare R2" title="Direct link to Cloudflare R2">​</a></h3>
-<p><a href="https://developers.cloudflare.com/r2/" target="_blank" rel="noopener noreferrer">Cloudflare R2</a> provides s3 compatible API.</p>
-<blockquote>
-<p>Cloudflare R2 Storage allows developers to store large amounts of unstructured data without the costly egress bandwidth fees associated with typical cloud storage services.</p>
-</blockquote>
-<p>To connect to r2, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of r2, for example: <code>https://&lt;account_id&gt;.r2.cloudflarestorage.com</code></li>
-<li><code>bucket</code>: The bucket name of r2.</li>
-<li><code>region</code>: When you create a new bucket, the data location is set to Automatic by default. So please use <code>auto</code> for region.</li>
-<li><code>batch_max_operations</code>: R2&#x27;s delete objects will return <code>Internal Error</code> if the batch is larger than <code>700</code>. Please set this value <code>&lt;= 700</code> to make sure batch delete work as expected.</li>
-<li><code>enable_exact_buf_write</code>: R2 requires the non-tailing parts size to be exactly the same. Please enable this option to avoid the error <code>All non-trailing parts must have the same length</code>.</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="google-cloud-storage-xml-api">Google Cloud Storage XML API<a href="#google-cloud-storage-xml-api" class="hash-link" aria-label="Direct link to Google Cloud Storage XML API" title="Direct link to Google Cloud Storage XML API">​</a></h3>
-<p><a href="https://cloud.google.com/storage/docs/xml-api/overview" target="_blank" rel="noopener noreferrer">Google Cloud Storage XML API</a> provides s3 compatible API.</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of Google Cloud Storage XML API, for example: <code>https://storage.googleapis.com</code></li>
-<li><code>bucket</code>: The bucket name.</li>
-<li>To access GCS via S3 API, please enable <code>features = [&quot;native-tls&quot;]</code> in your <code>Cargo.toml</code> to avoid connection being reset when using <code>rustls</code>. Tracking in <a href="https://github.com/seanmonstar/reqwest/issues/1809" target="_blank" rel="noopener noreferrer">https://github.com/seanmonstar/reqwest/issues/1809</a></li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="ceph-rados-gateway">Ceph Rados Gateway<a href="#ceph-rados-gateway" class="hash-link" aria-label="Direct link to Ceph Rados Gateway" title="Direct link to Ceph Rados Gateway">​</a></h3>
-<p>Ceph supports a RESTful API that is compatible with the basic data access model of the Amazon S3 API.</p>
-<p>For more information, refer: <a href="https://docs.ceph.com/en/latest/radosgw/s3/" target="_blank" rel="noopener noreferrer">https://docs.ceph.com/en/latest/radosgw/s3/</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/services/s3.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" w [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/sftp/index.html b/docs/services/sftp/index.html
deleted file mode 100644
index 837364f8cb..0000000000
--- a/docs/services/sftp/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/sftp" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">SFTP | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/sftp"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<div class="theme-admonition theme-admonition-caution admonition_dku0 alert alert--warning"><div class="admonitionHeading_cEZG"><span class="admonitionIcon_JW12"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</ [...]
-lots of files, you should pay attention to close the file after using it.</p></div></div>
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> append</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>endpoint</code>: Set the endpoint for connection. The format is same as <code>openssh</code>, using either <code>[user@]hostname</code> or <code>ssh://[user@]hostname[:port]</code>. A username or port that is specified in the endpoint overrides the one set in the builder (but does not change the builder).</li>
-<li><code>root</code>: Set the work directory for backend. It uses the default directory set by the remote <code>sftp-server</code> as default</li>
-<li><code>user</code>: Set the login user</li>
-<li><code>key</code>: Set the public key for login</li>
-<li><code>known_hosts_strategy</code>: Set the strategy for known hosts, default to <code>Strict</code></li>
-<li><code>enable_copy</code>: Set whether the remote server has copy-file extension</li>
-</ul>
-<p>For security reasons, it doesn&#x27;t support password login, you can use public key or ssh-copy-id instead.</p>
-<p>You can refer to [<code>SftpBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/sled/index.html b/docs/services/sled/index.html
deleted file mode 100644
index 7a0270a304..0000000000
--- a/docs/services/sled/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/sled" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Sled | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/sled"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>datadir</code>: Set the path to the sled data directory</li>
-</ul>
-<p>You can refer to [<code>SledBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/sqlite/index.html b/docs/services/sqlite/index.html
deleted file mode 100644
index e1033a39dd..0000000000
--- a/docs/services/sqlite/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/sqlite" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Sqlite | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/sqlite"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the working directory of <code>OpenDAL</code></li>
-<li><code>connection_string</code>: Set the connection string of sqlite database</li>
-<li><code>table</code>: Set the table of sqlite</li>
-<li><code>key_field</code>: Set the key field of sqlite</li>
-<li><code>value_field</code>: Set the value field of sqlite</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/supabase/index.html b/docs/services/supabase/index.html
deleted file mode 100644
index b63c6ec26e..0000000000
--- a/docs/services/supabase/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/supabase" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Supabase | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/supabase"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> presign</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>root</code>: Set the work dir for backend.</li>
-<li><code>bucket</code>: Set the container name for backend.</li>
-<li><code>endpoint</code>: Set the endpoint for backend.</li>
-<li><code>key</code>: Set the authorization key for the backend, do not set if you want to read public bucket</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="authorization-keys">Authorization keys<a href="#authorization-keys" class="hash-link" aria-label="Direct link to Authorization keys" title="Direct link to Authorization keys">​</a></h3>
-<p>There are two types of key in the Supabase, one is anon_key(Client key), another one is
-service_role_key(Secret key). The former one can only write public resources while the latter one
-can access all resources. Note that if you want to read public resources, do not set the key.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/swift/index.html b/docs/services/swift/index.html
deleted file mode 100644
index 6362dfd34b..0000000000
--- a/docs/services/swift/index.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/swift" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Swift | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/swift"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p>For more information about swift-compatible services, refer to <a href="#compatible-services">Compatible Services</a>.</p>
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>rename</del></li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configurations">Configurations<a href="#configurations" class="hash-link" aria-label="Direct link to Configurations" title="Direct link to Configurations">​</a></h2>
-<ul>
-<li><code>endpoint</code>: Set the endpoint for backend.</li>
-<li><code>container</code>: Swift container.</li>
-<li><code>token</code>: Swift personal access token.</li>
-</ul>
-<p>Refer to [<code>SwiftBuilder</code>]&#x27;s public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-<!-- -->
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="compatible-services">Compatible Services<a href="#compatible-services" class="hash-link" aria-label="Direct link to Compatible Services" title="Direct link to Compatible Services">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="openstack-swift">OpenStack Swift<a href="#openstack-swift" class="hash-link" aria-label="Direct link to OpenStack Swift" title="Direct link to OpenStack Swift">​</a></h3>
-<p><a href="https://docs.openstack.org/swift/latest/" target="_blank" rel="noopener noreferrer">OpenStack Swift</a> is the default implementations of swift services.</p>
-<p>To connect to OpenStack Swift, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of OpenStack Swift, for example: <code>http://127.0.0.1:8080/v1/AUTH_test</code>.</li>
-<li><code>container</code>: The name of OpenStack Swift container.</li>
-<li><code>token</code>: OpenStack Swift container personal access token.</li>
-</ul>
-<div class="language-rust,ignore codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,ignore codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">builder.endpoint(&quot;http://127.0.0.1:8080/v1/AUTH_test&quot;);</span><br>< [...]
-<p><code>endpoint</code> is the full URL that serves as the access point to all containers under an OpenStack Swift account. It represents the entry point for accessing the resources of the account. Alongside <code>endpoint</code>, <code>token</code> is used as a credential to verify the user&#x27;s identity and authorize access to the relevant resources. Both <code>endpoint</code> and <code>token</code> can be obtained through OpenStack Swift authentication service.</p>
-<p><code>endpoint</code> consists of server address and port, API version, authenticated account ID. For instance, it might appear as follows:</p>
-<ul>
-<li><code>http://127.0.0.1:8080/v1/AUTH_test</code>.</li>
-<li><code>http://192.168.66.88:8080/swift/v1</code>.</li>
-<li><code>https://openstack-controller.example.com:8080/v1/account</code>.</li>
-</ul>
-<p>Please note that the exact format of <code>endpoint</code> may vary depending on the deployment configuration and version of swift services. Users can refer to the specific services documentation for the correct <code>endpoint</code> format and authentication method.</p>
-<p>For more information, refer:</p>
-<ul>
-<li><a href="https://docs.openstack.org/api-ref/object-store/" target="_blank" rel="noopener noreferrer">OpenStack Swift API</a>.</li>
-<li><a href="https://docs.openstack.org/swift/latest/api/object_api_v1_overview.html" target="_blank" rel="noopener noreferrer">OpenStack Swift Authentication</a>.</li>
-</ul>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="ceph-rados-gateway">Ceph Rados Gateway<a href="#ceph-rados-gateway" class="hash-link" aria-label="Direct link to Ceph Rados Gateway" title="Direct link to Ceph Rados Gateway">​</a></h3>
-<p><a href="https://docs.ceph.com/en/quincy/radosgw/" target="_blank" rel="noopener noreferrer">Ceph Rados Gateway</a> supports a RESTful API that is compatible with the basic data access model of OpenStack Swift API.</p>
-<p>To connect to Ceph Rados Gateway, we need to set:</p>
-<ul>
-<li><code>endpoint</code>: The endpoint of swift services, for example: <code>http://127.0.0.1:8080/swift/v1</code>.</li>
-<li><code>container</code>: The name of swift container.</li>
-<li><code>token</code>: swift container personal access token.</li>
-</ul>
-<div class="language-rust,ignore codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,ignore codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">builder.endpoint(&quot;http://127.0.0.1:8080/swift/v1&quot;);</span><br></spa [...]
-<p>For more information, refer:</p>
-<ul>
-<li><a href="https://docs.ceph.com/en/latest/radosgw/swift/#api" target="_blank" rel="noopener noreferrer">Ceph Rados Gateway Swift API</a>.</li>
-<li><a href="https://docs.ceph.com/en/latest/radosgw/swift/auth/" target="_blank" rel="noopener noreferrer">Ceph Rados Gateway Swift Authentication</a>.</li>
-</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/docs/services/swift.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit__AOS" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2 [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/tikv/index.html b/docs/services/tikv/index.html
deleted file mode 100644
index fdfcc54558..0000000000
--- a/docs/services/tikv/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/tikv" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">TiKV | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/tikv"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>blocking</del></li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>endpoints</code>: Set the endpoints to the tikv cluster</li>
-<li><code>insecure</code>: Set the insecure flag to the tikv cluster</li>
-<li><code>ca_path</code>: Set the ca path to the tikv connection</li>
-<li><code>cert_path</code>: Set the cert path to the tikv connection</li>
-<li><code>key_path</code>: Set the key path to the tikv connection</li>
-</ul>
-<p>You can refer to [<code>TikvBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/vercel_artifacts/index.html b/docs/services/vercel_artifacts/index.html
deleted file mode 100644
index 9af2b2834d..0000000000
--- a/docs/services/vercel_artifacts/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/vercel_artifacts" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Vercel Artifacts | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/vercel_artifacts"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>copy</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>rename</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>list</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>access_token</code>: set the access_token for Rest API</li>
-</ul>
-<p>You can refer to [<code>VercelArtifactsBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#393A34"><sp [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/webdav/index.html b/docs/services/webdav/index.html
deleted file mode 100644
index 3bbf737605..0000000000
--- a/docs/services/webdav/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/webdav" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">WebDAV | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/webdav"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh= [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="notes">Notes<a href="#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes">​</a></h2>
-<p>Bazel Remote Caching and Ccache HTTP Storage is also part of this service.
-Users can use <code>webdav</code> to connect those services.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2>
-<ul>
-<li><code>endpoint</code>: set the endpoint for webdav</li>
-<li><code>root</code>: Set the work directory for backend</li>
-</ul>
-<p>You can refer to [<code>WebdavBuilder</code>]&#x27;s docs for more information</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use anyhow::Result;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/services/webhdfs/index.html b/docs/services/webhdfs/index.html
deleted file mode 100644
index 0bd34a05fc..0000000000
--- a/docs/services/webhdfs/index.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-services/webhdfs" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">WebHDFS | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/webhdfs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-r [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- -->
-<p>There two implementations of WebHDFS REST API:</p>
-<ul>
-<li>Native via HDFS Namenode and Datanode, data are transferred between nodes directly.</li>
-<li><a href="https://hadoop.apache.org/docs/stable/hadoop-hdfs-httpfs/index.html" target="_blank" rel="noopener noreferrer">HttpFS</a> is a gateway before hdfs nodes, data are proxied.</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2>
-<p>This service can be used to:</p>
-<ul class="contains-task-list containsTaskList_wG5T">
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> stat</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> read</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> write</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> create_dir</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> delete</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> copy</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> rename</li>
-<li class="task-list-item"><input type="checkbox" disabled="" checked=""> list</li>
-<li class="task-list-item"><input type="checkbox" disabled=""> <del>presign</del></li>
-<li class="task-list-item"><input type="checkbox" disabled=""> blocking</li>
-</ul>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="differences-with-hdfs">Differences with HDFS<a href="#differences-with-hdfs" class="hash-link" aria-label="Direct link to Differences with HDFS" title="Direct link to Differences with HDFS">​</a></h2>
-<p>[Hdfs][crate::services::Hdfs] is powered by HDFS&#x27;s native java client. Users need to set up the HDFS services correctly. But webhdfs can access from HTTP API and no extra setup needed.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="webhdfs-compatibility-guidelines">WebHDFS Compatibility Guidelines<a href="#webhdfs-compatibility-guidelines" class="hash-link" aria-label="Direct link to WebHDFS Compatibility Guidelines" title="Direct link to WebHDFS Compatibility Guidelines">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="file-creation-and-write">File Creation and Write<a href="#file-creation-and-write" class="hash-link" aria-label="Direct link to File Creation and Write" title="Direct link to File Creation and Write">​</a></h3>
-<p>For <a href="https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#Create_and_Write_to_a_File" target="_blank" rel="noopener noreferrer">File creation and write</a> operations,
-OpenDAL WebHDFS is optimized for Hadoop Distributed File System (HDFS) versions 2.9 and later.
-This involves two API calls in webhdfs, where the initial <code>put</code> call to the namenode is redirected to the datanode handling the file data.
-The optional <code>noredirect</code> flag can be set to prevent redirection. If used, the API response body contains the datanode URL, which is then utilized for the subsequent <code>put</code> call with the actual file data.
-OpenDAL automatically sets the <code>noredirect</code> flag with the first <code>put</code> call. This feature is supported starting from HDFS version 2.9.</p>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="multi-write-support">Multi-Write Support<a href="#multi-write-support" class="hash-link" aria-label="Direct link to Multi-Write Support" title="Direct link to Multi-Write Support">​</a></h3>
-<p>OpenDAL WebHDFS supports multi-write operations by creating temporary files in the specified <code>atomic_write_dir</code>.
-The final concatenation of these temporary files occurs when the writer is closed.
-However, it&#x27;s essential to be aware of HDFS concat restrictions for earlier versions,
-where the target file must not be empty, and its last block must be full. Due to these constraints, the concat operation might fail for HDFS 2.6.
-This issue, identified as <a href="https://issues.apache.org/jira/browse/HDFS-6641" target="_blank" rel="noopener noreferrer">HDFS-6641</a>, has been addressed in later versions of HDFS.</p>
-<p>In summary, OpenDAL WebHDFS is designed for optimal compatibility with HDFS, specifically versions 2.9 and later.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="configurations">Configurations<a href="#configurations" class="hash-link" aria-label="Direct link to Configurations" title="Direct link to Configurations">​</a></h2>
-<ul>
-<li><code>root</code>: The root path of the WebHDFS service.</li>
-<li><code>endpoint</code>: The endpoint of the WebHDFS service.</li>
-<li><code>delegation</code>: The delegation token for WebHDFS.</li>
-<li><code>atomic_write_dir</code>: The tmp write dir of multi write for WebHDFS.Needs to be configured for multi write support.</li>
-</ul>
-<p>Refer to [<code>Builder</code>]&#x27;s public API docs for more information.</p>
-<h2 class="anchor anchorWithStickyNavbar_VwHQ" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h2>
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3>
-<div class="language-rust,no_run codeBlockContainer_MfrX theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent__QvJ"><pre tabindex="0" class="prism-code language-rust,no_run codeBlock_xMeh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_lAHS"><span class="token-line" style="color:#393A34"><span class="token plain">use std::sync::Arc;</span><br></span><span class="token-line" style="color:#3 [...]
-<h3 class="anchor anchorWithStickyNavbar_VwHQ" id="via-config">Via Config<a href="#via-config" class="hash-link" aria-label="Direct link to Via Config" title="Direct link to Via Config">​</a></h3>
-<!-- -->
-<!-- -->
-<div class="tabs-container tabList_zxWd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_TcdJ tabs__item--active">Rust</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Node.js</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_TcdJ">Python</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_CbVR"><div class="lang [...]
-</body>
-</html>
\ No newline at end of file
diff --git a/download/index.html b/download/index.html
index 8e5353b17c..9bbfe2b12d 100644
--- a/download/index.html
+++ b/download/index.html
@@ -4,12 +4,12 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache OpenDAL™ Downloads | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/download"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta  [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>The official Apache OpenDAL releases are provided as source artifacts.</p>
 <h2 class="anchor anchorWithStickyNavbar_VwHQ" id="releases">Releases<a href="#releases" class="hash-link" aria-label="Direct link to Releases" title="Direct link to Releases">​</a></h2>
 <!-- -->
diff --git a/index.html b/index.html
index 1a2ca6d1f9..5a48095b54 100644
--- a/index.html
+++ b/index.html
@@ -4,14 +4,14 @@
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Apache OpenDAL™</title><meta data-rh="true" property="og:title" content="Apache OpenDAL™"><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusauru [...]
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b669fb25.css">
-<script src="/assets/js/runtime~main.e006eb5f.js" defer="defer"></script>
-<script src="/assets/js/main.e58ac1f5.js" defer="defer"></script>
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.d7ed97f5.css">
+<script src="/assets/js/runtime~main.7a109b7c.js" defer="defer"></script>
+<script src="/assets/js/main.490d69d8.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
 <p>Getting started with the Rust core or multilingual bindings with the <a href="/docs/quickstart">Quickstart</a> guide.</p></div></div></div><div class="col col--4"><div class="padding-horiz--md"><h3>Services</h3><div><p>Apache OpenDAL provides native support for all kinds for storage systems, including object storage services, file storage services, and many.</p>
-<p>Check the <a href="/docs/category/services">Services</a> docs to access data stored in AWS S3, Apache HDFS, Redis, etc.</p></div></div></div><div class="col col--4"><div class="padding-horiz--md"><h3>Layers</h3><div><p>Apache OpenDAL offers native layer support, enabling users to implement middleware or intercept for all operations.</p>
+<p>Check the <a href="https://docs.rs/opendal/latest/opendal/services/index.html" target="_blank" rel="noopener noreferrer">Services</a> docs to access data stored in AWS S3, Apache HDFS, Redis, etc.</p></div></div></div><div class="col col--4"><div class="padding-horiz--md"><h3>Layers</h3><div><p>Apache OpenDAL offers native layer support, enabling users to implement middleware or intercept for all operations.</p>
 <p>By using layers, we can retry failed requests and resume from the point of failure with RetryLayer, provide native observability with TracingLayer, and so on.</p></div></div></div></div></div></section></main></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" rel="noopener noreferrer" class="footerLogoLink_wTwz"><img src="/./img/asf_logo_wide.svg" alt="Apache Soft [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/lunr-index-1717765913454.json b/lunr-index-1717765913454.json
deleted file mode 100644
index 8ab60b1745..0000000000
--- a/lunr-index-1717765913454.json
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,220.38,1,123.032,2,387.811,3,367.496,4,413.603,5,255.954,6,413.603]],["content/0",[0,2.562,1,2.845,2,8.16,3,7.733,4,7.668,5,4.745,6,8.703,7,2.662,8,2.86,9,3.365,10,1.201,11,3.15,12,4.508,13,4.994,14,6.982,15,9.949,16,2.753,17,3.365,18,4.994,19,3.365,20,2.582,21,2.084,22,0.54,23,1.429,24,2.157,25,3.692,26,3.365,27,4.994,28,7.668,29,2.753,30,3.15,31,1.785,32,5.454,33,3.15,34,3.371,35,3.325,36,3.365,37, [...]
\ No newline at end of file
diff --git a/lunr-index-1717778466834.json b/lunr-index-1717778466834.json
new file mode 100644
index 0000000000..794e730eb6
--- /dev/null
+++ b/lunr-index-1717778466834.json
@@ -0,0 +1 @@
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,143.338,1,52.517,2,331.319,3,231.15,4,226.243,5,399.968,6,298.69,7,360.276]],["content/0",[0,1.255,1,1.236,2,7.801,3,5.854,4,5.73,5,8.517,6,5.487,7,7.672,8,3.019,9,3.312,10,4.057,11,2.165,12,3.739,13,4.775,14,5.452,15,4.035,16,10.13,17,3.154,18,4.057,19,5.452,20,4.057,21,3.019,22,3.501,23,1.127,24,2.396,25,2.333,26,5.192,27,3.312,28,5.192,29,4.539,30,7.032,31,4.539,32,4.539,33,3.739,34,3.501,35,3.739 [...]
\ No newline at end of file
diff --git a/lunr-index.json b/lunr-index.json
index 8ab60b1745..794e730eb6 100644
--- a/lunr-index.json
+++ b/lunr-index.json
@@ -1 +1 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,220.38,1,123.032,2,387.811,3,367.496,4,413.603,5,255.954,6,413.603]],["content/0",[0,2.562,1,2.845,2,8.16,3,7.733,4,7.668,5,4.745,6,8.703,7,2.662,8,2.86,9,3.365,10,1.201,11,3.15,12,4.508,13,4.994,14,6.982,15,9.949,16,2.753,17,3.365,18,4.994,19,3.365,20,2.582,21,2.084,22,0.54,23,1.429,24,2.157,25,3.692,26,3.365,27,4.994,28,7.668,29,2.753,30,3.15,31,1.785,32,5.454,33,3.15,34,3.371,35,3.325,36,3.365,37, [...]
\ No newline at end of file
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,143.338,1,52.517,2,331.319,3,231.15,4,226.243,5,399.968,6,298.69,7,360.276]],["content/0",[0,1.255,1,1.236,2,7.801,3,5.854,4,5.73,5,8.517,6,5.487,7,7.672,8,3.019,9,3.312,10,4.057,11,2.165,12,3.739,13,4.775,14,5.452,15,4.035,16,10.13,17,3.154,18,4.057,19,5.452,20,4.057,21,3.019,22,3.501,23,1.127,24,2.396,25,2.333,26,5.192,27,3.312,28,5.192,29,4.539,30,7.032,31,4.539,32,4.539,33,3.739,34,3.501,35,3.739 [...]
\ No newline at end of file
diff --git a/search-doc-1717765913454.json b/search-doc-1717765913454.json
deleted file mode 100644
index 7ec0117911..0000000000
--- a/search-doc-1717765913454.json
+++ /dev/null
@@ -1 +0,0 @@
-{"searchDocs":[{"title":"Apache OpenDAL™ participates in Google Summer of Code 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-gsoc-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Google Summer of Code (GSoC) 2024. If you're not eligible or interested in participating in GSoC, then most of this post likely isn't relevant to you; if you are, this should contain some useful info [...]
\ No newline at end of file
diff --git a/search-doc-1717778466834.json b/search-doc-1717778466834.json
new file mode 100644
index 0000000000..db7697c508
--- /dev/null
+++ b/search-doc-1717778466834.json
@@ -0,0 +1 @@
+{"searchDocs":[{"title":"Apache OpenDAL™ participates in Open Source Promotion Plan 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-ospp-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Open Source Promotion Plan (OSPP) 2024. If you're not eligible or interested in participating in OSPP, then most of this post likely isn't relevant to you; if you are, this should contain some u [...]
\ No newline at end of file
diff --git a/search-doc.json b/search-doc.json
index 7ec0117911..db7697c508 100644
--- a/search-doc.json
+++ b/search-doc.json
@@ -1 +1 @@
-{"searchDocs":[{"title":"Apache OpenDAL™ participates in Google Summer of Code 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-gsoc-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Google Summer of Code (GSoC) 2024. If you're not eligible or interested in participating in GSoC, then most of this post likely isn't relevant to you; if you are, this should contain some useful info [...]
\ No newline at end of file
+{"searchDocs":[{"title":"Apache OpenDAL™ participates in Open Source Promotion Plan 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-ospp-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Open Source Promotion Plan (OSPP) 2024. If you're not eligible or interested in participating in OSPP, then most of this post likely isn't relevant to you; if you are, this should contain some u [...]
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 4f0aea87cf..356a3d07fb 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://opendal.apache.org/blog</loc><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://opendal.apache.org/blog/apache-opendal-gra [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://opendal.apache.org/blog</loc><changefreq>daily</changefreq><priority>0.5</priority></url><url><loc>https://opendal.apache.org/blog/apache-opendal-gra [...]
\ No newline at end of file