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/04/24 09:25:03 UTC

(opendal) branch gh-pages updated: deploy: 6f48b59ba9d7e4ea1c3d328b30b60d5db950e4a5

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 a42cbaf393 deploy: 6f48b59ba9d7e4ea1c3d328b30b60d5db950e4a5
a42cbaf393 is described below

commit a42cbaf393e47d0f1ce86349f4898a3a06e5eefa
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Wed Apr 24 09:24:58 2024 +0000

    deploy: 6f48b59ba9d7e4ea1c3d328b30b60d5db950e4a5
---
 404.html                                           |   4 +-
 assets/js/054cd2fb.2a6909fa.js                     |   1 -
 assets/js/054cd2fb.dc4d21e9.js                     |   1 +
 assets/js/0605a481.1bfb7859.js                     |   1 +
 assets/js/0605a481.d593f93e.js                     |   1 -
 assets/js/093f5f04.4d5f4e39.js                     |   1 -
 assets/js/093f5f04.4e403a53.js                     |   1 +
 assets/js/09d8124e.362bd791.js                     |   1 +
 assets/js/09d8124e.bba8cf15.js                     |   1 -
 assets/js/136e1c50.519ef1dd.js                     |   1 +
 assets/js/136e1c50.acb0d0c8.js                     |   1 -
 assets/js/151cd40f.72a75d52.js                     |   1 -
 assets/js/151cd40f.e72ceb59.js                     |   1 +
 assets/js/170f36cb.d6effe58.js                     |   1 -
 assets/js/170f36cb.e9dcc9fc.js                     |   1 +
 assets/js/1957547a.511bdb76.js                     |   1 +
 assets/js/1957547a.ea777b38.js                     |   1 -
 assets/js/1db64337.59c67fac.js                     |   1 +
 assets/js/1db64337.c338d36c.js                     |   1 -
 assets/js/22d8fa67.b6430b57.js                     |   1 -
 assets/js/22d8fa67.fd1b3a49.js                     |   1 +
 assets/js/29b208a4.8691fa92.js                     |   1 -
 assets/js/29b208a4.ba91eba5.js                     |   1 +
 .../{2cbf1097.2b49ac5f.js => 2cbf1097.145178dc.js} |   2 +-
 assets/js/3632610d.889a4b4b.js                     |   1 +
 assets/js/3632610d.c7fd6501.js                     |   1 -
 assets/js/381c04e3.751817a1.js                     |   1 +
 assets/js/381c04e3.c6dd7aac.js                     |   1 -
 .../{39a95de5.66755f91.js => 39a95de5.2b37d658.js} |   2 +-
 assets/js/42347498.047832f5.js                     |   1 +
 assets/js/42347498.effe2616.js                     |   1 -
 assets/js/434bbc94.4c6467c8.js                     |   1 -
 assets/js/434bbc94.e4fb1195.js                     |   1 +
 assets/js/4e2d8f56.9fbe0db2.js                     |   1 +
 assets/js/4e2d8f56.badd07a7.js                     |   1 -
 assets/js/500d55cb.423eb998.js                     |   1 -
 assets/js/500d55cb.49017e2a.js                     |   1 +
 assets/js/57a16c1d.225f8999.js                     |   1 +
 assets/js/57a16c1d.588d4b35.js                     |   1 -
 assets/js/592d1076.156cd95c.js                     |   1 -
 assets/js/592d1076.72571fcc.js                     |   1 +
 assets/js/621b831b.903af289.js                     |   1 +
 assets/js/621b831b.a41cd8ee.js                     |   1 -
 assets/js/65bf2b43.40ce85d0.js                     |   1 +
 assets/js/65bf2b43.544aae89.js                     |   1 -
 assets/js/67ecc70e.9b3fd2f6.js                     |   1 +
 assets/js/67ecc70e.d0c7f7e0.js                     |   1 -
 assets/js/6a41242b.51eda9e6.js                     |   1 +
 assets/js/6a41242b.c5eceee1.js                     |   1 -
 assets/js/6dc695d1.7f39788b.js                     |   1 -
 assets/js/6dc695d1.90d4f45f.js                     |   1 +
 assets/js/6f4d3fa1.2453847c.js                     |   1 +
 assets/js/6f4d3fa1.8a175ded.js                     |   1 -
 assets/js/7263c0b5.05906063.js                     |   1 -
 assets/js/7263c0b5.bdbb178f.js                     |   1 +
 assets/js/8070e160.272d304c.js                     |   1 +
 assets/js/8070e160.b3bc5f2e.js                     |   1 -
 .../{8cc9519e.8ac0795c.js => 8cc9519e.989506af.js} |   2 +-
 .../{8f4159f2.a2d25ac1.js => 8f4159f2.45633d60.js} |   2 +-
 assets/js/8fb00c63.6a17174e.js                     |   1 +
 assets/js/8fb00c63.8163ee9f.js                     |   1 -
 assets/js/939f74f6.75d7c3a0.js                     |   1 +
 assets/js/939f74f6.ba874c9a.js                     |   1 -
 assets/js/a0405932.3c92fcc8.js                     |   1 -
 assets/js/a0405932.cb667db0.js                     |   1 +
 assets/js/b114cefa.7286c988.js                     |   1 -
 assets/js/b114cefa.c7f028f1.js                     |   1 +
 assets/js/b56f9725.0b906a88.js                     |   1 +
 assets/js/b56f9725.bc59c474.js                     |   1 -
 assets/js/bb5b2057.7d696b09.js                     |   1 -
 assets/js/bb5b2057.d877ecd1.js                     |   1 +
 assets/js/c0600a1b.9d9bdcb5.js                     |   1 +
 assets/js/c0600a1b.b79cc5df.js                     |   1 -
 assets/js/c46c6b55.56accdc4.js                     |   1 +
 assets/js/c46c6b55.f583bc98.js                     |   1 -
 .../{c6ab695b.0c424ca9.js => c6ab695b.8c1d5e29.js} |   2 +-
 .../{c8a4ba5b.afb20bf7.js => c8a4ba5b.d5bcdb78.js} |   2 +-
 .../{cc62039a.d57831d2.js => cc62039a.e4c2c4ed.js} |   2 +-
 assets/js/d3c0d8d5.0559e979.js                     |   1 +
 assets/js/d3c0d8d5.0fd90320.js                     |   1 -
 assets/js/ddccef4c.a890891e.js                     |   1 -
 assets/js/ddccef4c.ea089556.js                     |   1 +
 assets/js/e892cec6.220981b6.js                     |   1 +
 assets/js/e892cec6.2d51f784.js                     |   1 -
 assets/js/eec267e4.558eb48b.js                     |   1 -
 assets/js/eec267e4.bbe61b1c.js                     |   1 +
 assets/js/f1ca5a39.4add1bb5.js                     |   1 -
 assets/js/f1ca5a39.4cb335ae.js                     |   1 +
 assets/js/f9145722.226f569d.js                     |   1 +
 assets/js/f9145722.5a6a76d1.js                     |   1 -
 assets/js/fde7cc64.622c0ef4.js                     |   1 +
 assets/js/fde7cc64.aa3c26bc.js                     |   1 -
 assets/js/{main.69f861c3.js => main.60293e9e.js}   |   4 +-
 ...js.LICENSE.txt => main.60293e9e.js.LICENSE.txt} |   0
 ...e~main.1b957f35.js => runtime~main.82b0c093.js} |   2 +-
 blog/apache-opendal-graduated/index.html           |   4 +-
 .../index.html                                     |   4 +-
 blog/archive/index.html                            |   4 +-
 blog/how-opendal-read-data/index.html              |   4 +-
 blog/index.html                                    |   4 +-
 blog/opendal-access-data-freely/index.html         |   4 +-
 blog/opendal-entered-apache-incubator/index.html   |   4 +-
 blog/owo-1/index.html                              |   4 +-
 blog/tags/announcement/index.html                  |   4 +-
 blog/tags/index.html                               |   4 +-
 blog/tags/internal/index.html                      |   4 +-
 blog/tags/owo/index.html                           |   4 +-
 community/category/committers/index.html           |   4 +-
 community/category/events/index.html               |   4 +-
 community/category/pmc-members/index.html          |   4 +-
 community/category/reference/index.html            |   4 +-
 community/committers/onboarding/index.html         |   4 +-
 .../reference/generate_release_note/index.html     |   4 +-
 .../committers/reference/setup_gpg/index.html      |   4 +-
 community/committers/release/index.html            |   4 +-
 .../request_for_adding_secrets/index.html          |   4 +-
 community/committers/verify/index.html             |   4 +-
 community/events/gsoc-proposal-guide/index.html    |   4 +-
 community/index.html                               |   4 +-
 community/maturity/index.html                      |   4 +-
 community/news/index.html                          |   4 +-
 .../pmc_members/nominate-committer/index.html      |   4 +-
 .../pmc_members/nominate-pmc-member/index.html     |   4 +-
 community/pmc_members/onboarding/index.html        |   4 +-
 community/pmc_members/podling-report/index.html    |   4 +-
 community/security/index.html                      |   4 +-
 docs/category/integrations/index.html              |   4 +-
 docs/category/services/index.html                  |   4 +-
 docs/integrations/dav-server-opendalfs/index.html  |   6 +-
 docs/integrations/object_store_opendal/index.html  |   6 +-
 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/overview/index.html                           |   6 +-
 docs/python/opendal.html                           | 436 ++++++++++-----------
 docs/python/search.js                              |   2 +-
 docs/quickstart/index.html                         |   6 +-
 docs/rust/opendal/all.html                         |   2 +-
 .../raw/oio/buf/pooled_buf/struct.PooledBuf.html   |  11 +
 docs/rust/opendal/raw/oio/index.html               |   2 +-
 docs/rust/opendal/raw/oio/sidebar-items.js         |   2 +-
 docs/rust/opendal/raw/oio/struct.PooledBuf.html    | 115 ++++++
 docs/rust/search-index.js                          |   2 +-
 docs/rust/src-files.js                             |   2 +-
 docs/rust/src/opendal/raw/oio/buf/mod.rs.html      |   6 +
 .../src/opendal/raw/oio/buf/pooled_buf.rs.html     | 231 +++++++++++
 docs/rust/trait.impl/core/marker/trait.Freeze.js   |   2 +-
 docs/rust/trait.impl/core/marker/trait.Send.js     |   2 +-
 docs/rust/trait.impl/core/marker/trait.Sync.js     |   2 +-
 docs/rust/trait.impl/core/marker/trait.Unpin.js    |   2 +-
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |   2 +-
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |   2 +-
 docs/services/atomicserver/index.html              |   6 +-
 docs/services/azblob/index.html                    |   6 +-
 docs/services/azdls/index.html                     |   6 +-
 docs/services/cacache/index.html                   |   6 +-
 docs/services/cos/index.html                       |   6 +-
 docs/services/d1/index.html                        |   6 +-
 docs/services/dashmap/index.html                   |   6 +-
 docs/services/dropbox/index.html                   |   6 +-
 docs/services/etcd/index.html                      |   6 +-
 docs/services/foundationdb/index.html              |   6 +-
 docs/services/fs/index.html                        |   6 +-
 docs/services/ftp/index.html                       |   6 +-
 docs/services/gcs/index.html                       |   6 +-
 docs/services/gdrive/index.html                    |   6 +-
 docs/services/ghac/index.html                      |   6 +-
 docs/services/gridfs/index.html                    |   6 +-
 docs/services/hdfs/index.html                      |   6 +-
 docs/services/http/index.html                      |   6 +-
 docs/services/huggingface/index.html               |   6 +-
 docs/services/ipfs/index.html                      |   6 +-
 docs/services/ipmfs/index.html                     |   6 +-
 docs/services/libsql/index.html                    |   6 +-
 docs/services/memcached/index.html                 |   6 +-
 docs/services/memory/index.html                    |   6 +-
 docs/services/moka/index.html                      |   6 +-
 docs/services/mongodb/index.html                   |   6 +-
 docs/services/mysql/index.html                     |   6 +-
 docs/services/obs/index.html                       |   6 +-
 docs/services/onedrive/index.html                  |   6 +-
 docs/services/oss/index.html                       |   6 +-
 docs/services/persy/index.html                     |   6 +-
 docs/services/postgresql/index.html                |   6 +-
 docs/services/redb/index.html                      |   6 +-
 docs/services/redis/index.html                     |   6 +-
 docs/services/rocksdb/index.html                   |   6 +-
 docs/services/s3/index.html                        |   6 +-
 docs/services/sftp/index.html                      |   6 +-
 docs/services/sled/index.html                      |   6 +-
 docs/services/sqlite/index.html                    |   6 +-
 docs/services/supabase/index.html                  |   6 +-
 docs/services/swift/index.html                     |   6 +-
 docs/services/tikv/index.html                      |   6 +-
 docs/services/vercel_artifacts/index.html          |   6 +-
 docs/services/webdav/index.html                    |   6 +-
 docs/services/webhdfs/index.html                   |   6 +-
 download/index.html                                |   4 +-
 index.html                                         |   4 +-
 lunr-index-1713936510492.json                      |   1 -
 lunr-index-1713950657499.json                      |   1 +
 lunr-index.json                                    |   2 +-
 search-doc-1713936510492.json                      |   1 -
 search-doc-1713950657499.json                      |   1 +
 search-doc.json                                    |   2 +-
 220 files changed, 985 insertions(+), 622 deletions(-)

diff --git a/404.html b/404.html
index ac8be99b7f..12b745bdb5 100644
--- a/404.html
+++ b/404.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/assets/js/054cd2fb.2a6909fa.js b/assets/js/054cd2fb.2a6909fa.js
deleted file mode 100644
index 89ebd1d5ba..0000000000
--- a/assets/js/054cd2fb.2a6909fa.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/054cd2fb.dc4d21e9.js b/assets/js/054cd2fb.dc4d21e9.js
new file mode 100644
index 0000000000..879c7e7d7f
--- /dev/null
+++ b/assets/js/054cd2fb.dc4d21e9.js
@@ -0,0 +1 @@
+"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.1bfb7859.js b/assets/js/0605a481.1bfb7859.js
new file mode 100644
index 0000000000..efe49b8e0a
--- /dev/null
+++ b/assets/js/0605a481.1bfb7859.js
@@ -0,0 +1 @@
+"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 i(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/0605a481.d593f93e.js b/assets/js/0605a481.d593f93e.js
deleted file mode 100644
index be34a6b4ef..0000000000
--- a/assets/js/0605a481.d593f93e.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 i(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.4d5f4e39.js b/assets/js/093f5f04.4d5f4e39.js
deleted file mode 100644
index 80b7bbe39e..0000000000
--- a/assets/js/093f5f04.4d5f4e39.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/093f5f04.4e403a53.js b/assets/js/093f5f04.4e403a53.js
new file mode 100644
index 0000000000..02f3be027d
--- /dev/null
+++ b/assets/js/093f5f04.4e403a53.js
@@ -0,0 +1 @@
+"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.362bd791.js b/assets/js/09d8124e.362bd791.js
new file mode 100644
index 0000000000..8d670b1967
--- /dev/null
+++ b/assets/js/09d8124e.362bd791.js
@@ -0,0 +1 @@
+"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:()=>o,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/09d8124e.bba8cf15.js b/assets/js/09d8124e.bba8cf15.js
deleted file mode 100644
index 23ab72cd64..0000000000
--- a/assets/js/09d8124e.bba8cf15.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:()=>o,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.519ef1dd.js b/assets/js/136e1c50.519ef1dd.js
new file mode 100644
index 0000000000..22ae40d573
--- /dev/null
+++ b/assets/js/136e1c50.519ef1dd.js
@@ -0,0 +1 @@
+"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/136e1c50.acb0d0c8.js b/assets/js/136e1c50.acb0d0c8.js
deleted file mode 100644
index cbb9371ace..0000000000
--- a/assets/js/136e1c50.acb0d0c8.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/151cd40f.72a75d52.js b/assets/js/151cd40f.72a75d52.js
deleted file mode 100644
index 33266ca6ef..0000000000
--- a/assets/js/151cd40f.72a75d52.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/151cd40f.e72ceb59.js b/assets/js/151cd40f.e72ceb59.js
new file mode 100644
index 0000000000..821886001b
--- /dev/null
+++ b/assets/js/151cd40f.e72ceb59.js
@@ -0,0 +1 @@
+"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.d6effe58.js b/assets/js/170f36cb.d6effe58.js
deleted file mode 100644
index 7817e0a9cf..0000000000
--- a/assets/js/170f36cb.d6effe58.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:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>c,metadata:()=>d,toc:()=>l});var o=n(1527),s=n(2175);function r(e){const t={a:"a",h1:"h1",p:"p",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"opendal-object_store-binding",children:"OpenDAL object_store Binding"}),"\n",(0,o.jsxs)(t.p,{children:["This crate int [...]
\ No newline at end of file
diff --git a/assets/js/170f36cb.e9dcc9fc.js b/assets/js/170f36cb.e9dcc9fc.js
new file mode 100644
index 0000000000..5ebbd1f96b
--- /dev/null
+++ b/assets/js/170f36cb.e9dcc9fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[527],{5766:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>h,frontMatter:()=>c,metadata:()=>d,toc:()=>l});var o=n(1527),s=n(2175);function r(e){const t={a:"a",h1:"h1",p:"p",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"opendal-object_store-binding",children:"OpenDAL object_store Binding"}),"\n",(0,o.jsxs)(t.p,{children:["This crate int [...]
\ No newline at end of file
diff --git a/assets/js/1957547a.511bdb76.js b/assets/js/1957547a.511bdb76.js
new file mode 100644
index 0000000000..6808e3fdb0
--- /dev/null
+++ b/assets/js/1957547a.511bdb76.js
@@ -0,0 +1 @@
+"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),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/1957547a.ea777b38.js b/assets/js/1957547a.ea777b38.js
deleted file mode 100644
index 8506ab1bad..0000000000
--- a/assets/js/1957547a.ea777b38.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),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/1db64337.59c67fac.js b/assets/js/1db64337.59c67fac.js
new file mode 100644
index 0000000000..e1204af784
--- /dev/null
+++ b/assets/js/1db64337.59c67fac.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{7500:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var r=n(1527),t=n(2175);const i={sidebar_label:"About",sidebar_position:1},o="Welcome to Apache OpenDAL\u2122",a={id:"overview",title:"Welcome to Apache OpenDAL\u2122",description:"OpenDAL represents Open Data Access Layer. Our vision is to access data freely.",source:"@si [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.c338d36c.js b/assets/js/1db64337.c338d36c.js
deleted file mode 100644
index 3fa67f2057..0000000000
--- a/assets/js/1db64337.c338d36c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{7500:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var r=n(1527),t=n(2175);const i={sidebar_label:"About",sidebar_position:1},o="Welcome to Apache OpenDAL\u2122",a={id:"overview",title:"Welcome to Apache OpenDAL\u2122",description:"OpenDAL represents Open Data Access Layer. Our vision is to access data freely.",source:"@si [...]
\ No newline at end of file
diff --git a/assets/js/22d8fa67.b6430b57.js b/assets/js/22d8fa67.b6430b57.js
deleted file mode 100644
index 83ae4e53ba..0000000000
--- a/assets/js/22d8fa67.b6430b57.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 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.jsx)(t.p,{chi [...]
\ No newline at end of file
diff --git a/assets/js/22d8fa67.fd1b3a49.js b/assets/js/22d8fa67.fd1b3a49.js
new file mode 100644
index 0000000000..5c0ded8405
--- /dev/null
+++ b/assets/js/22d8fa67.fd1b3a49.js
@@ -0,0 +1 @@
+"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 a=n(1527),s=n(2175);function r(e){const t={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)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,a.jsx)(t.p,{chi [...]
\ No newline at end of file
diff --git a/assets/js/29b208a4.8691fa92.js b/assets/js/29b208a4.8691fa92.js
deleted file mode 100644
index cd91453967..0000000000
--- a/assets/js/29b208a4.8691fa92.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/29b208a4.ba91eba5.js b/assets/js/29b208a4.ba91eba5.js
new file mode 100644
index 0000000000..6cfa66c062
--- /dev/null
+++ b/assets/js/29b208a4.ba91eba5.js
@@ -0,0 +1 @@
+"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.2b49ac5f.js b/assets/js/2cbf1097.145178dc.js
similarity index 74%
rename from assets/js/2cbf1097.2b49ac5f.js
rename to assets/js/2cbf1097.145178dc.js
index b985dc9713..e8248d0d24 100644
--- a/assets/js/2cbf1097.2b49ac5f.js
+++ b/assets/js/2cbf1097.145178dc.js
@@ -1 +1 @@
-"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
+"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/3632610d.889a4b4b.js b/assets/js/3632610d.889a4b4b.js
new file mode 100644
index 0000000000..47f387c0f9
--- /dev/null
+++ b/assets/js/3632610d.889a4b4b.js
@@ -0,0 +1 @@
+"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:()=>o,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/3632610d.c7fd6501.js b/assets/js/3632610d.c7fd6501.js
deleted file mode 100644
index 67f9b24667..0000000000
--- a/assets/js/3632610d.c7fd6501.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:()=>o,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/381c04e3.751817a1.js b/assets/js/381c04e3.751817a1.js
new file mode 100644
index 0000000000..02efd503c6
--- /dev/null
+++ b/assets/js/381c04e3.751817a1.js
@@ -0,0 +1 @@
+"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/381c04e3.c6dd7aac.js b/assets/js/381c04e3.c6dd7aac.js
deleted file mode 100644
index 40bf104f94..0000000000
--- a/assets/js/381c04e3.c6dd7aac.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.66755f91.js b/assets/js/39a95de5.2b37d658.js
similarity index 53%
rename from assets/js/39a95de5.66755f91.js
rename to assets/js/39a95de5.2b37d658.js
index 2c546a3acf..9c30d01bd0 100644
--- a/assets/js/39a95de5.66755f91.js
+++ b/assets/js/39a95de5.2b37d658.js
@@ -1 +1 @@
-"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:()=>x});var s=t(1527),i=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,i.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
+"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:()=>x});var s=t(1527),i=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,i.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.047832f5.js b/assets/js/42347498.047832f5.js
new file mode 100644
index 0000000000..cb634b7352
--- /dev/null
+++ b/assets/js/42347498.047832f5.js
@@ -0,0 +1 @@
+"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/42347498.effe2616.js b/assets/js/42347498.effe2616.js
deleted file mode 100644
index f346b14574..0000000000
--- a/assets/js/42347498.effe2616.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.4c6467c8.js b/assets/js/434bbc94.4c6467c8.js
deleted file mode 100644
index 4531defe57..0000000000
--- a/assets/js/434bbc94.4c6467c8.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:()=>d,default:()=>b,frontMatter:()=>o,metadata:()=>u,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.e4fb1195.js b/assets/js/434bbc94.e4fb1195.js
new file mode 100644
index 0000000000..3c860abaeb
--- /dev/null
+++ b/assets/js/434bbc94.e4fb1195.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1163],{6404:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>b,frontMatter:()=>o,metadata:()=>u,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.9fbe0db2.js b/assets/js/4e2d8f56.9fbe0db2.js
new file mode 100644
index 0000000000..8da2e99795
--- /dev/null
+++ b/assets/js/4e2d8f56.9fbe0db2.js
@@ -0,0 +1 @@
+"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 r(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/4e2d8f56.badd07a7.js b/assets/js/4e2d8f56.badd07a7.js
deleted file mode 100644
index 615b80cb7c..0000000000
--- a/assets/js/4e2d8f56.badd07a7.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 r(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.423eb998.js b/assets/js/500d55cb.423eb998.js
deleted file mode 100644
index fa2e89a5b1..0000000000
--- a/assets/js/500d55cb.423eb998.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/500d55cb.49017e2a.js b/assets/js/500d55cb.49017e2a.js
new file mode 100644
index 0000000000..24fccacf42
--- /dev/null
+++ b/assets/js/500d55cb.49017e2a.js
@@ -0,0 +1 @@
+"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/57a16c1d.225f8999.js b/assets/js/57a16c1d.225f8999.js
new file mode 100644
index 0000000000..bd052b49b8
--- /dev/null
+++ b/assets/js/57a16c1d.225f8999.js
@@ -0,0 +1 @@
+"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/57a16c1d.588d4b35.js b/assets/js/57a16c1d.588d4b35.js
deleted file mode 100644
index f9ee8cd740..0000000000
--- a/assets/js/57a16c1d.588d4b35.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/592d1076.156cd95c.js b/assets/js/592d1076.156cd95c.js
deleted file mode 100644
index c33bede796..0000000000
--- a/assets/js/592d1076.156cd95c.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:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={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)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(t.p,{chil [...]
\ No newline at end of file
diff --git a/assets/js/592d1076.72571fcc.js b/assets/js/592d1076.72571fcc.js
new file mode 100644
index 0000000000..34b8c11c62
--- /dev/null
+++ b/assets/js/592d1076.72571fcc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[990],{1760:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={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)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(t.p,{chil [...]
\ No newline at end of file
diff --git a/assets/js/621b831b.903af289.js b/assets/js/621b831b.903af289.js
new file mode 100644
index 0000000000..4d45d1eee9
--- /dev/null
+++ b/assets/js/621b831b.903af289.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4551],{6611:(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),a=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",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 [...]
\ No newline at end of file
diff --git a/assets/js/621b831b.a41cd8ee.js b/assets/js/621b831b.a41cd8ee.js
deleted file mode 100644
index 9e1a9efc40..0000000000
--- a/assets/js/621b831b.a41cd8ee.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:()=>d,default:()=>b,frontMatter:()=>c,metadata:()=>u,toc:()=>h});var s=t(1527),a=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",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 [...]
\ No newline at end of file
diff --git a/assets/js/65bf2b43.40ce85d0.js b/assets/js/65bf2b43.40ce85d0.js
new file mode 100644
index 0000000000..86f2c34d06
--- /dev/null
+++ b/assets/js/65bf2b43.40ce85d0.js
@@ -0,0 +1 @@
+"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/65bf2b43.544aae89.js b/assets/js/65bf2b43.544aae89.js
deleted file mode 100644
index a9092d3a86..0000000000
--- a/assets/js/65bf2b43.544aae89.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.9b3fd2f6.js b/assets/js/67ecc70e.9b3fd2f6.js
new file mode 100644
index 0000000000..f9fc148ff6
--- /dev/null
+++ b/assets/js/67ecc70e.9b3fd2f6.js
@@ -0,0 +1 @@
+"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/67ecc70e.d0c7f7e0.js b/assets/js/67ecc70e.d0c7f7e0.js
deleted file mode 100644
index a7f5712f14..0000000000
--- a/assets/js/67ecc70e.d0c7f7e0.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.51eda9e6.js b/assets/js/6a41242b.51eda9e6.js
new file mode 100644
index 0000000000..c8b2cccd9e
--- /dev/null
+++ b/assets/js/6a41242b.51eda9e6.js
@@ -0,0 +1 @@
+"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/6a41242b.c5eceee1.js b/assets/js/6a41242b.c5eceee1.js
deleted file mode 100644
index 3f835e557a..0000000000
--- a/assets/js/6a41242b.c5eceee1.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:()=>p,contentTitle:()=>u,default:()=>b,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/6dc695d1.7f39788b.js b/assets/js/6dc695d1.7f39788b.js
deleted file mode 100644
index 66e8140874..0000000000
--- a/assets/js/6dc695d1.7f39788b.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:()=>f,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/6dc695d1.90d4f45f.js b/assets/js/6dc695d1.90d4f45f.js
new file mode 100644
index 0000000000..4b0f33fd0b
--- /dev/null
+++ b/assets/js/6dc695d1.90d4f45f.js
@@ -0,0 +1 @@
+"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:()=>f,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.2453847c.js b/assets/js/6f4d3fa1.2453847c.js
new file mode 100644
index 0000000000..fa64ab0517
--- /dev/null
+++ b/assets/js/6f4d3fa1.2453847c.js
@@ -0,0 +1 @@
+"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/6f4d3fa1.8a175ded.js b/assets/js/6f4d3fa1.8a175ded.js
deleted file mode 100644
index 475156ca8c..0000000000
--- a/assets/js/6f4d3fa1.8a175ded.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.05906063.js b/assets/js/7263c0b5.05906063.js
deleted file mode 100644
index e4d6ec9d78..0000000000
--- a/assets/js/7263c0b5.05906063.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/7263c0b5.bdbb178f.js b/assets/js/7263c0b5.bdbb178f.js
new file mode 100644
index 0000000000..b9c4cce6d8
--- /dev/null
+++ b/assets/js/7263c0b5.bdbb178f.js
@@ -0,0 +1 @@
+"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/8070e160.272d304c.js b/assets/js/8070e160.272d304c.js
new file mode 100644
index 0000000000..5c3bf7bab5
--- /dev/null
+++ b/assets/js/8070e160.272d304c.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:()=>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/8070e160.b3bc5f2e.js b/assets/js/8070e160.b3bc5f2e.js
deleted file mode 100644
index 15d9f9e164..0000000000
--- a/assets/js/8070e160.b3bc5f2e.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.8ac0795c.js b/assets/js/8cc9519e.989506af.js
similarity index 64%
rename from assets/js/8cc9519e.8ac0795c.js
rename to assets/js/8cc9519e.989506af.js
index 698f10538c..d1434d2f32 100644
--- a/assets/js/8cc9519e.8ac0795c.js
+++ b/assets/js/8cc9519e.989506af.js
@@ -1 +1 @@
-"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:()=>a,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
+"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.a2d25ac1.js b/assets/js/8f4159f2.45633d60.js
similarity index 70%
rename from assets/js/8f4159f2.a2d25ac1.js
rename to assets/js/8f4159f2.45633d60.js
index 178e0eaa5b..c66644ec1e 100644
--- a/assets/js/8f4159f2.a2d25ac1.js
+++ b/assets/js/8f4159f2.45633d60.js
@@ -1 +1 @@
-"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
+"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.6a17174e.js b/assets/js/8fb00c63.6a17174e.js
new file mode 100644
index 0000000000..9a615c8720
--- /dev/null
+++ b/assets/js/8fb00c63.6a17174e.js
@@ -0,0 +1 @@
+"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/8fb00c63.8163ee9f.js b/assets/js/8fb00c63.8163ee9f.js
deleted file mode 100644
index b254b7d644..0000000000
--- a/assets/js/8fb00c63.8163ee9f.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/939f74f6.75d7c3a0.js b/assets/js/939f74f6.75d7c3a0.js
new file mode 100644
index 0000000000..ee99b4889d
--- /dev/null
+++ b/assets/js/939f74f6.75d7c3a0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4277],{7073:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>b,frontMatter:()=>o,metadata:()=>u,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/939f74f6.ba874c9a.js b/assets/js/939f74f6.ba874c9a.js
deleted file mode 100644
index 42d55f14d5..0000000000
--- a/assets/js/939f74f6.ba874c9a.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:()=>d,default:()=>b,frontMatter:()=>o,metadata:()=>u,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.3c92fcc8.js b/assets/js/a0405932.3c92fcc8.js
deleted file mode 100644
index 7c6b29eae1..0000000000
--- a/assets/js/a0405932.3c92fcc8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[716],{3033:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>b,frontMatter:()=>o,metadata:()=>d,toc:()=>h});var s=n(1527),r=n(2175);function a(e){const t={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)(t.h2,{id:"capabilities",children:"Capabilities"}),"\n",(0,s.jsx)(t.p,{chil [...]
\ No newline at end of file
diff --git a/assets/js/a0405932.cb667db0.js b/assets/js/a0405932.cb667db0.js
new file mode 100644
index 0000000000..0b50512ac7
--- /dev/null
+++ b/assets/js/a0405932.cb667db0.js
@@ -0,0 +1 @@
+"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/b114cefa.7286c988.js b/assets/js/b114cefa.7286c988.js
deleted file mode 100644
index 36d5b51aca..0000000000
--- a/assets/js/b114cefa.7286c988.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/b114cefa.c7f028f1.js b/assets/js/b114cefa.c7f028f1.js
new file mode 100644
index 0000000000..aecf506a3d
--- /dev/null
+++ b/assets/js/b114cefa.c7f028f1.js
@@ -0,0 +1 @@
+"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.0b906a88.js b/assets/js/b56f9725.0b906a88.js
new file mode 100644
index 0000000000..0266d6db49
--- /dev/null
+++ b/assets/js/b56f9725.0b906a88.js
@@ -0,0 +1 @@
+"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/b56f9725.bc59c474.js b/assets/js/b56f9725.bc59c474.js
deleted file mode 100644
index e5405224df..0000000000
--- a/assets/js/b56f9725.bc59c474.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[217],{4958:(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),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/bb5b2057.7d696b09.js b/assets/js/bb5b2057.7d696b09.js
deleted file mode 100644
index 9785a83fcd..0000000000
--- a/assets/js/bb5b2057.7d696b09.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/bb5b2057.d877ecd1.js b/assets/js/bb5b2057.d877ecd1.js
new file mode 100644
index 0000000000..c46069c72b
--- /dev/null
+++ b/assets/js/bb5b2057.d877ecd1.js
@@ -0,0 +1 @@
+"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.9d9bdcb5.js b/assets/js/c0600a1b.9d9bdcb5.js
new file mode 100644
index 0000000000..17c77d3e66
--- /dev/null
+++ b/assets/js/c0600a1b.9d9bdcb5.js
@@ -0,0 +1 @@
+"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/c0600a1b.b79cc5df.js b/assets/js/c0600a1b.b79cc5df.js
deleted file mode 100644
index ab99b6cf82..0000000000
--- a/assets/js/c0600a1b.b79cc5df.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.56accdc4.js b/assets/js/c46c6b55.56accdc4.js
new file mode 100644
index 0000000000..4ac4ac8250
--- /dev/null
+++ b/assets/js/c46c6b55.56accdc4.js
@@ -0,0 +1 @@
+"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/c46c6b55.f583bc98.js b/assets/js/c46c6b55.f583bc98.js
deleted file mode 100644
index 4ff793060a..0000000000
--- a/assets/js/c46c6b55.f583bc98.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/c6ab695b.0c424ca9.js b/assets/js/c6ab695b.8c1d5e29.js
similarity index 50%
rename from assets/js/c6ab695b.0c424ca9.js
rename to assets/js/c6ab695b.8c1d5e29.js
index 3d29bdeec8..26886928a8 100644
--- a/assets/js/c6ab695b.0c424ca9.js
+++ b/assets/js/c6ab695b.8c1d5e29.js
@@ -1 +1 @@
-"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
+"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.afb20bf7.js b/assets/js/c8a4ba5b.d5bcdb78.js
similarity index 57%
rename from assets/js/c8a4ba5b.afb20bf7.js
rename to assets/js/c8a4ba5b.d5bcdb78.js
index 9a9de7480e..469ff26900 100644
--- a/assets/js/c8a4ba5b.afb20bf7.js
+++ b/assets/js/c8a4ba5b.d5bcdb78.js
@@ -1 +1 @@
-"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),o=n(2175);function r(e){const t={a:"a",code:"code",h1:"h1",p:"p",...(0,o.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
+"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),o=n(2175);function r(e){const t={a:"a",code:"code",h1:"h1",p:"p",...(0,o.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/cc62039a.d57831d2.js b/assets/js/cc62039a.e4c2c4ed.js
similarity index 58%
rename from assets/js/cc62039a.d57831d2.js
rename to assets/js/cc62039a.e4c2c4ed.js
index 4f01c765fb..6ad6f20d91 100644
--- a/assets/js/cc62039a.d57831d2.js
+++ b/assets/js/cc62039a.e4c2c4ed.js
@@ -1 +1 @@
-"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
+"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.0559e979.js b/assets/js/d3c0d8d5.0559e979.js
new file mode 100644
index 0000000000..99b9056be8
--- /dev/null
+++ b/assets/js/d3c0d8d5.0559e979.js
@@ -0,0 +1 @@
+"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:()=>o,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/d3c0d8d5.0fd90320.js b/assets/js/d3c0d8d5.0fd90320.js
deleted file mode 100644
index 8422ceac7e..0000000000
--- a/assets/js/d3c0d8d5.0fd90320.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:()=>o,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.a890891e.js b/assets/js/ddccef4c.a890891e.js
deleted file mode 100644
index 7b77521138..0000000000
--- a/assets/js/ddccef4c.a890891e.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:()=>d,default:()=>x,frontMatter:()=>o,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/ddccef4c.ea089556.js b/assets/js/ddccef4c.ea089556.js
new file mode 100644
index 0000000000..a67335bfa5
--- /dev/null
+++ b/assets/js/ddccef4c.ea089556.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[9826],{627:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>x,frontMatter:()=>o,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/e892cec6.220981b6.js b/assets/js/e892cec6.220981b6.js
new file mode 100644
index 0000000000..21ceaeb8a4
--- /dev/null
+++ b/assets/js/e892cec6.220981b6.js
@@ -0,0 +1 @@
+"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/e892cec6.2d51f784.js b/assets/js/e892cec6.2d51f784.js
deleted file mode 100644
index 4db9d637e5..0000000000
--- a/assets/js/e892cec6.2d51f784.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.558eb48b.js b/assets/js/eec267e4.558eb48b.js
deleted file mode 100644
index 8be11d13ea..0000000000
--- a/assets/js/eec267e4.558eb48b.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:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>c,metadata:()=>d,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.jsxs)(n.p,{children:["This service will visit the ",(0,s.jsx)( [...]
\ No newline at end of file
diff --git a/assets/js/eec267e4.bbe61b1c.js b/assets/js/eec267e4.bbe61b1c.js
new file mode 100644
index 0000000000..034b53fa7d
--- /dev/null
+++ b/assets/js/eec267e4.bbe61b1c.js
@@ -0,0 +1 @@
+"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:()=>c,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.4add1bb5.js b/assets/js/f1ca5a39.4add1bb5.js
deleted file mode 100644
index 0e3f44a3a5..0000000000
--- a/assets/js/f1ca5a39.4add1bb5.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/f1ca5a39.4cb335ae.js b/assets/js/f1ca5a39.4cb335ae.js
new file mode 100644
index 0000000000..5af7ee5aa8
--- /dev/null
+++ b/assets/js/f1ca5a39.4cb335ae.js
@@ -0,0 +1 @@
+"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.226f569d.js b/assets/js/f9145722.226f569d.js
new file mode 100644
index 0000000000..9015ae9aa2
--- /dev/null
+++ b/assets/js/f9145722.226f569d.js
@@ -0,0 +1 @@
+"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/f9145722.5a6a76d1.js b/assets/js/f9145722.5a6a76d1.js
deleted file mode 100644
index 690b695b8a..0000000000
--- a/assets/js/f9145722.5a6a76d1.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.622c0ef4.js b/assets/js/fde7cc64.622c0ef4.js
new file mode 100644
index 0000000000..39aeb65501
--- /dev/null
+++ b/assets/js/fde7cc64.622c0ef4.js
@@ -0,0 +1 @@
+"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/fde7cc64.aa3c26bc.js b/assets/js/fde7cc64.aa3c26bc.js
deleted file mode 100644
index 4063cd017e..0000000000
--- a/assets/js/fde7cc64.aa3c26bc.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.69f861c3.js b/assets/js/main.60293e9e.js
similarity index 99%
rename from assets/js/main.69f861c3.js
rename to assets/js/main.60293e9e.js
index 76ec05b258..ef6d5d98e2 100644
--- a/assets/js/main.69f861c3.js
+++ b/assets/js/main.60293e9e.js
@@ -1,2 +1,2 @@
-/*! For license information please see main.69f861c3.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
+/*! For license information please see main.60293e9e.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/main.69f861c3.js.LICENSE.txt b/assets/js/main.60293e9e.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.69f861c3.js.LICENSE.txt
rename to assets/js/main.60293e9e.js.LICENSE.txt
diff --git a/assets/js/runtime~main.1b957f35.js b/assets/js/runtime~main.82b0c093.js
similarity index 81%
rename from assets/js/runtime~main.1b957f35.js
rename to assets/js/runtime~main.82b0c093.js
index ca6f634cd9..017275529c 100644
--- a/assets/js/runtime~main.1b957f35.js
+++ b/assets/js/runtime~main.82b0c093.js
@@ -1 +1 @@
-(()=>{"use strict";var e,c,a,f,b,d={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,b)=>{if(!a){var d=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,c,a,f,b,d={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,b)=>{if(!a){var d=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}b=b||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 d7467f5991..c2939a88b1 100644
--- a/blog/apache-opendal-graduated/index.html
+++ b/blog/apache-opendal-graduated/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/apache-opendal-participates-in-gsoc-2024/index.html b/blog/apache-opendal-participates-in-gsoc-2024/index.html
index 5842d2275d..c5ebeef50a 100644
--- a/blog/apache-opendal-participates-in-gsoc-2024/index.html
+++ b/blog/apache-opendal-participates-in-gsoc-2024/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 080898270f..03c0934a17 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/how-opendal-read-data/index.html b/blog/how-opendal-read-data/index.html
index 69b6596041..5935d49892 100644
--- a/blog/how-opendal-read-data/index.html
+++ b/blog/how-opendal-read-data/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/index.html b/blog/index.html
index 7c31929fb2..9ae7d2d66f 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/opendal-access-data-freely/index.html b/blog/opendal-access-data-freely/index.html
index af0f80a0ce..a0547a206e 100644
--- a/blog/opendal-access-data-freely/index.html
+++ b/blog/opendal-access-data-freely/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/opendal-entered-apache-incubator/index.html b/blog/opendal-entered-apache-incubator/index.html
index 6e9dade21e..969196aa7c 100644
--- a/blog/opendal-entered-apache-incubator/index.html
+++ b/blog/opendal-entered-apache-incubator/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/owo-1/index.html b/blog/owo-1/index.html
index e2a71e0f28..b3c57a6ecd 100644
--- a/blog/owo-1/index.html
+++ b/blog/owo-1/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/tags/announcement/index.html b/blog/tags/announcement/index.html
index d98a0d104d..5ad0a569cb 100644
--- a/blog/tags/announcement/index.html
+++ b/blog/tags/announcement/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">4 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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 063734f740..e1b8e33d98 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/tags/internal/index.html b/blog/tags/internal/index.html
index d350bdc390..e17957a2cc 100644
--- a/blog/tags/internal/index.html
+++ b/blog/tags/internal/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/blog/tags/owo/index.html b/blog/tags/owo/index.html
index b47e8b2b6f..0a70cf0008 100644
--- a/blog/tags/owo/index.html
+++ b/blog/tags/owo/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/category/committers/index.html b/community/category/committers/index.html
index 9aba43188d..10555f37bc 100644
--- a/community/category/committers/index.html
+++ b/community/category/committers/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/category/events/index.html b/community/category/events/index.html
index 12061ef99a..a71ca1b4c7 100644
--- a/community/category/events/index.html
+++ b/community/category/events/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/category/pmc-members/index.html b/community/category/pmc-members/index.html
index a283092b63..508a15e1f1 100644
--- a/community/category/pmc-members/index.html
+++ b/community/category/pmc-members/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/category/reference/index.html b/community/category/reference/index.html
index df9410fbd1..8bcea3d753 100644
--- a/community/category/reference/index.html
+++ b/community/category/reference/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/committers/onboarding/index.html b/community/committers/onboarding/index.html
index dfc8233b9d..8919273fcd 100644
--- a/community/committers/onboarding/index.html
+++ b/community/committers/onboarding/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/committers/reference/generate_release_note/index.html b/community/committers/reference/generate_release_note/index.html
index 8b386926de..3e94a26d34 100644
--- a/community/committers/reference/generate_release_note/index.html
+++ b/community/committers/reference/generate_release_note/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/committers/reference/setup_gpg/index.html b/community/committers/reference/setup_gpg/index.html
index 996f0e6c52..cd67e64794 100644
--- a/community/committers/reference/setup_gpg/index.html
+++ b/community/committers/reference/setup_gpg/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/committers/release/index.html b/community/committers/release/index.html
index b30e191b09..612d5aa1e3 100644
--- a/community/committers/release/index.html
+++ b/community/committers/release/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/committers/request_for_adding_secrets/index.html b/community/committers/request_for_adding_secrets/index.html
index 1110b230f7..711a8437f4 100644
--- a/community/committers/request_for_adding_secrets/index.html
+++ b/community/committers/request_for_adding_secrets/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/committers/verify/index.html b/community/committers/verify/index.html
index 920e9ed6cf..68d3247260 100644
--- a/community/committers/verify/index.html
+++ b/community/committers/verify/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/events/gsoc-proposal-guide/index.html b/community/events/gsoc-proposal-guide/index.html
index 9095415a3f..44fbf68187 100644
--- a/community/events/gsoc-proposal-guide/index.html
+++ b/community/events/gsoc-proposal-guide/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/index.html b/community/index.html
index 4a721813b3..4c020f1ea3 100644
--- a/community/index.html
+++ b/community/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/maturity/index.html b/community/maturity/index.html
index ca0727d3f2..c815192d6f 100644
--- a/community/maturity/index.html
+++ b/community/maturity/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/news/index.html b/community/news/index.html
index 9cf1706c82..554a406826 100644
--- a/community/news/index.html
+++ b/community/news/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">News | 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/news"><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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/pmc_members/nominate-committer/index.html b/community/pmc_members/nominate-committer/index.html
index 80ee2a5c1e..a6223e56f2 100644
--- a/community/pmc_members/nominate-committer/index.html
+++ b/community/pmc_members/nominate-committer/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/pmc_members/nominate-pmc-member/index.html b/community/pmc_members/nominate-pmc-member/index.html
index 38fbda1757..2ef198f8d8 100644
--- a/community/pmc_members/nominate-pmc-member/index.html
+++ b/community/pmc_members/nominate-pmc-member/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/pmc_members/onboarding/index.html b/community/pmc_members/onboarding/index.html
index 548d4d6b6b..f93934c537 100644
--- a/community/pmc_members/onboarding/index.html
+++ b/community/pmc_members/onboarding/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/pmc_members/podling-report/index.html b/community/pmc_members/podling-report/index.html
index 178b8ca419..d367632131 100644
--- a/community/pmc_members/podling-report/index.html
+++ b/community/pmc_members/podling-report/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.1.1">
 <title data-rh="true">Podling Status Reports | 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/podling-report"><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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/community/security/index.html b/community/security/index.html
index 51cdf93837..cedbfe4ef6 100644
--- a/community/security/index.html
+++ b/community/security/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/docs/category/integrations/index.html b/docs/category/integrations/index.html
index 8fd6d0b46f..3e37a44d7f 100644
--- a/docs/category/integrations/index.html
+++ b/docs/category/integrations/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/docs/category/services/index.html b/docs/category/services/index.html
index 5ebd0e2f8e..2e826f827a 100644
--- a/docs/category/services/index.html
+++ b/docs/category/services/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/docs/integrations/dav-server-opendalfs/index.html b/docs/integrations/dav-server-opendalfs/index.html
index 7c45c991f2..fc25acc838 100644
--- a/docs/integrations/dav-server-opendalfs/index.html
+++ b/docs/integrations/dav-server-opendalfs/index.html
@@ -5,11 +5,11 @@
 <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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
+<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
index 2ab8b78257..bc4e90bcd5 100644
--- a/docs/integrations/object_store_opendal/index.html
+++ b/docs/integrations/object_store_opendal/index.html
@@ -5,14 +5,14 @@
 <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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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></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/object_store_opendal.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width [...]
+<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></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/object_store_opendal.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width [...]
 </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 0ef1237f52..cfd894effa 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-04-24 05:14:12 </i>
+<i style="float:right;">Last updated 2024-04-24 09:10: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 f9720fda42..a5dedad110 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-04-24 05:14:12 </i>
+<i style="float:right;">Last updated 2024-04-24 09:10:15 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/lua/index.html b/docs/lua/index.html
index 36aef8efd3..8af783b64d 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-04-24 05:14:12 </i>
+<i style="float:right;">Last updated 2024-04-24 09:10:15 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index c958f08066..3c7a3217c6 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.45.1+core.0.45.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>< [...]
 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/1130fab/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/6f48b59/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 b880a0c666..615a01535d 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.45.1+core.0.45.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>< [...]
 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/1130fab/bindings/nodejs/generated.d.ts#L546">generated.d.ts:546</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/1130fab/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/6f48b59/bindings/nodejs/generated.d.ts#L546">generated.d.ts:546</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/6f48b59/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 85cea8d08c..9bbc0653f9 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.45.1+core.0.45.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>< [...]
 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/1130fab/bindings/nodejs/generated.d.ts#L567">generated.d.ts:567</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/1130fab/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/6f48b59/bindings/nodejs/generated.d.ts#L567">generated.d.ts:567</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/6f48b59/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/1130fab/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/6f48b59/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 dcbada26da..a1f0f04146 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/1130fab/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/6f48b59/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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 1837f2cd53..f729ec8e51 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.45.1+core.0.45.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 as [...]
-</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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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 c7d33d4ff6..4972980768 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.45.1+core.0.45.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>< [...]
+<!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.45.1+core.0.45.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>< [...]
 </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 35dadee95b..19dbad39a5 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.45.1+core.0.45.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 as [...]
-</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/1130fab/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/6f48b59/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 29d6ecd023..9c07a8d449 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.45.1+core.0.45.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 a [...]
 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/1130fab/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/6f48b59/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/11 [...]
\ 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/6f [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index a944226d2e..f42099b05a 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.45.1+core.0.45.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 [...]
-</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/1130fab/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/6f48b59/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/1130fab/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/6f48b59/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/1130fab/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/1130fab/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/1130fab/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/6f48b59/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/6f48b59/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/6f48b59/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 31b237f1e3..6207ce7950 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.45.1+core.0.45.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 [...]
+<!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.45.1+core.0.45.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 [...]
 </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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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 3b48e3e6f3..f8cc43134f 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.45.1+core.0.45.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 a [...]
 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/1130fab/bindings/nodejs/generated.d.ts#L553">generated.d.ts:553</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/1130fab/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/6f48b59/bindings/nodejs/generated.d.ts#L553">generated.d.ts:553</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/6f48b59/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 49d0ef7f4a..f205fa3a68 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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/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/1130fab/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/6f48b59/bindings/nodejs/generated. [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Writer.html b/docs/nodejs/classes/Writer.html
index fa2d06a96c..6aee0691cf 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.45.1+core.0.45.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 a [...]
 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/1130fab/bindings/nodejs/generated.d.ts#L604">generated.d.ts:604</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/1130fab/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/6f48b59/bindings/nodejs/generated.d.ts#L604">generated.d.ts:604</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/6f48b59/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/1130fab/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/6f48b59/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 f89c51f8e6..dbdc814e5a 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.45.1+core.0.45.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><scr [...]
+<!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.45.1+core.0.45.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><scr [...]
 <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 eeb94bfe5d..02dbd67b87 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.45.1+core.0.45.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 [...]
-</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/1130fab/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/1130fab/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/1130fab/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/6f48b59/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/6f48b59/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/6f48b59/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/overview/index.html b/docs/overview/index.html
index 65d3de23ee..177506d950 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -63,6 +63,6 @@
 <p>we DO NOT</p>
 <ul>
 <li>Add <code>Arc</code> for metadata: Users may only need to use metadata once and never clone it. For those who do want this feature, they can add <code>Arc</code> themselves.</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/overview.md" 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.2z m-29. [...]
+</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/overview.md" 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.2z m-29. [...]
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 600daea64d..bc7a797607 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -249,19 +249,19 @@
                                 <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_type">content_type</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.content_disposition">content_disposition</a>
+                                <a class="variable" href="#Metadata.content_md5">content_md5</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.url">url</a>
                         </li>
                         <li>
                                 <a class="variable" href="#PresignedRequest.headers">headers</a>
                         </li>
+                        <li>
+                                <a class="variable" href="#PresignedRequest.method">method</a>
+                        </li>
                 </ul>
 
             </li>
@@ -285,109 +285,109 @@
                     <a class="class" href="#Capability">Capability</a>
                             <ul class="memberlist">
                         <li>
-                                <a class="variable" href="#Capability.write_can_empty">write_can_empty</a>
+                                <a class="variable" href="#Capability.read">read</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_read">presign_read</a>
+                                <a class="variable" href="#Capability.presign">presign</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
+                                <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
+                                <a class="variable" href="#Capability.presign_read">presign_read</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_write">presign_write</a>
+                                <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_min_size">write_multi_min_size</a>
+                                <a class="variable" href="#Capability.batch_delete">batch_delete</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
+                                <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.blocking">blocking</a>
+                                <a class="variable" href="#Capability.write_can_empty">write_can_empty</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
+                                <a class="variable" href="#Capability.batch">batch</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
+                                <a class="variable" href="#Capability.read_with_if_none_match">read_with_if_none_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
+                                <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign">presign</a>
+                                <a class="variable" href="#Capability.read_with_override_cache_control">read_with_override_cache_control</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_stat">presign_stat</a>
+                                <a class="variable" href="#Capability.rename">rename</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
+                                <a class="variable" href="#Capability.list">list</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_max_size">write_multi_max_size</a>
+                                <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</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.list">list</a>
+                                <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</a>
+                                <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
+                                <a class="variable" href="#Capability.create_dir">create_dir</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
+                                <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.delete">delete</a>
+                                <a class="variable" href="#Capability.copy">copy</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch">batch</a>
+                                <a class="variable" href="#Capability.blocking">blocking</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch_delete">batch_delete</a>
+                                <a class="variable" href="#Capability.presign_write">presign_write</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">write</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read">read</a>
+                                <a class="variable" href="#Capability.presign_stat">presign_stat</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat">stat</a>
+                                <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</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">write</a>
+                                <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
+                                <a class="variable" href="#Capability.stat">stat</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.create_dir">create_dir</a>
+                                <a class="variable" href="#Capability.delete">delete</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_content_disposition">read_with_override_content_disposition</a>
+                                <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
+                                <a class="variable" href="#Capability.write_can_append">write_can_append</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.copy">copy</a>
+                                <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_can_append">write_can_append</a>
+                                <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</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.write_total_max_size">write_total_max_size</a>
@@ -1469,15 +1469,15 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
 
 
                             </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>
 
 
@@ -1495,41 +1495,41 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
 
 
                             </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.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>
                 </section>
@@ -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.url" class="classattr">
                                 <div class="attr variable">
-            <span class="name">method</span><span class="annotation">: str</span>
+            <span class="name">url</span><span class="annotation">: str</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.method"></a>
+    <a class="headerlink" href="#PresignedRequest.url"></a>
     
-            <div class="docstring"><p>Return the HTTP method 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.headers" class="classattr">
                                 <div class="attr variable">
-            <span class="name">url</span><span class="annotation">: str</span>
+            <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.url"></a>
+    <a class="headerlink" href="#PresignedRequest.headers"></a>
     
-            <div class="docstring"><p>Return the URL 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.method" class="classattr">
                                 <div class="attr variable">
-            <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
+            <span class="name">method</span><span class="annotation">: str</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.headers"></a>
+    <a class="headerlink" href="#PresignedRequest.method"></a>
     
-            <div class="docstring"><p>Return the HTTP headers of this request.</p>
+            <div class="docstring"><p>Return the HTTP method of this request.</p>
 </div>
 
 
@@ -1600,463 +1600,463 @@ by current Operator.</p>
 </div>
 
 
-                            <div id="Capability.write_can_empty" class="classattr">
+                            <div id="Capability.read" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_can_empty</span><span class="annotation">: bool</span>
+            <span class="name">read</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_can_empty"></a>
+    <a class="headerlink" href="#Capability.read"></a>
     
-            <div class="docstring"><p>If operator supports write with empty content.</p>
+            <div class="docstring"><p>If operator supports read.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_read" class="classattr">
+                            <div id="Capability.presign" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_read</span><span class="annotation">: bool</span>
+            <span class="name">presign</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_read"></a>
+    <a class="headerlink" href="#Capability.presign"></a>
     
-            <div class="docstring"><p>If operator supports presign read.</p>
+            <div class="docstring"><p>If operator supports presign.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat_with_if_none_match" class="classattr">
+                            <div id="Capability.batch_max_operations" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat_with_if_none_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_none_match"></a>
+    <a class="headerlink" href="#Capability.batch_max_operations"></a>
     
-            <div class="docstring"><p>If operator supports stat with if none match.</p>
+            <div class="docstring"><p>The max operations that operator supports in batch.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat_with_if_match" class="classattr">
+                            <div id="Capability.presign_read" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat_with_if_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_match"></a>
+    <a class="headerlink" href="#Capability.presign_read"></a>
     
-            <div class="docstring"><p>If operator supports stat with if match.</p>
+            <div class="docstring"><p>If operator supports presign read.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_write" class="classattr">
+                            <div id="Capability.write_can_multi" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_write</span><span class="annotation">: bool</span>
+            <span class="name">write_can_multi</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_write"></a>
+    <a class="headerlink" href="#Capability.write_can_multi"></a>
     
-            <div class="docstring"><p>If operator supports presign write.</p>
+            <div class="docstring"><p>If operator supports write can be called in multi times.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_min_size" class="classattr">
+                            <div id="Capability.batch_delete" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_min_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">batch_delete</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_min_size"></a>
+    <a class="headerlink" href="#Capability.batch_delete"></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 batch delete.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.batch_max_operations" class="classattr">
+                            <div id="Capability.write_multi_align_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch_max_operations</span><span class="annotation">: Optional[int]</span>
+            <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch_max_operations"></a>
+    <a class="headerlink" href="#Capability.write_multi_align_size"></a>
     
-            <div class="docstring"><p>The max operations that operator supports in batch.</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.blocking" class="classattr">
+                            <div id="Capability.write_can_empty" class="classattr">
                                 <div class="attr variable">
-            <span class="name">blocking</span><span class="annotation">: bool</span>
+            <span class="name">write_can_empty</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.blocking"></a>
+    <a class="headerlink" href="#Capability.write_can_empty"></a>
     
-            <div class="docstring"><p>If operator supports blocking.</p>
+            <div class="docstring"><p>If operator supports write with empty content.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_can_multi" class="classattr">
+                            <div id="Capability.batch" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_can_multi</span><span class="annotation">: bool</span>
+            <span class="name">batch</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_can_multi"></a>
+    <a class="headerlink" href="#Capability.batch"></a>
     
-            <div class="docstring"><p>If operator supports write can be called in multi times.</p>
+            <div class="docstring"><p>If operator supports batch.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_if_match" class="classattr">
+                            <div id="Capability.read_with_if_none_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_if_match</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.read_with_if_match"></a>
+    <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
     
-            <div class="docstring"><p>If operator supports read with if match.</p>
+            <div class="docstring"><p>If operator supports read with if none match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_recursive" class="classattr">
+                            <div id="Capability.stat_with_if_none_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
+            <span class="name">stat_with_if_none_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_recursive"></a>
+    <a class="headerlink" href="#Capability.stat_with_if_none_match"></a>
     
-            <div class="docstring"><p>If backend supports list without delimiter.</p>
+            <div class="docstring"><p>If operator supports stat with if none match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign" class="classattr">
+                            <div id="Capability.read_with_override_cache_control" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign</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.presign"></a>
+    <a class="headerlink" href="#Capability.read_with_override_cache_control"></a>
     
-            <div class="docstring"><p>If operator supports presign.</p>
+            <div class="docstring"><p>if operator supports read with override cache control.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_stat" class="classattr">
+                            <div id="Capability.rename" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_stat</span><span class="annotation">: bool</span>
+            <span class="name">rename</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_stat"></a>
+    <a class="headerlink" href="#Capability.rename"></a>
     
-            <div class="docstring"><p>If operator supports presign stat.</p>
+            <div class="docstring"><p>If operator supports rename.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_content_disposition" class="classattr">
+                            <div id="Capability.list" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_content_disposition</span><span class="annotation">: bool</span>
+            <span class="name">list</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
+    <a class="headerlink" href="#Capability.list"></a>
     
-            <div class="docstring"><p>If operator supports write with content disposition.</p>
+            <div class="docstring"><p>If operator supports list.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_max_size" class="classattr">
+                            <div id="Capability.read_with_override_content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_max_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">read_with_override_content_type</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_max_size"></a>
+    <a class="headerlink" href="#Capability.read_with_override_content_type"></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 with override content type.</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.list" class="classattr">
+                            <div id="Capability.list_with_recursive" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list</span><span class="annotation">: bool</span>
+            <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list"></a>
+    <a class="headerlink" href="#Capability.list_with_recursive"></a>
     
-            <div class="docstring"><p>If operator supports list.</p>
+            <div class="docstring"><p>If backend supports list without delimiter.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_start_after" class="classattr">
+                            <div id="Capability.stat_with_if_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_start_after</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.list_with_start_after"></a>
+    <a class="headerlink" href="#Capability.stat_with_if_match"></a>
     
-            <div class="docstring"><p>If backend supports list with start after.</p>
+            <div class="docstring"><p>If operator supports stat with if match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_limit" class="classattr">
+                            <div id="Capability.create_dir" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_limit</span><span class="annotation">: bool</span>
+            <span class="name">create_dir</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_limit"></a>
+    <a class="headerlink" href="#Capability.create_dir"></a>
     
-            <div class="docstring"><p>If backend supports list with limit.</p>
+            <div class="docstring"><p>If operator supports create dir.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_content_type" class="classattr">
+                            <div id="Capability.write_with_content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_content_type</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.write_with_content_type"></a>
+    <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
     
-            <div class="docstring"><p>If operator supports write with content type.</p>
+            <div class="docstring"><p>If operator supports write with content disposition.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.delete" class="classattr">
+                            <div id="Capability.copy" class="classattr">
                                 <div class="attr variable">
-            <span class="name">delete</span><span class="annotation">: bool</span>
+            <span class="name">copy</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.delete"></a>
+    <a class="headerlink" href="#Capability.copy"></a>
     
-            <div class="docstring"><p>If operator supports delete.</p>
+            <div class="docstring"><p>If operator supports copy.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.batch" class="classattr">
+                            <div id="Capability.blocking" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch</span><span class="annotation">: bool</span>
+            <span class="name">blocking</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch"></a>
+    <a class="headerlink" href="#Capability.blocking"></a>
     
-            <div class="docstring"><p>If operator supports batch.</p>
+            <div class="docstring"><p>If operator supports blocking.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.batch_delete" class="classattr">
+                            <div id="Capability.presign_write" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch_delete</span><span class="annotation">: bool</span>
+            <span class="name">presign_write</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch_delete"></a>
+    <a class="headerlink" href="#Capability.presign_write"></a>
     
-            <div class="docstring"><p>If operator supports batch delete.</p>
+            <div class="docstring"><p>If operator supports presign write.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_if_none_match" class="classattr">
+                            <div id="Capability.write" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_if_none_match</span><span class="annotation">: bool</span>
+            <span class="name">write</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
+    <a class="headerlink" href="#Capability.write"></a>
     
-            <div class="docstring"><p>If operator supports read with if none match.</p>
+            <div class="docstring"><p>If operator supports write.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read" class="classattr">
+                            <div id="Capability.presign_stat" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read</span><span class="annotation">: bool</span>
+            <span class="name">presign_stat</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read"></a>
+    <a class="headerlink" href="#Capability.presign_stat"></a>
     
-            <div class="docstring"><p>If operator supports read.</p>
+            <div class="docstring"><p>If operator supports presign stat.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat" class="classattr">
+                            <div id="Capability.write_with_content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat</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.stat"></a>
+    <a class="headerlink" href="#Capability.write_with_content_type"></a>
     
-            <div class="docstring"><p>If operator supports stat.</p>
+            <div class="docstring"><p>If operator supports write with content type.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_override_content_type" class="classattr">
+                            <div id="Capability.read_with_override_content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_content_type</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.read_with_override_content_type"></a>
+    <a class="headerlink" href="#Capability.read_with_override_content_disposition"></a>
     
-            <div class="docstring"><p>if operator supports read with override content type.</p>
+            <div class="docstring"><p>if operator supports read with override content disposition.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write" class="classattr">
+                            <div id="Capability.write_with_cache_control" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write</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.write"></a>
+    <a class="headerlink" href="#Capability.write_with_cache_control"></a>
     
-            <div class="docstring"><p>If operator supports write.</p>
+            <div class="docstring"><p>If operator supports write with cache control.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_align_size" class="classattr">
+                            <div id="Capability.stat" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">stat</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_align_size"></a>
+    <a class="headerlink" href="#Capability.stat"></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 operator supports stat.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.create_dir" class="classattr">
+                            <div id="Capability.delete" class="classattr">
                                 <div class="attr variable">
-            <span class="name">create_dir</span><span class="annotation">: bool</span>
+            <span class="name">delete</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.create_dir"></a>
+    <a class="headerlink" href="#Capability.delete"></a>
     
-            <div class="docstring"><p>If operator supports create dir.</p>
+            <div class="docstring"><p>If operator supports delete.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_override_content_disposition" class="classattr">
+                            <div id="Capability.read_with_if_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_content_disposition</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_with_override_content_disposition"></a>
+    <a class="headerlink" href="#Capability.read_with_if_match"></a>
     
-            <div class="docstring"><p>if operator supports read with override content disposition.</p>
+            <div class="docstring"><p>If operator supports read with if match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_cache_control" class="classattr">
+                            <div id="Capability.write_can_append" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_cache_control</span><span class="annotation">: bool</span>
+            <span class="name">write_can_append</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_cache_control"></a>
+    <a class="headerlink" href="#Capability.write_can_append"></a>
     
-            <div class="docstring"><p>If operator supports write with cache control.</p>
+            <div class="docstring"><p>If operator supports write by append.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.copy" class="classattr">
+                            <div id="Capability.list_with_limit" class="classattr">
                                 <div class="attr variable">
-            <span class="name">copy</span><span class="annotation">: bool</span>
+            <span class="name">list_with_limit</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.copy"></a>
+    <a class="headerlink" href="#Capability.list_with_limit"></a>
     
-            <div class="docstring"><p>If operator supports copy.</p>
+            <div class="docstring"><p>If backend supports list with limit.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_can_append" class="classattr">
+                            <div id="Capability.list_with_start_after" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_can_append</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.write_can_append"></a>
+    <a class="headerlink" href="#Capability.list_with_start_after"></a>
     
-            <div class="docstring"><p>If operator supports write by append.</p>
+            <div class="docstring"><p>If backend supports list with start after.</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>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index 73bd51152b..eaeb70f5e3 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 03784c5357..38c987fba6 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -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/opendal/all.html b/docs/rust/opendal/all.html
index 23837c95af..56bb09ecc1 100644
--- a/docs/rust/opendal/all.html
+++ b/docs/rust/opendal/all.html
@@ -1,2 +1,2 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
-    <main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../opendal/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="se [...]
\ No newline at end of file
+    <main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../opendal/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="se [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/buf/pooled_buf/struct.PooledBuf.html b/docs/rust/opendal/raw/oio/buf/pooled_buf/struct.PooledBuf.html
new file mode 100644
index 0000000000..fa26e5a178
--- /dev/null
+++ b/docs/rust/opendal/raw/oio/buf/pooled_buf/struct.PooledBuf.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../../../opendal/raw/oio/struct.PooledBuf.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../../../opendal/raw/oio/struct.PooledBuf.html">../../../../../opendal/raw/oio/struct.PooledBuf.html</a>...</p>
+    <script>location.replace("../../../../../opendal/raw/oio/struct.PooledBuf.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/index.html b/docs/rust/opendal/raw/oio/index.html
index ec9a938c1f..96108f057d 100644
--- a/docs/rust/opendal/raw/oio/index.html
+++ b/docs/rust/opendal/raw/oio/index.html
@@ -8,7 +8,7 @@ our <code>output</code> traits.</p>
 uploads.</div></li><li><div class="item-name"><a class="struct" href="struct.Entry.html" title="struct opendal::raw::oio::Entry">Entry</a></div><div class="desc docblock-short">Entry is returned by <code>Page</code> or <code>BlockingPage</code> during list operations.</div></li><li><div class="item-name"><a class="struct" href="struct.ExactBufWriter.html" title="struct opendal::raw::oio::ExactBufWriter">ExactBufWriter</a></div><div class="desc docblock-short">ExactBufWriter is used to im [...]
 underlying storage when the buffered size is exactly the same as the buffer size.</div></li><li><div class="item-name"><a class="struct" href="struct.FlatLister.html" title="struct opendal::raw::oio::FlatLister">FlatLister</a></div><div class="desc docblock-short">FlatLister will walk dir in bottom up way:</div></li><li><div class="item-name"><a class="struct" href="struct.FlexBuf.html" title="struct opendal::raw::oio::FlexBuf">FlexBuf</a></div><div class="desc docblock-short">FlexBuf is [...]
 not needed entries.</div></li><li><div class="item-name"><a class="struct" href="struct.MultipartPart.html" title="struct opendal::raw::oio::MultipartPart">MultipartPart</a></div><div class="desc docblock-short">The result of <a href="trait.MultipartWrite.html#tymethod.write_part" title="method opendal::raw::oio::MultipartWrite::write_part"><code>MultipartWrite::write_part</code></a>.</div></li><li><div class="item-name"><a class="struct" href="struct.MultipartWriter.html" title="struct  [...]
-uploads.</div></li><li><div class="item-name"><a class="struct" href="struct.OneShotWriter.html" title="struct opendal::raw::oio::OneShotWriter">OneShotWriter</a></div><div class="desc docblock-short">OneShotWrite is used to implement [<code>Write</code>] based on one shot.</div></li><li><div class="item-name"><a class="struct" href="struct.PageContext.html" title="struct opendal::raw::oio::PageContext">PageContext</a></div><div class="desc docblock-short">PageContext is the context pass [...]
+uploads.</div></li><li><div class="item-name"><a class="struct" href="struct.OneShotWriter.html" title="struct opendal::raw::oio::OneShotWriter">OneShotWriter</a></div><div class="desc docblock-short">OneShotWrite is used to implement [<code>Write</code>] based on one shot.</div></li><li><div class="item-name"><a class="struct" href="struct.PageContext.html" title="struct opendal::raw::oio::PageContext">PageContext</a></div><div class="desc docblock-short">PageContext is the context pass [...]
 object. By implementing AppendWrite, services don’t need to
 care about the details of buffering and uploading parts.</div></li><li><div class="item-name"><a class="trait" href="trait.BlockWrite.html" title="trait opendal::raw::oio::BlockWrite">BlockWrite</a></div><div class="desc docblock-short">BlockWrite is used to implement [<code>Write</code>] based on block
 uploads. By implementing BlockWrite, services don’t need to
diff --git a/docs/rust/opendal/raw/oio/sidebar-items.js b/docs/rust/opendal/raw/oio/sidebar-items.js
index 1fa302dcc4..3a22c64205 100644
--- a/docs/rust/opendal/raw/oio/sidebar-items.js
+++ b/docs/rust/opendal/raw/oio/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["ListOperation","ReadOperation","WriteOperation"],"struct":["AppendWriter","BlockWriter","Entry","ExactBufWriter","FlatLister","FlexBuf","HierarchyLister","MultipartPart","MultipartWriter","OneShotWriter","PageContext","PageLister","PrefixLister","QueueBuf","RangeWriter"],"trait":["AppendWrite","BlockWrite","BlockingList","BlockingRead","BlockingWrite","List","MultipartWrite","OneShotWrite","PageList","RangeWrite","Read","ReadDyn","Write"],"type":["Blockin [...]
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["ListOperation","ReadOperation","WriteOperation"],"struct":["AppendWriter","BlockWriter","Entry","ExactBufWriter","FlatLister","FlexBuf","HierarchyLister","MultipartPart","MultipartWriter","OneShotWriter","PageContext","PageLister","PooledBuf","PrefixLister","QueueBuf","RangeWriter"],"trait":["AppendWrite","BlockWrite","BlockingList","BlockingRead","BlockingWrite","List","MultipartWrite","OneShotWrite","PageList","RangeWrite","Read","ReadDyn","Write"],"typ [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/struct.PooledBuf.html b/docs/rust/opendal/raw/oio/struct.PooledBuf.html
new file mode 100644
index 0000000000..b2cd5e5b52
--- /dev/null
+++ b/docs/rust/opendal/raw/oio/struct.PooledBuf.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="PooledBuf is a buffer pool that designed for reusing already allocated bufs."><title>PooledBuf in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" a [...]
+    <main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../opendal/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../help.html" title="help">?</a></div [...]
+<p>It works as best-effort that tries to reuse the buffer if possible. It
+won’t block the thread if the pool is locked, just returning a new buffer
+or dropping existing buffer.</p>
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-PooledBuf" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/pooled_buf.rs.html#34-85">source</a><a href="#impl-PooledBuf" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.PooledBuf.html" title="s [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_initial_capacity" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/pooled_buf.rs.html#47-50">source</a><h4 class="code-header">pub fn <a href="#method.with_initial_capacity" class="fn">with_initial_capacity</a>(self, initial_capacity: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary>< [...]
+<p>The default value is 0.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.get" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/pooled_buf.rs.html#55-68">source</a><h4 class="code-header">pub fn <a href="#method.get" class="fn">get</a>(&amp;self) -&gt; BytesMut</h4></section></summary><div class="docblock"><p>Get a [<code>BytesMut</code>] from the pool.</p>
+<p>It’s guaranteed that the buffer is empty.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.put" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/pooled_buf.rs.html#71-84">source</a><h4 class="code-header">pub fn <a href="#method.put" class="fn">put</a>(&amp;self, buf: BytesMut)</h4></section></summary><div class="docblock"><p>Put a [<code>BytesMut</code>] back to the pool.</p>
+</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-PooledBuf" class="impl"><a href="#impl-RefUnwindSafe-for-PooledBuf" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="t [...]
+    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:/ [...]
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into <code>T</code> using <code>Into&lt;T&gt;</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CoproductSubsetter%3CCNil,+HNil%3E-for-Choices" class="impl"><a href="#impl-CoproductSubse [...]
+    self
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;CNil, &lt;Choices as CoproductSubsetter&lt;CNil, HNil&gt;&gt;::Remainder&gt;</h4></section></summary><div class='docblock'>Extract a subset of the possible types in a coproduct (or get the remaining possibilities) <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FmtForward-for-T" [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Binary.html" title="trait core::fmt::Binary">Binary</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Binary</code> implementation when <code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_display" class="method trait-impl"><a href="#method.fmt_display" class="anchor">§</a><h4 class="code-hea [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Display</code> implementation when
+<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_lower_exp" class="method trait-impl"><a href="#method.fmt_lower_exp" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_lower_exp</a>(self) -&gt; FmtLowerExp&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.LowerExp.html" title="trait core::fmt::LowerExp">LowerExp</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>LowerExp</code> implementation when
+<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_lower_hex" class="method trait-impl"><a href="#method.fmt_lower_hex" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_lower_hex</a>(self) -&gt; FmtLowerHex&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html" title="trait core::fmt::LowerHex">LowerHex</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>LowerHex</code> implementation when
+<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_octal" class="method trait-impl"><a href="#method.fmt_octal" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_octal</a>(self) -&gt; FmtOctal&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Octal.html" title="trait core::fmt::Octal">Octal</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Octal</code> implementation when <code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_pointer" class="method trait-impl"><a href="#method.fmt_pointer" class="anchor">§</a><h4 class="code-header" [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Pointer.html" title="trait core::fmt::Pointer">Pointer</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Pointer</code> implementation when
+<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_upper_exp" class="method trait-impl"><a href="#method.fmt_upper_exp" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_upper_exp</a>(self) -&gt; FmtUpperExp&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.UpperExp.html" title="trait core::fmt::UpperExp">UpperExp</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>UpperExp</code> implementation when
+<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_upper_hex" class="method trait-impl"><a href="#method.fmt_upper_hex" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_upper_hex</a>(self) -&gt; FmtUpperHex&lt;Self&gt;<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html" title="trait core::fmt::UpperHex">UpperHex</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>UpperHex</code> implementation when
+<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_list" class="method trait-impl"><a href="#method.fmt_list" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_list</a>(self) -&gt; FmtList&lt;Self&gt;<div class="where">where
+    <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a Self</a>: for&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,</div></h4></section></summary><div class='docblock'>Formats each item in a sequence. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summar [...]
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FutureExt-for-T" class="impl"><a href="#impl-FutureExt-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; FutureExt for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_context" class="method trait-impl"><a href="#method.with_context" class="anchor">§</a><h4 class="code-header">fn <a class="fn">w [...]
+wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_context" class="method trait-impl"><a href="#method.with_current_context" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_context</a>(self) -&gt; WithContext&lt;Self&gt;</h4></section></summary><div class='docblock'>Attaches the current <a href="crate::Context"><code>Context</code></a> to this type, returning a <code>WithContext</code>
+wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-T" class="impl"><a href="#impl-Instrument-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Instrument for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl"><a href="#method.instrument" class="anchor">§</a><h4 class="code-he [...]
+<code>Instrumented</code> wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl"><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a class="fn">in_current_span</a>(self) -&gt; Instrumented&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the <a href="super::Span::current()">current</a> <a href="crate::Span"><code>Span</co [...]
+<code>Instrumented</code> wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#747-749">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trai [...]
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#756">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoRequest%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://docs.rs/tonic/0.10.2/src/tonic/request.rs.html#383">source</a><a href="#impl-IntoRequest%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/tonic/0.10.2/tonic/request/trait.IntoRequest.html" title="trait tonic::request::IntoRequest">IntoRequest</a>&lt [...]
+    U: LiftFrom&lt;T, I&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.lift_into" class="method trait-impl"><a href="#method.lift_into" class="anchor">§</a><h4 class="code-header">fn <a class="fn">lift_into</a>(self) -&gt; U</h4></section></summary><div class='docblock'>Performs the indexed conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Pi [...]
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.pipe" class="method trait-impl"><a href="#method.pipe" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe</a>&lt;R&gt;(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/ [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Pipes by value. This is generally the method you want to use. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_ref" class="method trait-impl"><a href="#method.pipe_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_ref [...]
+    R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code> and passes that borrow into the pipe function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_ref_mut" class="method trait-impl"><a href="#method.pipe_ref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_ref_mut</a>&lt;'a, R&gt;(&amp;'a mut self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core [...]
+    R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code> and passes that borrow into the pipe function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_borrow" class="method trait-impl"><a href="#method.pipe_borrow" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_borrow</a>&lt;'a, B, R&gt;(&amp;'a self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/ [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;B&gt;,
+    B: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code>, then passes <code>self.borrow()</code> into the pipe function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_borrow_mut" class="method trait-impl"><a href="#method.pipe_borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_borrow_mut</a>&lt;'a, B, R&gt;(
+    &amp;'a mut self,
+    func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a mut B</a>) -&gt; R
+) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;B&gt;,
+    B: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code>, then passes <code>self.borrow_mut()</code> into the pipe
+function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_as_ref" class="method trait-impl"><a href="#method.pipe_as_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_as_ref</a>&lt;'a, U, R&gt;(&amp;'a self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust- [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;U&gt;,
+    U: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code>, then passes <code>self.as_ref()</code> into the pipe function.</div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_as_mut" class="method trait-impl"><a href="#method.pipe_as_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_as_mut</a>&lt;'a, U, R&gt;(&amp;'a mut self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;U&gt;,
+    U: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code>, then passes <code>self.as_mut()</code> into the pipe
+function.</div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_deref" class="method trait-impl"><a href="#method.pipe_deref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_deref</a>&lt;'a, T, R&gt;(&amp;'a self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = T&gt;,
+    T: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code>, then passes <code>self.deref()</code> into the pipe function.</div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_deref_mut" class="method trait-impl"><a href="#method.pipe_deref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_deref_mut</a>&lt;'a, T, R&gt;(
+    &amp;'a mut self,
+    func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a mut T</a>) -&gt; R
+) -&gt; R<div class="where">where
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a>&lt;Target = T&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
+    T: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
+    R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code>, then passes <code>self.deref_mut()</code> into the pipe
+function.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Pointable-for-T" class="impl"><a href="#impl-Pointable-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Pointable for T</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl"><a href="#associatedconstant.ALIGN" class="anchor">§</a><h4 class="code-header">c [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;B&gt;,
+    B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Immutable access to the <code>Borrow&lt;B&gt;</code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow_mut" class="method trait-impl"><a href="#method.tap_borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a class= [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;B&gt;,
+    B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mutable access to the <code>BorrowMut&lt;B&gt;</code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref" class="method trait-impl"><a href="#method.tap_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_ref< [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;R&gt;,
+    R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Immutable access to the <code>AsRef&lt;R&gt;</code> view of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref_mut" class="method trait-impl"><a href="#method.tap_ref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="f [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;R&gt;,
+    R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mutable access to the <code>AsMut&lt;R&gt;</code> view of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref" class="method trait-impl"><a href="#method.tap_deref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = T&gt;,
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Immutable access to the <code>Deref::Target</code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref_mut" class="method trait-impl"><a href="#method.tap_deref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn" [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a>&lt;Target = T&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mutable access to the <code>Deref::Target</code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_dbg" class="method trait-impl"><a href="#method.tap_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_dbg</a>(s [...]
+builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow_dbg" class="method trait-impl"><a href="#method.tap_borrow_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_borrow_dbg</a>&lt;B&gt;(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/prim [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;B&gt;,
+    B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_borrow()</code> only in debug builds, and is erased in release
+builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow_mut_dbg" class="method trait-impl"><a href="#method.tap_borrow_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_borrow_mut_dbg</a>&lt;B&gt;(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nigh [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;B&gt;,
+    B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_borrow_mut()</code> only in debug builds, and is erased in release
+builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref_dbg" class="method trait-impl"><a href="#method.tap_ref_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_ref_dbg</a>&lt;R&gt;(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.ref [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;R&gt;,
+    R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_ref()</code> only in debug builds, and is erased in release
+builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref_mut_dbg" class="method trait-impl"><a href="#method.tap_ref_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_ref_mut_dbg</a>&lt;R&gt;(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/p [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;R&gt;,
+    R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_ref_mut()</code> only in debug builds, and is erased in release
+builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref_dbg" class="method trait-impl"><a href="#method.tap_deref_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_deref_dbg</a>&lt;T&gt;(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primiti [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = T&gt;,
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_deref()</code> only in debug builds, and is erased in release
+builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref_mut_dbg" class="method trait-impl"><a href="#method.tap_deref_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_deref_mut_dbg</a>&lt;T&gt;(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a>&lt;Target = T&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
+    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_deref_mut()</code> only in debug builds, and is erased in release
+builds.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryConv-for-T" class="impl"><a href="#impl-TryConv-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; TryConv for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.try_conv" class="method trait-impl"><a href="#method.try_conv" class="anchor">§</a><h4 class="code-header">fn <a class="fn">try_conv [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;T&gt;,</div></h4></section></summary><div class='docblock'>Attempts to convert <code>self</code> into <code>T</code> using <code>TryInto&lt;T&gt;</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="h [...]
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" cl [...]
+    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Erro [...]
+    V: MultiLane&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -&gt; V</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-WithSubscriber-for-T" class="impl"><a href="#impl-WithSubscriber-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; WithSubscriber for T< [...]
+    S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Dispatch&gt;,</div></h4></section></summary><div class='docblock'>Attaches the provided <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
+[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_subscriber" class="method trait-impl"><a href="#method.with_current_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_subscriber</a>(self) -&gt; WithDispatch&lt;Self&gt;</h4></section></summary><div class='docblock'>Attaches the current <a href="crate::dispatcher#setting-the-default-subscriber">defaul [...]
+[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Within%3CG2%3E-for-G1" class="impl"><a href="#impl-Within%3CG2%3E-for-G1" class="anchor">§</a><h3 class="code-header">impl&lt;G1, G2&gt; Within&lt;G2&gt; for G1<div class="where">where
+    G2: Contains&lt;G1&gt;,</div></h3></section></summary><div class="impl-items"><section id="method.is_within" class="method trait-impl"><a href="#method.is_within" class="anchor">§</a><h4 class="code-header">fn <a class="fn">is_within</a>(&amp;self, b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;G2</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></div></details>< [...]
+    G2: Contains&lt;G1&gt;,</div></h3></section></summary><div class="impl-items"><section id="method.is_within-1" class="method trait-impl"><a href="#method.is_within-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">is_within</a>(&amp;self, b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;G2</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></div></detai [...]
+    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index f0a261c20f..0a1b5a4db2 100644
--- a/docs/rust/search-index.js
+++ b/docs/rust/search-index.js
@@ -1,5 +1,5 @@
 var searchIndex = new Map(JSON.parse('[\
-["opendal",{"doc":"Apache OpenDAL™ is a data access layer that allows users …","t":"RPPPPPPPFFFFFKPPFPPPPPPPPPPPPPPPPPPPFGPFGPPPPPPFFFPPPPPPPPPPPPPPPPPPFPPFGPPPPPPPPPPFFFPPPPPPFPPIPPTGPPPPFFPPPPPPPPPPPPPFPNNNOOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNONNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNN [...]
+["opendal",{"doc":"Apache OpenDAL™ is a data access layer that allows users …","t":"RPPPPPPPFFFFFKPPFPPPPPPPPPPPPPPPPPPPFGPFGPPPPPPFFFPPPPPPPPPPPPPPPPPPFPPFGPPPPPPPPPPFFFPPPPPPFPPIPPTGPPPPFFPPPPPPPPPPPPPFPNNNOOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNONNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNN [...]
 ]'));
 if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
 else if (window.initSearch) window.initSearch(searchIndex);
diff --git a/docs/rust/src-files.js b/docs/rust/src-files.js
index 027fde800d..88a2387498 100644
--- a/docs/rust/src-files.js
+++ b/docs/rust/src-files.js
@@ -1,4 +1,4 @@
 var srcIndex = new Map(JSON.parse('[\
-["opendal",["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["async_backtrace.rs","await_tree.rs","blocking.rs","chaos.rs","complete.rs","concurrent_limit.rs","dtrace.rs","error_context.rs","immutable_index.rs","logging.rs","madsim.rs","metrics.rs","minitrace.rs","mod.rs","oteltrace.rs","prometheus.rs","prometheus_client.rs","retry.rs","throttle.rs","timeout.rs","tracing.rs","ty [...]
+["opendal",["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["async_backtrace.rs","await_tree.rs","blocking.rs","chaos.rs","complete.rs","concurrent_limit.rs","dtrace.rs","error_context.rs","immutable_index.rs","logging.rs","madsim.rs","metrics.rs","minitrace.rs","mod.rs","oteltrace.rs","prometheus.rs","prometheus_client.rs","retry.rs","throttle.rs","timeout.rs","tracing.rs","ty [...]
 ]'));
 createSrcSidebar();
diff --git a/docs/rust/src/opendal/raw/oio/buf/mod.rs.html b/docs/rust/src/opendal/raw/oio/buf/mod.rs.html
index f3a65161e4..61060b7b21 100644
--- a/docs/rust/src/opendal/raw/oio/buf/mod.rs.html
+++ b/docs/rust/src/opendal/raw/oio/buf/mod.rs.html
@@ -22,6 +22,9 @@
 <a href="#20" id="20">20</a>
 <a href="#21" id="21">21</a>
 <a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -44,4 +47,7 @@
 
 <span class="kw">mod </span>queue_buf;
 <span class="kw">pub use </span>queue_buf::QueueBuf;
+
+<span class="kw">mod </span>pooled_buf;
+<span class="kw">pub use </span>pooled_buf::PooledBuf;
 </code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/raw/oio/buf/pooled_buf.rs.html b/docs/rust/src/opendal/raw/oio/buf/pooled_buf.rs.html
new file mode 100644
index 0000000000..d0256e4513
--- /dev/null
+++ b/docs/rust/src/opendal/raw/oio/buf/pooled_buf.rs.html
@@ -0,0 +1,231 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/raw/oio/buf/pooled_buf.rs`."><title>pooled_buf.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cr [...]
+            <h2>Files</h2></div></nav><div class="sidebar-resizer"></div>
+    <main><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../../../../opendal/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../../../../help.html" title="help">?</a></div><div id="setti [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::collections::VecDeque;
+<span class="kw">use </span>std::sync::Mutex;
+
+<span class="kw">use </span>bytes::BytesMut;
+
+<span class="doccomment">/// PooledBuf is a buffer pool that designed for reusing already allocated bufs.
+///
+/// It works as best-effort that tries to reuse the buffer if possible. It
+/// won't block the thread if the pool is locked, just returning a new buffer
+/// or dropping existing buffer.
+</span><span class="kw">pub struct </span>PooledBuf {
+    pool: Mutex&lt;VecDeque&lt;BytesMut&gt;&gt;,
+    size: usize,
+    initial_capacity: usize,
+}
+
+<span class="kw">impl </span>PooledBuf {
+    <span class="doccomment">/// Create a new buffer pool with a given size.
+    </span><span class="kw">pub fn </span>new(size: usize) -&gt; <span class="self">Self </span>{
+        <span class="self">Self </span>{
+            pool: Mutex::new(VecDeque::with_capacity(size)),
+            size,
+            initial_capacity: <span class="number">0</span>,
+        }
+    }
+
+    <span class="doccomment">/// Set the initial capacity of the buffer.
+    ///
+    /// The default value is 0.
+    </span><span class="kw">pub fn </span>with_initial_capacity(<span class="kw-2">mut </span><span class="self">self</span>, initial_capacity: usize) -&gt; <span class="self">Self </span>{
+        <span class="self">self</span>.initial_capacity = initial_capacity;
+        <span class="self">self
+    </span>}
+
+    <span class="doccomment">/// Get a [`BytesMut`] from the pool.
+    ///
+    /// It's guaranteed that the buffer is empty.
+    </span><span class="kw">pub fn </span>get(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; BytesMut {
+        <span class="comment">// We don't want to block the thread if the pool is locked.
+        //
+        // Just returning a new buffer in this case.
+        </span><span class="kw">let </span><span class="prelude-val">Ok</span>(<span class="kw-2">mut </span>pool) = <span class="self">self</span>.pool.try_lock() <span class="kw">else </span>{
+            <span class="kw">return </span>BytesMut::with_capacity(<span class="self">self</span>.initial_capacity);
+        };
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(buf) = pool.pop_front() {
+            buf
+        } <span class="kw">else </span>{
+            BytesMut::with_capacity(<span class="self">self</span>.initial_capacity)
+        }
+    }
+
+    <span class="doccomment">/// Put a [`BytesMut`] back to the pool.
+    </span><span class="kw">pub fn </span>put(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="kw-2">mut </span>buf: BytesMut) {
+        <span class="comment">// We don't want to block the thread if the pool is locked.
+        //
+        // Just dropping the buffer in this case.
+        </span><span class="kw">let </span><span class="prelude-val">Ok</span>(<span class="kw-2">mut </span>pool) = <span class="self">self</span>.pool.try_lock() <span class="kw">else </span>{
+            <span class="kw">return</span>;
+        };
+
+        <span class="kw">if </span>pool.len() &lt; <span class="self">self</span>.size {
+            <span class="comment">// Clean the buffer before putting it back to the pool.
+            </span>buf.clear();
+            pool.push_back(buf);
+        }
+    }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+    <span class="kw">use </span>bytes::BufMut;
+
+    <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_pooled_buf() {
+        <span class="kw">let </span>pool = PooledBuf::new(<span class="number">2</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf1 = pool.get();
+        buf1.put_slice(<span class="string">b"hello, world!"</span>);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>buf2 = pool.get();
+        buf2.reserve(<span class="number">1024</span>);
+
+        pool.put(buf1);
+        pool.put(buf2);
+
+        <span class="kw">let </span>buf3 = pool.get();
+        <span class="macro">assert_eq!</span>(buf3.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(buf3.capacity(), <span class="number">13</span>);
+
+        <span class="kw">let </span>buf4 = pool.get();
+        <span class="macro">assert_eq!</span>(buf4.len(), <span class="number">0</span>);
+        <span class="macro">assert_eq!</span>(buf4.capacity(), <span class="number">1024</span>);
+    }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/trait.impl/core/marker/trait.Freeze.js b/docs/rust/trait.impl/core/marker/trait.Freeze.js
index 474fbcc01d..948b3d1971 100644
--- a/docs/rust/trait.impl/core/marker/trait.Freeze.js
+++ b/docs/rust/trait.impl/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl Freeze for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl !Freeze for <a class=\"struct\" href=\"opendal/struct.Buffer.html\" title=\"struct opendal::Buffer\">Buffer</a>",1,["opendal::types::buffer::Buffer"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" title=\"struct opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Fre [...]
+"opendal":[["impl Freeze for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl !Freeze for <a class=\"struct\" href=\"opendal/struct.Buffer.html\" title=\"struct opendal::Buffer\">Buffer</a>",1,["opendal::types::buffer::Buffer"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" title=\"struct opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Fre [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/trait.impl/core/marker/trait.Send.js b/docs/rust/trait.impl/core/marker/trait.Send.js
index 7e6082ca81..34b6f84604 100644
--- a/docs/rust/trait.impl/core/marker/trait.Send.js
+++ b/docs/rust/trait.impl/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"opendal/struct.Buffer [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"opendal/struct.Buffer [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/trait.impl/core/marker/trait.Sync.js b/docs/rust/trait.impl/core/marker/trait.Sync.js
index 81c14e6f86..197ea2140a 100644
--- a/docs/rust/trait.impl/core/marker/trait.Sync.js
+++ b/docs/rust/trait.impl/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Buffer [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Buffer [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/trait.impl/core/marker/trait.Unpin.js b/docs/rust/trait.impl/core/marker/trait.Unpin.js
index 9572a111e0..420f4a9ad9 100644
--- a/docs/rust/trait.impl/core/marker/trait.Unpin.js
+++ b/docs/rust/trait.impl/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"opendal/struct. [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"opendal/struct. [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/rust/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 475cb9e45c..713dc196d6 100644
--- a/docs/rust/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/docs/rust/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic: [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic: [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/rust/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
index 52d3cd873b..915a2a5ed2 100644
--- a/docs/rust/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/docs/rust/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/services/atomicserver/index.html b/docs/services/atomicserver/index.html
index 776dd6fcb8..4027c252fb 100644
--- a/docs/services/atomicserver/index.html
+++ b/docs/services/atomicserver/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index e77a0a340f..7d2da9e793 100644
--- a/docs/services/azblob/index.html
+++ b/docs/services/azblob/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -46,6 +46,6 @@
 <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 [...]
+<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
index 483954ad0c..2bdd35fe04 100644
--- a/docs/services/azdls/index.html
+++ b/docs/services/azdls/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -45,6 +45,6 @@
 <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 [...]
+<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
index 5470eb551f..9d3a622ca5 100644
--- a/docs/services/cacache/index.html
+++ b/docs/services/cacache/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -37,6 +37,6 @@
 <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 [...]
+<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
index c4a112bba3..b2356006ef 100644
--- a/docs/services/cos/index.html
+++ b/docs/services/cos/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index 1d4e71f797..d7914e1062 100644
--- a/docs/services/d1/index.html
+++ b/docs/services/d1/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -42,6 +42,6 @@
 <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 [...]
+<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
index 580a016b30..e4f7dd2549 100644
--- a/docs/services/dashmap/index.html
+++ b/docs/services/dashmap/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -26,6 +26,6 @@
 <li class="task-list-item"><input type="checkbox" disabled="" checked=""> scan</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 [...]
+</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
index e510e52fd1..9a43629340 100644
--- a/docs/services/dropbox/index.html
+++ b/docs/services/dropbox/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -55,6 +55,6 @@ for more information.</p>
 <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 [...]
+<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
index 749810e012..e255e93f35 100644
--- a/docs/services/etcd/index.html
+++ b/docs/services/etcd/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -43,6 +43,6 @@
 <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 [...]
+<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
index 3c84081918..9c13a3a05a 100644
--- a/docs/services/foundationdb/index.html
+++ b/docs/services/foundationdb/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -39,6 +39,6 @@
 <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 [...]
+<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
index e7b6f46c1a..0a4cdc40c5 100644
--- a/docs/services/fs/index.html
+++ b/docs/services/fs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -39,6 +39,6 @@
 <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 [...]
+<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
index 05b4c5e260..44ee41dd27 100644
--- a/docs/services/ftp/index.html
+++ b/docs/services/ftp/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -40,6 +40,6 @@
 <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 [...]
+<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
index 2718ec712c..35cfd02e85 100644
--- a/docs/services/gcs/index.html
+++ b/docs/services/gcs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -43,6 +43,6 @@
 <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 [...]
+<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
index e46c59c14e..11ac1ba365 100644
--- a/docs/services/gdrive/index.html
+++ b/docs/services/gdrive/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -56,6 +56,6 @@ for more information.</p>
 <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 [...]
+<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
index e93e9079ed..5f4096926b 100644
--- a/docs/services/ghac/index.html
+++ b/docs/services/ghac/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -55,6 +55,6 @@ be automatically evicted at any time.</p>
 <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 [...]
+<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
index 84fb5808fb..9b5d1432ff 100644
--- a/docs/services/gridfs/index.html
+++ b/docs/services/gridfs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -40,6 +40,6 @@
 <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 [...]
+<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
index 687ca0c8ab..eed83408da 100644
--- a/docs/services/hdfs/index.html
+++ b/docs/services/hdfs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -91,6 +91,6 @@
 <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 [...]
+<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
index 2dac2dafe1..0e7adf554b 100644
--- a/docs/services/http/index.html
+++ b/docs/services/http/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@ HTTP Server like nginx, caddy.</p>
 <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 [...]
+<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
index 252d859ed1..4fc531a733 100644
--- a/docs/services/huggingface/index.html
+++ b/docs/services/huggingface/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -44,6 +44,6 @@ Currently, we only support the <code>model</code> and <code>dataset</code> types
 <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 [...]
+<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
index 4e269f0c9b..7b754d3898 100644
--- a/docs/services/ipfs/index.html
+++ b/docs/services/ipfs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -38,6 +38,6 @@
 <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 [...]
+<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
index 7ae817a59b..8c7d2e5f38 100644
--- a/docs/services/ipmfs/index.html
+++ b/docs/services/ipmfs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -26,6 +26,6 @@
 <li class="task-list-item"><input type="checkbox" disabled=""> scan</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 [...]
+</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
index 8907ff9851..fb1611e1f9 100644
--- a/docs/services/libsql/index.html
+++ b/docs/services/libsql/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index 846513cb19..6f66e93b43 100644
--- a/docs/services/memcached/index.html
+++ b/docs/services/memcached/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index bc2b6bf917..784c16953b 100644
--- a/docs/services/memory/index.html
+++ b/docs/services/memory/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -32,6 +32,6 @@
 <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 [...]
+<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
index cbcaed073d..0b0af209d9 100644
--- a/docs/services/moka/index.html
+++ b/docs/services/moka/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index 2f21f8377f..77374a3cc3 100644
--- a/docs/services/mongodb/index.html
+++ b/docs/services/mongodb/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index d3ba6cc7bd..7e0958900a 100644
--- a/docs/services/mysql/index.html
+++ b/docs/services/mysql/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -40,6 +40,6 @@
 <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 [...]
+<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
index c33e3a3325..e4797b3a04 100644
--- a/docs/services/obs/index.html
+++ b/docs/services/obs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index d6182c8fbd..db22c69059 100644
--- a/docs/services/onedrive/index.html
+++ b/docs/services/onedrive/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -37,6 +37,6 @@
 <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 [...]
+<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
index b6a713ddfe..09497a1e7b 100644
--- a/docs/services/oss/index.html
+++ b/docs/services/oss/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -46,6 +46,6 @@
 <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 [...]
+<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
index 54c10a9203..c5b0624da5 100644
--- a/docs/services/persy/index.html
+++ b/docs/services/persy/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -39,6 +39,6 @@
 <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 [...]
+<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
index 4b99e5fd53..8cf0b61f93 100644
--- a/docs/services/postgresql/index.html
+++ b/docs/services/postgresql/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -40,6 +40,6 @@
 <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 [...]
+<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
index b81d3bd9bd..40e0e5b247 100644
--- a/docs/services/redb/index.html
+++ b/docs/services/redb/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -37,6 +37,6 @@
 <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 [...]
+<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
index e1c2bccfb5..4c1d7b0ae2 100644
--- a/docs/services/redis/index.html
+++ b/docs/services/redis/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -42,6 +42,6 @@
 <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 [...]
+<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
index 7a9b75a6d1..ef977e970d 100644
--- a/docs/services/rocksdb/index.html
+++ b/docs/services/rocksdb/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -49,6 +49,6 @@ may be outdated and incompatible.</p>
 <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 [...]
+<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
index 1c223ff8be..c4aaf3a675 100644
--- a/docs/services/s3/index.html
+++ b/docs/services/s3/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -190,6 +190,6 @@
 </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 [...]
+<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
index ac83170460..4e8f40c505 100644
--- a/docs/services/sftp/index.html
+++ b/docs/services/sftp/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -46,6 +46,6 @@ lots of files, you should pay attention to close the file after using it.</p></d
 <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 [...]
+<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
index e85873ef33..aa6a6a424e 100644
--- a/docs/services/sled/index.html
+++ b/docs/services/sled/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -37,6 +37,6 @@
 <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 [...]
+<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
index f7c36426fa..df8bed058b 100644
--- a/docs/services/sqlite/index.html
+++ b/docs/services/sqlite/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -38,6 +38,6 @@
 <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 [...]
+<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
index 116fdeb0c7..04a3eb042b 100644
--- a/docs/services/supabase/index.html
+++ b/docs/services/supabase/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -42,6 +42,6 @@ can access all resources. Note that if you want to read public resources, do not
 <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 [...]
+<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
index fee454920a..26422826ef 100644
--- a/docs/services/swift/index.html
+++ b/docs/services/swift/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -78,6 +78,6 @@
 <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 [...]
+</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
index 66d953f573..5a61fc59ac 100644
--- a/docs/services/tikv/index.html
+++ b/docs/services/tikv/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@
 <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 [...]
+<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
index d168d03719..6954dce122 100644
--- a/docs/services/vercel_artifacts/index.html
+++ b/docs/services/vercel_artifacts/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -37,6 +37,6 @@
 <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 [...]
+<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
index f80285461e..ca2a1059b4 100644
--- a/docs/services/webdav/index.html
+++ b/docs/services/webdav/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -41,6 +41,6 @@ Users can use <code>webdav</code> to connect those services.</p>
 <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 [...]
+<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
index 94af877529..24d792744e 100644
--- a/docs/services/webhdfs/index.html
+++ b/docs/services/webhdfs/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
@@ -61,6 +61,6 @@ This issue, identified as <a href="https://issues.apache.org/jira/browse/HDFS-66
 <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 [...]
+<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 c735e32d01..b68cc342bd 100644
--- a/download/index.html
+++ b/download/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/index.html b/index.html
index 7a7213166d..85f528b992 100644
--- a/index.html
+++ b/index.html
@@ -5,8 +5,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.1b957f35.js" defer="defer"></script>
-<script src="/assets/js/main.69f861c3.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.82b0c093.js" defer="defer"></script>
+<script src="/assets/js/main.60293e9e.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 [...]
diff --git a/lunr-index-1713936510492.json b/lunr-index-1713936510492.json
deleted file mode 100644
index b0ab1a8fed..0000000000
--- a/lunr-index-1713936510492.json
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,220.361,1,122.883,2,407.625,3,382.094,4,442.622,5,260.497,6,442.622]],["content/0",[0,2.58,1,2.865,2,8.646,3,8.104,4,8.269,5,4.867,6,9.388,7,2.64,8,2.838,9,3.667,10,1.202,11,3.341,12,4.612,13,4.772,14,7.534,15,9.885,16,2.966,17,3.667,18,5.181,19,3.667,20,2.838,21,2.1,22,0.532,23,1.45,24,2.031,25,3.667,26,3.341,27,5.181,28,7.912,29,2.838,30,3.127,31,1.705,32,5.662,33,3.127,34,3.492,35,3.439,36,3.341,3 [...]
\ No newline at end of file
diff --git a/lunr-index-1713950657499.json b/lunr-index-1713950657499.json
new file mode 100644
index 0000000000..3d48654474
--- /dev/null
+++ b/lunr-index-1713950657499.json
@@ -0,0 +1 @@
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,220.361,1,122.883,2,407.625,3,382.094,4,442.622,5,260.497,6,442.622]],["content/0",[0,2.58,1,2.865,2,8.646,3,8.104,4,8.269,5,4.867,6,9.388,7,2.64,8,2.838,9,3.667,10,1.202,11,3.341,12,4.612,13,4.772,14,7.534,15,9.885,16,2.966,17,3.667,18,5.181,19,3.667,20,2.838,21,2.1,22,0.532,23,1.45,24,2.031,25,3.667,26,3.341,27,5.181,28,7.912,29,2.838,30,3.127,31,1.705,32,5.662,33,3.127,34,3.492,35,3.439,36,3.341,3 [...]
\ No newline at end of file
diff --git a/lunr-index.json b/lunr-index.json
index b0ab1a8fed..3d48654474 100644
--- a/lunr-index.json
+++ b/lunr-index.json
@@ -1 +1 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,220.361,1,122.883,2,407.625,3,382.094,4,442.622,5,260.497,6,442.622]],["content/0",[0,2.58,1,2.865,2,8.646,3,8.104,4,8.269,5,4.867,6,9.388,7,2.64,8,2.838,9,3.667,10,1.202,11,3.341,12,4.612,13,4.772,14,7.534,15,9.885,16,2.966,17,3.667,18,5.181,19,3.667,20,2.838,21,2.1,22,0.532,23,1.45,24,2.031,25,3.667,26,3.341,27,5.181,28,7.912,29,2.838,30,3.127,31,1.705,32,5.662,33,3.127,34,3.492,35,3.439,36,3.341,3 [...]
\ No newline at end of file
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,220.361,1,122.883,2,407.625,3,382.094,4,442.622,5,260.497,6,442.622]],["content/0",[0,2.58,1,2.865,2,8.646,3,8.104,4,8.269,5,4.867,6,9.388,7,2.64,8,2.838,9,3.667,10,1.202,11,3.341,12,4.612,13,4.772,14,7.534,15,9.885,16,2.966,17,3.667,18,5.181,19,3.667,20,2.838,21,2.1,22,0.532,23,1.45,24,2.031,25,3.667,26,3.341,27,5.181,28,7.912,29,2.838,30,3.127,31,1.705,32,5.662,33,3.127,34,3.492,35,3.439,36,3.341,3 [...]
\ No newline at end of file
diff --git a/search-doc-1713936510492.json b/search-doc-1713936510492.json
deleted file mode 100644
index f935883c49..0000000000
--- a/search-doc-1713936510492.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-1713950657499.json b/search-doc-1713950657499.json
new file mode 100644
index 0000000000..511a79b4bc
--- /dev/null
+++ b/search-doc-1713950657499.json
@@ -0,0 +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
diff --git a/search-doc.json b/search-doc.json
index f935883c49..511a79b4bc 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 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