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 2023/06/02 11:21:56 UTC

[incubator-opendal] branch gh-pages updated: deploy: 2d2723f172f94a79f0f51fd924316c97bd7786c0

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/incubator-opendal.git


The following commit(s) were added to refs/heads/gh-pages by this push:
     new 68d1eb7e6 deploy: 2d2723f172f94a79f0f51fd924316c97bd7786c0
68d1eb7e6 is described below

commit 68d1eb7e64f242ef989932f0fe0595a1873af41e
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Fri Jun 2 11:21:51 2023 +0000

    deploy: 2d2723f172f94a79f0f51fd924316c97bd7786c0
---
 404.html                                           |   4 +-
 .../{136e1c50.93df9ee6.js => 136e1c50.13b9d2f1.js} |   2 +-
 .../{1957547a.882b12a7.js => 1957547a.94879531.js} |   2 +-
 .../{1db64337.8011d543.js => 1db64337.43d85cc2.js} |   2 +-
 .../{22d8fa67.ad2c1e14.js => 22d8fa67.7f83a10c.js} |   2 +-
 .../{2cbf1097.df20f5b6.js => 2cbf1097.a971916f.js} |   2 +-
 .../{434bbc94.0ed3c772.js => 434bbc94.9aedd2e7.js} |   2 +-
 .../{57a16c1d.890ea74d.js => 57a16c1d.64af6931.js} |   2 +-
 .../{62a401e9.59fc37f2.js => 62a401e9.436b703f.js} |   2 +-
 .../{8f4159f2.517269a7.js => 8f4159f2.39637d80.js} |   2 +-
 .../{a0405932.ea0c89d2.js => a0405932.5b015dd1.js} |   2 +-
 .../{ae4554eb.a5fe0620.js => ae4554eb.bab32bcb.js} |   2 +-
 .../{b56f9725.e6fc3c2d.js => b56f9725.123c62c2.js} |   2 +-
 .../{bb5b2057.774d5fb0.js => bb5b2057.5585245b.js} |   2 +-
 .../{c6ab695b.56892c9d.js => c6ab695b.1cb4c67c.js} |   2 +-
 .../{cc62039a.ca727973.js => cc62039a.01ed3777.js} |   2 +-
 .../{e892cec6.ad2d0dc9.js => e892cec6.b4a7958c.js} |   2 +-
 .../{f1ca5a39.972a5d14.js => f1ca5a39.5a8c0538.js} |   2 +-
 ...e~main.33a9a4dc.js => runtime~main.3a593831.js} |   2 +-
 blog/archive/index.html                            |   4 +-
 blog/index.html                                    |   4 +-
 blog/opendal-entered-apache-incubator/index.html   |   4 +-
 blog/tags/announcement/index.html                  |   4 +-
 blog/tags/index.html                               |   4 +-
 docs/category/services/index.html                  |   4 +-
 docs/java/allclasses-index.html                    |   2 +-
 docs/java/allpackages-index.html                   |   2 +-
 docs/java/constant-values.html                     |   2 +-
 docs/java/help-doc.html                            |   2 +-
 docs/java/index-all.html                           |   2 +-
 docs/java/index.html                               |   2 +-
 docs/java/org/apache/opendal/BlockingOperator.html |   2 +-
 docs/java/org/apache/opendal/Environment.html      |   2 +-
 docs/java/org/apache/opendal/Metadata.html         |   2 +-
 docs/java/org/apache/opendal/NativeObject.html     |   2 +-
 .../org/apache/opendal/OpenDALException.Code.html  |   2 +-
 docs/java/org/apache/opendal/OpenDALException.html |   2 +-
 docs/java/org/apache/opendal/Operator.html         |   2 +-
 .../apache/opendal/class-use/BlockingOperator.html |   2 +-
 .../org/apache/opendal/class-use/Environment.html  |   2 +-
 .../org/apache/opendal/class-use/Metadata.html     |   2 +-
 .../org/apache/opendal/class-use/NativeObject.html |   2 +-
 .../opendal/class-use/OpenDALException.Code.html   |   2 +-
 .../apache/opendal/class-use/OpenDALException.html |   2 +-
 .../org/apache/opendal/class-use/Operator.html     |   2 +-
 docs/java/org/apache/opendal/package-summary.html  |   2 +-
 docs/java/org/apache/opendal/package-tree.html     |   2 +-
 docs/java/org/apache/opendal/package-use.html      |   2 +-
 docs/java/overview-tree.html                       |   2 +-
 docs/java/serialized-form.html                     |   2 +-
 docs/nodejs/classes/BlockingLister.html            |  10 +-
 docs/nodejs/classes/Entry.html                     |  10 +-
 docs/nodejs/classes/Lister.html                    |  10 +-
 docs/nodejs/classes/Metadata.html                  |  24 +-
 docs/nodejs/classes/Operator.html                  |  64 +--
 docs/nodejs/index.html                             |   8 +-
 docs/nodejs/interfaces/PresignedRequest.html       |  14 +-
 docs/nodejs/modules.html                           |   8 +-
 docs/overview/index.html                           |   6 +-
 docs/python/opendal.html                           |  30 +-
 docs/python/search.js                              |   2 +-
 docs/rust/implementors/core/clone/trait.Clone.js   |   2 +-
 docs/rust/implementors/core/cmp/trait.Eq.js        |   2 +-
 docs/rust/implementors/core/cmp/trait.PartialEq.js |   2 +-
 docs/rust/implementors/core/convert/trait.From.js  |   2 +-
 .../implementors/core/default/trait.Default.js     |   2 +-
 docs/rust/implementors/core/fmt/trait.Debug.js     |   2 +-
 docs/rust/implementors/core/fmt/trait.Display.js   |   2 +-
 .../core/future/future/trait.Future.js             |   2 +-
 docs/rust/implementors/core/hash/trait.Hash.js     |   2 +-
 .../core/iter/traits/iterator/trait.Iterator.js    |   2 +-
 docs/rust/implementors/core/marker/trait.Copy.js   |   2 +-
 .../implementors/core/marker/trait.StructuralEq.js |   2 +-
 .../core/marker/trait.StructuralPartialEq.js       |   2 +-
 docs/rust/implementors/core/marker/trait.Sync.js   |   2 +-
 .../implementors/core/str/traits/trait.FromStr.js  |   2 +-
 .../futures_core/stream/trait.Stream.js            |   2 +-
 .../futures_io/if_std/trait.AsyncRead.js           |   2 +-
 .../futures_io/if_std/trait.AsyncWrite.js          |   2 +-
 docs/rust/opendal/docs/changelog/index.html        | 607 +++++++++++----------
 docs/rust/opendal/enum.ErrorKind.html              |   2 +-
 docs/rust/opendal/enum.Metakey.html                |   4 +-
 docs/rust/opendal/enum.Scheme.html                 |   2 +-
 docs/rust/opendal/index.html                       |   2 +-
 docs/rust/opendal/raw/enum.PresignOperation.html   |   2 +-
 .../rust/opendal/raw/oio/enum.AppendOperation.html |   2 +-
 docs/rust/opendal/raw/oio/struct.Cursor.html       |   2 +-
 docs/rust/opendal/raw/oio/trait.Read.html          |  16 +-
 docs/rust/opendal/raw/oio/trait.Write.html         |  18 +-
 docs/rust/opendal/raw/trait.Accessor.html          |   8 +-
 docs/rust/opendal/struct.Appender.html             |  20 +-
 docs/rust/opendal/struct.BlockingReader.html       |   4 +-
 docs/rust/opendal/struct.Error.html                |   2 +-
 docs/rust/opendal/struct.Reader.html               |  10 +-
 docs/rust/search-index.js                          |   2 +-
 docs/services/azblob/index.html                    |   6 +-
 docs/services/azdfs/index.html                     |   6 +-
 docs/services/cos/index.html                       |   6 +-
 docs/services/dashmap/index.html                   |   6 +-
 docs/services/fs/index.html                        |   6 +-
 docs/services/ftp/index.html                       |   6 +-
 docs/services/hdfs/index.html                      |   6 +-
 docs/services/ipfs/index.html                      |   6 +-
 docs/services/memory/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/webhdfs/index.html                   |   6 +-
 docs/vision/index.html                             |   6 +-
 index.html                                         |   4 +-
 112 files changed, 589 insertions(+), 550 deletions(-)

diff --git a/404.html b/404.html
index 7afa8cca2..8e17da736 100644
--- a/404.html
+++ b/404.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/136e1c50.93df9ee6.js b/assets/js/136e1c50.13b9d2f1.js
similarity index 99%
rename from assets/js/136e1c50.93df9ee6.js
rename to assets/js/136e1c50.13b9d2f1.js
index b10c9462c..4cfa18894 100644
--- a/assets/js/136e1c50.93df9ee6.js
+++ b/assets/js/136e1c50.13b9d2f1.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[57],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[57],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return [...]
\ No newline at end of file
diff --git a/assets/js/1957547a.882b12a7.js b/assets/js/1957547a.94879531.js
similarity index 99%
rename from assets/js/1957547a.882b12a7.js
rename to assets/js/1957547a.94879531.js
index 834b08d1a..4b049535f 100644
--- a/assets/js/1957547a.882b12a7.js
+++ b/assets/js/1957547a.94879531.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[477],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[477],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.8011d543.js b/assets/js/1db64337.43d85cc2.js
similarity index 97%
rename from assets/js/1db64337.8011d543.js
rename to assets/js/1db64337.43d85cc2.js
index c59f121f6..68163bce5 100644
--- a/assets/js/1db64337.8011d543.js
+++ b/assets/js/1db64337.43d85cc2.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retur [...]
\ No newline at end of file
diff --git a/assets/js/22d8fa67.ad2c1e14.js b/assets/js/22d8fa67.7f83a10c.js
similarity index 98%
rename from assets/js/22d8fa67.ad2c1e14.js
rename to assets/js/22d8fa67.7f83a10c.js
index c5cfac5a2..3602c84ed 100644
--- a/assets/js/22d8fa67.ad2c1e14.js
+++ b/assets/js/22d8fa67.7f83a10c.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[536],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[536],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retur [...]
\ No newline at end of file
diff --git a/assets/js/2cbf1097.df20f5b6.js b/assets/js/2cbf1097.a971916f.js
similarity index 99%
rename from assets/js/2cbf1097.df20f5b6.js
rename to assets/js/2cbf1097.a971916f.js
index 95433c682..906bc017d 100644
--- a/assets/js/2cbf1097.df20f5b6.js
+++ b/assets/js/2cbf1097.a971916f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[804],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[804],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
diff --git a/assets/js/434bbc94.0ed3c772.js b/assets/js/434bbc94.9aedd2e7.js
similarity index 98%
rename from assets/js/434bbc94.0ed3c772.js
rename to assets/js/434bbc94.9aedd2e7.js
index 1eecaee6e..b676d667f 100644
--- a/assets/js/434bbc94.0ed3c772.js
+++ b/assets/js/434bbc94.9aedd2e7.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[163],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[163],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/57a16c1d.890ea74d.js b/assets/js/57a16c1d.64af6931.js
similarity index 99%
rename from assets/js/57a16c1d.890ea74d.js
rename to assets/js/57a16c1d.64af6931.js
index 2855ce067..fee436f6b 100644
--- a/assets/js/57a16c1d.890ea74d.js
+++ b/assets/js/57a16c1d.64af6931.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[757],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[757],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
diff --git a/assets/js/62a401e9.59fc37f2.js b/assets/js/62a401e9.436b703f.js
similarity index 99%
rename from assets/js/62a401e9.59fc37f2.js
rename to assets/js/62a401e9.436b703f.js
index b75cc6f7b..66e062cee 100644
--- a/assets/js/62a401e9.59fc37f2.js
+++ b/assets/js/62a401e9.436b703f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[89],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[89],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return [...]
\ No newline at end of file
diff --git a/assets/js/8f4159f2.517269a7.js b/assets/js/8f4159f2.39637d80.js
similarity index 98%
rename from assets/js/8f4159f2.517269a7.js
rename to assets/js/8f4159f2.39637d80.js
index 070c52d09..4868d1d73 100644
--- a/assets/js/8f4159f2.517269a7.js
+++ b/assets/js/8f4159f2.39637d80.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[719],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>k});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[719],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>k});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retur [...]
\ No newline at end of file
diff --git a/assets/js/a0405932.ea0c89d2.js b/assets/js/a0405932.5b015dd1.js
similarity index 99%
rename from assets/js/a0405932.ea0c89d2.js
rename to assets/js/a0405932.5b015dd1.js
index e6b7468bc..db309a07a 100644
--- a/assets/js/a0405932.ea0c89d2.js
+++ b/assets/js/a0405932.5b015dd1.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[716],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[716],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
diff --git a/assets/js/ae4554eb.a5fe0620.js b/assets/js/ae4554eb.bab32bcb.js
similarity index 98%
rename from assets/js/ae4554eb.a5fe0620.js
rename to assets/js/ae4554eb.bab32bcb.js
index 94335ee3f..ca8a7f155 100644
--- a/assets/js/ae4554eb.a5fe0620.js
+++ b/assets/js/ae4554eb.bab32bcb.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[983],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[983],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/b56f9725.e6fc3c2d.js b/assets/js/b56f9725.123c62c2.js
similarity index 99%
rename from assets/js/b56f9725.e6fc3c2d.js
rename to assets/js/b56f9725.123c62c2.js
index 0d5f8d05a..c11a135a1 100644
--- a/assets/js/b56f9725.e6fc3c2d.js
+++ b/assets/js/b56f9725.123c62c2.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[217],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[217],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/bb5b2057.774d5fb0.js b/assets/js/bb5b2057.5585245b.js
similarity index 98%
rename from assets/js/bb5b2057.774d5fb0.js
rename to assets/js/bb5b2057.5585245b.js
index 84cab350f..f5a760318 100644
--- a/assets/js/bb5b2057.774d5fb0.js
+++ b/assets/js/bb5b2057.5585245b.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[214],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[214],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
diff --git a/assets/js/c6ab695b.56892c9d.js b/assets/js/c6ab695b.1cb4c67c.js
similarity index 99%
rename from assets/js/c6ab695b.56892c9d.js
rename to assets/js/c6ab695b.1cb4c67c.js
index 71b037ed0..934a267a0 100644
--- a/assets/js/c6ab695b.56892c9d.js
+++ b/assets/js/c6ab695b.1cb4c67c.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[289],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[289],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
diff --git a/assets/js/cc62039a.ca727973.js b/assets/js/cc62039a.01ed3777.js
similarity index 99%
rename from assets/js/cc62039a.ca727973.js
rename to assets/js/cc62039a.01ed3777.js
index 754aeedc1..8aa62b805 100644
--- a/assets/js/cc62039a.ca727973.js
+++ b/assets/js/cc62039a.01ed3777.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[11],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[11],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return [...]
\ No newline at end of file
diff --git a/assets/js/e892cec6.ad2d0dc9.js b/assets/js/e892cec6.b4a7958c.js
similarity index 99%
rename from assets/js/e892cec6.ad2d0dc9.js
rename to assets/js/e892cec6.b4a7958c.js
index 8de2e8914..d2aa939cb 100644
--- a/assets/js/e892cec6.ad2d0dc9.js
+++ b/assets/js/e892cec6.b4a7958c.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[845],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[845],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/f1ca5a39.972a5d14.js b/assets/js/f1ca5a39.5a8c0538.js
similarity index 98%
rename from assets/js/f1ca5a39.972a5d14.js
rename to assets/js/f1ca5a39.5a8c0538.js
index 93eadcea5..db320ee23 100644
--- a/assets/js/f1ca5a39.972a5d14.js
+++ b/assets/js/f1ca5a39.5a8c0538.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[538],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[538],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.33a9a4dc.js b/assets/js/runtime~main.3a593831.js
similarity index 53%
rename from assets/js/runtime~main.33a9a4dc.js
rename to assets/js/runtime~main.3a593831.js
index 1552dfaf8..81398bd27 100644
--- a/assets/js/runtime~main.33a9a4dc.js
+++ b/assets/js/runtime~main.3a593831.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,t,r,c,f={},b={};function o(e){var a=b[e];if(void 0!==a)return a.exports;var t=b[e]={exports:{}};return f[e].call(t.exports,t,t.exports,o),t.exports}o.m=f,e=[],o.O=(a,t,r,c)=>{if(!t){var f=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],c=e[i][2];for(var b=!0,n=0;n<t.length;n++)(!1&c||f>=c)&&Object.keys(o.O).every((e=>o.O[e](t[n])))?t.splice(n--,1):(b=!1,c<f&&(f=c));if(b){e.splice(i--,1);var d=r();void 0!==d&&(a=d)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,a,t,r,c,b={},f={};function o(e){var a=f[e];if(void 0!==a)return a.exports;var t=f[e]={exports:{}};return b[e].call(t.exports,t,t.exports,o),t.exports}o.m=b,e=[],o.O=(a,t,r,c)=>{if(!t){var b=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],c=e[i][2];for(var f=!0,n=0;n<t.length;n++)(!1&c||b>=c)&&Object.keys(o.O).every((e=>o.O[e](t[n])))?t.splice(n--,1):(f=!1,c<b&&(b=c));if(f){e.splice(i--,1);var d=r();void 0!==d&&(a=d)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index f2944198b..f79a0a500 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 890637a90..a4735ff04 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" content="Blog | Apache OpenDAL"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/opendal-entered-apache-incubator/index.html b/blog/opendal-entered-apache-incubator/index.html
index e8e0f7dcd..beb8ac63e 100644
--- a/blog/opendal-entered-apache-incubator/index.html
+++ b/blog/opendal-entered-apache-incubator/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><m [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/announcement/index.html b/blog/tags/announcement/index.html
index 506589709..d0132af8a 100644
--- a/blog/tags/announcement/index.html
+++ b/blog/tags/announcement/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">One post 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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 48266daae..80371e715 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" content="Tags | Apache OpenDAL"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/category/services/index.html b/docs/category/services/index.html
index 9d2bf606e..3b03cae27 100644
--- a/docs/category/services/index.html
+++ b/docs/category/services/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current">< [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/java/allclasses-index.html b/docs/java/allclasses-index.html
index de7ea8ab0..4d9beb00a 100644
--- a/docs/java/allclasses-index.html
+++ b/docs/java/allclasses-index.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>All Classes and Interfaces (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>All Classes and Interfaces (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="class index">
diff --git a/docs/java/allpackages-index.html b/docs/java/allpackages-index.html
index 961b64ccd..2c33fd271 100644
--- a/docs/java/allpackages-index.html
+++ b/docs/java/allpackages-index.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>All Packages (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>All Packages (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="package index">
diff --git a/docs/java/constant-values.html b/docs/java/constant-values.html
index 278ef99c9..316680a38 100644
--- a/docs/java/constant-values.html
+++ b/docs/java/constant-values.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Constant Field Values (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Constant Field Values (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="summary of constants">
diff --git a/docs/java/help-doc.html b/docs/java/help-doc.html
index ade0362bc..f897ec271 100644
--- a/docs/java/help-doc.html
+++ b/docs/java/help-doc.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>API Help (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>API Help (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="help">
diff --git a/docs/java/index-all.html b/docs/java/index-all.html
index 9da090f44..600e2aad4 100644
--- a/docs/java/index-all.html
+++ b/docs/java/index-all.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Index (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Index (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="index">
diff --git a/docs/java/index.html b/docs/java/index.html
index 54ee3114b..3088000b9 100644
--- a/docs/java/index.html
+++ b/docs/java/index.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>opendal-java 0.36.0-SNAPSHOT API</title>
+<title>opendal-java 0.36.1 API</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="index redirect">
diff --git a/docs/java/org/apache/opendal/BlockingOperator.html b/docs/java/org/apache/opendal/BlockingOperator.html
index 5fe0b484e..3338d0ae7 100644
--- a/docs/java/org/apache/opendal/BlockingOperator.html
+++ b/docs/java/org/apache/opendal/BlockingOperator.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>BlockingOperator (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>BlockingOperator (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal, class: BlockingOperator">
diff --git a/docs/java/org/apache/opendal/Environment.html b/docs/java/org/apache/opendal/Environment.html
index 0b2d1c1c8..98eede942 100644
--- a/docs/java/org/apache/opendal/Environment.html
+++ b/docs/java/org/apache/opendal/Environment.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Environment (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Environment (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal, enum: Environment">
diff --git a/docs/java/org/apache/opendal/Metadata.html b/docs/java/org/apache/opendal/Metadata.html
index 473c31e27..48eaa6032 100644
--- a/docs/java/org/apache/opendal/Metadata.html
+++ b/docs/java/org/apache/opendal/Metadata.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Metadata (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Metadata (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal, class: Metadata">
diff --git a/docs/java/org/apache/opendal/NativeObject.html b/docs/java/org/apache/opendal/NativeObject.html
index 7b4d81007..14418c018 100644
--- a/docs/java/org/apache/opendal/NativeObject.html
+++ b/docs/java/org/apache/opendal/NativeObject.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>NativeObject (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>NativeObject (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal, class: NativeObject">
diff --git a/docs/java/org/apache/opendal/OpenDALException.Code.html b/docs/java/org/apache/opendal/OpenDALException.Code.html
index fa0bf042f..e49d2b6d4 100644
--- a/docs/java/org/apache/opendal/OpenDALException.Code.html
+++ b/docs/java/org/apache/opendal/OpenDALException.Code.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>OpenDALException.Code (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>OpenDALException.Code (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal, class: OpenDALException, enum: Code">
diff --git a/docs/java/org/apache/opendal/OpenDALException.html b/docs/java/org/apache/opendal/OpenDALException.html
index ae2618711..50b9b75ec 100644
--- a/docs/java/org/apache/opendal/OpenDALException.html
+++ b/docs/java/org/apache/opendal/OpenDALException.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>OpenDALException (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>OpenDALException (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal, class: OpenDALException">
diff --git a/docs/java/org/apache/opendal/Operator.html b/docs/java/org/apache/opendal/Operator.html
index ff107e5a7..b0b91f687 100644
--- a/docs/java/org/apache/opendal/Operator.html
+++ b/docs/java/org/apache/opendal/Operator.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Operator (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Operator (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal, class: Operator">
diff --git a/docs/java/org/apache/opendal/class-use/BlockingOperator.html b/docs/java/org/apache/opendal/class-use/BlockingOperator.html
index 92f197238..7c00a5574 100644
--- a/docs/java/org/apache/opendal/class-use/BlockingOperator.html
+++ b/docs/java/org/apache/opendal/class-use/BlockingOperator.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Class org.apache.opendal.BlockingOperator (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.opendal.BlockingOperator (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal, class: BlockingOperator">
diff --git a/docs/java/org/apache/opendal/class-use/Environment.html b/docs/java/org/apache/opendal/class-use/Environment.html
index 00eee90b5..cb48bb044 100644
--- a/docs/java/org/apache/opendal/class-use/Environment.html
+++ b/docs/java/org/apache/opendal/class-use/Environment.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Enum org.apache.opendal.Environment (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Enum org.apache.opendal.Environment (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal, enum: Environment">
diff --git a/docs/java/org/apache/opendal/class-use/Metadata.html b/docs/java/org/apache/opendal/class-use/Metadata.html
index 2ec7114d9..17a869b67 100644
--- a/docs/java/org/apache/opendal/class-use/Metadata.html
+++ b/docs/java/org/apache/opendal/class-use/Metadata.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Class org.apache.opendal.Metadata (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.opendal.Metadata (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal, class: Metadata">
diff --git a/docs/java/org/apache/opendal/class-use/NativeObject.html b/docs/java/org/apache/opendal/class-use/NativeObject.html
index b31c5923f..95da28251 100644
--- a/docs/java/org/apache/opendal/class-use/NativeObject.html
+++ b/docs/java/org/apache/opendal/class-use/NativeObject.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Class org.apache.opendal.NativeObject (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.opendal.NativeObject (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal, class: NativeObject">
diff --git a/docs/java/org/apache/opendal/class-use/OpenDALException.Code.html b/docs/java/org/apache/opendal/class-use/OpenDALException.Code.html
index 6dfe9480c..25d7c75ac 100644
--- a/docs/java/org/apache/opendal/class-use/OpenDALException.Code.html
+++ b/docs/java/org/apache/opendal/class-use/OpenDALException.Code.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Enum org.apache.opendal.OpenDALException.Code (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Enum org.apache.opendal.OpenDALException.Code (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal, class: OpenDALException, enum: Code">
diff --git a/docs/java/org/apache/opendal/class-use/OpenDALException.html b/docs/java/org/apache/opendal/class-use/OpenDALException.html
index 634b1c77b..4b7e0fc43 100644
--- a/docs/java/org/apache/opendal/class-use/OpenDALException.html
+++ b/docs/java/org/apache/opendal/class-use/OpenDALException.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Class org.apache.opendal.OpenDALException (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.opendal.OpenDALException (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal, class: OpenDALException">
diff --git a/docs/java/org/apache/opendal/class-use/Operator.html b/docs/java/org/apache/opendal/class-use/Operator.html
index df88b9cea..f2a9e58b5 100644
--- a/docs/java/org/apache/opendal/class-use/Operator.html
+++ b/docs/java/org/apache/opendal/class-use/Operator.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Class org.apache.opendal.Operator (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Class org.apache.opendal.Operator (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal, class: Operator">
diff --git a/docs/java/org/apache/opendal/package-summary.html b/docs/java/org/apache/opendal/package-summary.html
index 527e614a4..51614e868 100644
--- a/docs/java/org/apache/opendal/package-summary.html
+++ b/docs/java/org/apache/opendal/package-summary.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>org.apache.opendal (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>org.apache.opendal (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="declaration: package: org.apache.opendal">
diff --git a/docs/java/org/apache/opendal/package-tree.html b/docs/java/org/apache/opendal/package-tree.html
index 3e8fa6aee..9ba75c7ae 100644
--- a/docs/java/org/apache/opendal/package-tree.html
+++ b/docs/java/org/apache/opendal/package-tree.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>org.apache.opendal Class Hierarchy (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>org.apache.opendal Class Hierarchy (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="tree: package: org.apache.opendal">
diff --git a/docs/java/org/apache/opendal/package-use.html b/docs/java/org/apache/opendal/package-use.html
index 57e340270..0f3d5b6de 100644
--- a/docs/java/org/apache/opendal/package-use.html
+++ b/docs/java/org/apache/opendal/package-use.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Uses of Package org.apache.opendal (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Uses of Package org.apache.opendal (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="use: package: org.apache.opendal">
diff --git a/docs/java/overview-tree.html b/docs/java/overview-tree.html
index 156bb2adb..d662aa8e5 100644
--- a/docs/java/overview-tree.html
+++ b/docs/java/overview-tree.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Class Hierarchy (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Class Hierarchy (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="class tree">
diff --git a/docs/java/serialized-form.html b/docs/java/serialized-form.html
index e7e97d857..2f87ef434 100644
--- a/docs/java/serialized-form.html
+++ b/docs/java/serialized-form.html
@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <!-- Generated by javadoc (17) -->
-<title>Serialized Form (opendal-java 0.36.0-SNAPSHOT API)</title>
+<title>Serialized Form (opendal-java 0.36.1 API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="serialized forms">
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index d54ca02c9..249c65351 100644
--- a/docs/nodejs/classes/BlockingLister.html
+++ b/docs/nodejs/classes/BlockingLister.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>BlockingLister | Apache OpenDAL - v0.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async s [...]
+<!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.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async s [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,7 +6,7 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">BlockingLister</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L433">index.d.ts:433</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L433">index.d.ts:433</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">
@@ -51,7 +51,7 @@
 <li class="tsd-description">
 <h4 class="tsd-returns-title">Returns <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></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L434">index.d.ts:434</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L434">index.d.ts:434</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
@@ -71,7 +71,7 @@
 <li><a href="#constructor" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-512-path"></use><use href="#icon-512-text"></use></svg><span>constructor</span></a></li>
 <li><a href="#next" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg><span>next</span></a></li></ul></div></details></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
+<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="BlockingLister.html" class="current"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-128-path"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7. [...]
 <li><a href="Entry.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index 310968973..87c492bfc 100644
--- a/docs/nodejs/classes/Entry.html
+++ b/docs/nodejs/classes/Entry.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>Entry | Apache OpenDAL - v0.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../as [...]
+<!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.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../as [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,7 +6,7 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Entry</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L396">index.d.ts:396</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L396">index.d.ts:396</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">
@@ -53,7 +53,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L398">index.d.ts:398</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L398">index.d.ts:398</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
@@ -73,7 +73,7 @@
 <li><a href="#constructor" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-512-path"></use><use href="#icon-512-text"></use></svg><span>constructor</span></a></li>
 <li><a href="#path" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg><span>path</span></a></li></ul></div></details></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
+<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="BlockingLister.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-128-path"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12.682 7.1 [...]
 <li><a href="Entry.html" class="current"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index 5ad81735a..535278c51 100644
--- a/docs/nodejs/classes/Lister.html
+++ b/docs/nodejs/classes/Lister.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>Lister | Apache OpenDAL - v0.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../a [...]
+<!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.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../a [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,7 +6,7 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Lister</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L422">index.d.ts:422</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L422">index.d.ts:422</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">
@@ -57,7 +57,7 @@ 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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L431">index.d.ts:431</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L431">index.d.ts:431</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
@@ -80,7 +80,7 @@ thing internally.</p>
 <ul>
 <li><a href="#md:safety"><span>Safety</span></a></li></ul></li></ul></div></details></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
+<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="BlockingLister.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-128-path"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12.682 7.1 [...]
 <li><a href="Entry.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index a0a553f9d..5d5b14032 100644
--- a/docs/nodejs/classes/Metadata.html
+++ b/docs/nodejs/classes/Metadata.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>Metadata | Apache OpenDAL - v0.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Metadata | Apache OpenDAL - v0.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,7 +6,7 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Metadata</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L400">index.d.ts:400</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L400">index.d.ts:400</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">
@@ -63,7 +63,7 @@
 </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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L406">index.d.ts:406</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L406">index.d.ts:406</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="contentLength" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Length</span><a href="#contentLength" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -73,7 +73,7 @@
 </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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L408">index.d.ts:408</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L408">index.d.ts:408</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="contentMd5" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Md5</span><a href="#contentMd5" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -83,7 +83,7 @@
 </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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L410">index.d.ts:410</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L410">index.d.ts:410</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="contentType" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Type</span><a href="#contentType" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -93,7 +93,7 @@
 </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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L412">index.d.ts:412</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L412">index.d.ts:412</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="etag" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>etag</span><a href="#etag" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -103,7 +103,7 @@
 </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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L414">index.d.ts:414</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L414">index.d.ts:414</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="lastModified" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>last<wbr/>Modified</span><a href="#lastModified" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -114,7 +114,7 @@
 </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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L420">index.d.ts:420</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L420">index.d.ts:420</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="isDirectory" class="tsd-anchor"></a>
@@ -126,7 +126,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L402">index.d.ts:402</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L402">index.d.ts:402</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-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -136,7 +136,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L404">index.d.ts:404</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L404">index.d.ts:404</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
@@ -163,7 +163,7 @@
 <li><a href="#isDirectory" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg><span>is<wbr/>Directory</span></a></li>
 <li><a href="#isFile" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg><span>is<wbr/>File</span></a></li></ul></div></details></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
+<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="BlockingLister.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-128-path"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12.682 7.1 [...]
 <li><a href="Entry.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index f3be0223e..be5c8420c 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.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Operator | Apache OpenDAL - v0.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,7 +6,7 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Operator</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L33">index.d.ts:33</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L33">index.d.ts:33</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">
@@ -76,7 +76,7 @@
 <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><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="Operator.html" class="tsd-signature-type tsd-kind-class">Operator</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L34">index.d.ts:34</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L34">index.d.ts:34</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>
@@ -101,7 +101,7 @@
 <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">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L169">index.d.ts:169</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L169">index.d.ts:169</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</span><a href="#check" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -114,7 +114,7 @@
 </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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L77">index.d.ts:77</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L77">index.d.ts:77</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="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -133,7 +133,7 @@
 <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-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L178">index.d.ts:178</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L178">index.d.ts:178</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="copySync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>copy<wbr/>Sync</span><a href="#copySync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -152,7 +152,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L187">index.d.ts:187</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L187">index.d.ts:187</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="#createDir" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -169,7 +169,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L104">index.d.ts:104</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L104">index.d.ts:104</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="createDirSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>create<wbr/>Dir<wbr/>Sync</span><a href="#createDirSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -186,7 +186,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L113">index.d.ts:113</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L113">index.d.ts:113</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="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -204,7 +204,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L267">index.d.ts:267</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L267">index.d.ts:267</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="deleteSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>delete<wbr/>Sync</span><a href="#deleteSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -221,7 +221,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L276">index.d.ts:276</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L276">index.d.ts:276</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="isExist" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>Exist</span><a href="#isExist" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -238,7 +238,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L86">index.d.ts:86</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L86">index.d.ts:86</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="isExistSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>Exist<wbr/>Sync</span><a href="#isExistSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -255,7 +255,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L95">index.d.ts:95</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L95">index.d.ts:95</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="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -274,7 +274,7 @@
 <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="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L323">index.d.ts:323</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L323">index.d.ts:323</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="listSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>list<wbr/>Sync</span><a href="#listSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -293,7 +293,7 @@
 <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="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L346">index.d.ts:346</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L346">index.d.ts:346</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="#presignRead" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -313,7 +313,7 @@
 <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="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L362">index.d.ts:362</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L362">index.d.ts:362</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="#presignStat" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -333,7 +333,7 @@
 <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="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L394">index.d.ts:394</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L394">index.d.ts:394</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="#presignWrite" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -353,7 +353,7 @@
 <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="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L378">index.d.ts:378</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L378">index.d.ts:378</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="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -370,7 +370,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L122">index.d.ts:122</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L122">index.d.ts:122</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="readSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>read<wbr/>Sync</span><a href="#readSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -387,7 +387,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L131">index.d.ts:131</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L131">index.d.ts:131</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="remove" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>remove</span><a href="#remove" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -405,7 +405,7 @@
 <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">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L288">index.d.ts:288</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L288">index.d.ts:288</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="removeAll" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>remove<wbr/>All</span><a href="#removeAll" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -423,7 +423,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L300">index.d.ts:300</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L300">index.d.ts:300</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="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -443,7 +443,7 @@
 <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-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L198">index.d.ts:198</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L198">index.d.ts:198</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="renameSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>rename<wbr/>Sync</span><a href="#renameSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -463,7 +463,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L209">index.d.ts:209</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L209">index.d.ts:209</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="scan" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>scan</span><a href="#scan" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -482,7 +482,7 @@
 <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="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L232">index.d.ts:232</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L232">index.d.ts:232</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="scanSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>scan<wbr/>Sync</span><a href="#scanSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -501,7 +501,7 @@
 <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="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L255">index.d.ts:255</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L255">index.d.ts:255</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="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -524,7 +524,7 @@
 <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></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L54">index.d.ts:54</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L54">index.d.ts:54</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="statSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>stat<wbr/>Sync</span><a href="#statSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -541,7 +541,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L66">index.d.ts:66</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L66">index.d.ts:66</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="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -560,7 +560,7 @@
 <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">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L142">index.d.ts:142</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L142">index.d.ts:142</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="writeSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>write<wbr/>Sync</span><a href="#writeSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -579,7 +579,7 @@
 <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><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L153">index.d.ts:153</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L153">index.d.ts:153</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
@@ -721,7 +721,7 @@
 <ul>
 <li><a href="#md:example"><span>Example</span></a></li></ul></li></ul></div></details></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
+<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="BlockingLister.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-128-path"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12.682 7.1 [...]
 <li><a href="Entry.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/nodejs/index.html b/docs/nodejs/index.html
index ff29273b3..d671cbf4d 100644
--- a/docs/nodejs/index.html
+++ b/docs/nodejs/index.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>Apache OpenDAL - v0.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/search.js" id=" [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Apache OpenDAL - v0.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/search.js" id=" [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base=".">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,12 +6,12 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
 <div class="tsd-page-title">
-<h2>Apache OpenDAL - v0.36.0</h2></div>
+<h2>Apache OpenDAL - v0.36.1</h2></div>
 <div class="tsd-panel tsd-typography"><a id="md:opendal-nodejs-binding" class="tsd-anchor"></a><h1><a href="#md:opendal-nodejs-binding">OpenDAL Node.js Binding</a></h1><a id="md:installation" class="tsd-anchor"></a><h2><a href="#md:installation">Installation</a></h2><pre><code class="language-shell"><span class="hl-0">npm </span><span class="hl-1">install</span><span class="hl-0"> </span><span class="hl-1">opendal</span>
 </code><button>Copy</button></pre>
 <a id="md:docs" class="tsd-anchor"></a><h2><a href="#md:docs">Docs</a></h2><p>See our documentations on <a href="https://opendal.apache.org/docs/nodejs/">opendal.apache.org</a>.</p>
@@ -52,7 +52,7 @@
 <li><a href="#md:contributing"><span>Contributing</span></a></li>
 <li><a href="#md:license"><span>License</span></a></li></ul></li></ul></li></ul></div></details></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="modules.html" class="current"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C [...]
+<nav class="tsd-navigation"><a href="modules.html" class="current"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="classes/BlockingLister.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-128-path"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12 [...]
 <li><a href="classes/Entry.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/nodejs/interfaces/PresignedRequest.html b/docs/nodejs/interfaces/PresignedRequest.html
index 316ca4e9b..2cd855ca6 100644
--- a/docs/nodejs/interfaces/PresignedRequest.html
+++ b/docs/nodejs/interfaces/PresignedRequest.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>PresignedRequest | Apache OpenDAL - v0.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PresignedRequest | Apache OpenDAL - v0.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,7 +6,7 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">PresignedRequest</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L25">index.d.ts:25</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L25">index.d.ts:25</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">
@@ -40,21 +40,21 @@
 <div class="tsd-comment tsd-typography"><p>HTTP headers of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L31">index.d.ts:31</a></li></ul></aside></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L31">index.d.ts:31</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 class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <div class="tsd-signature"><span class="tsd-kind-property">method</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 <div class="tsd-comment tsd-typography"><p>HTTP method of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L27">index.d.ts:27</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 class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <div class="tsd-signature"><span class="tsd-kind-property">url</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 <div class="tsd-comment tsd-typography"><p>URL of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/509b02c/bindings/nodejs/index.d.ts#L29">index.d.ts:29</a></li></ul></aside></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/2d2723f/bindings/nodejs/index.d.ts#L29">index.d.ts:29</a></li></ul></aside></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
@@ -75,7 +75,7 @@
 <li><a href="#method" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-1024-path"></use><use href="#icon-1024-text"></use></svg><span>method</span></a></li>
 <li><a href="#url" class=""><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-1024-path"></use><use href="#icon-1024-text"></use></svg><span>url</span></a></li></ul></div></details></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
+<nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692  [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="../classes/BlockingLister.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-128-path"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012 [...]
 <li><a href="../classes/Entry.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/nodejs/modules.html b/docs/nodejs/modules.html
index dc631dd49..4ea04da90 100644
--- a/docs/nodejs/modules.html
+++ b/docs/nodejs/modules.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>Apache OpenDAL - v0.36.0</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/search.js" id=" [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Apache OpenDAL - v0.36.1</title><meta name="description" content="Documentation for Apache OpenDAL"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/search.js" id=" [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base=".">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,12 +6,12 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.36.0</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.36.1</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-content">
 <div class="tsd-page-title">
-<h2>Apache OpenDAL - v0.36.0</h2></div>
+<h2>Apache OpenDAL - v0.36.1</h2></div>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <h3 class="tsd-index-heading uppercase">Index</h3>
@@ -40,7 +40,7 @@
 <div class="tsd-theme-toggle">
 <h4 class="uppercase">Theme</h4><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
 <div class="site-menu">
-<nav class="tsd-navigation"><a href="modules.html" class="current"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C [...]
+<nav class="tsd-navigation"><a href="modules.html" class="current"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6" id="icon-4-path"></rect><path d="M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C [...]
 <ul class="tsd-small-nested-navigation">
 <li><a href="classes/BlockingLister.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Blocking<wbr/>Lister</span></a></li>
 <li><a href="classes/Entry.html"><svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-128-path"></use><use href="#icon-128-text"></use></svg><span>Entry</span></a></li>
diff --git a/docs/overview/index.html b/docs/overview/index.html
index af0124fc2..d9642d1b5 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Overview | 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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 5a7e1f29f..51067f2b7 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -159,16 +159,16 @@
                                 <a class="variable" href="#Metadata.content_type">content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.mode">mode</a>
+                                <a class="variable" href="#Metadata.content_length">content_length</a>
                         </li>
                         <li>
                                 <a class="variable" href="#Metadata.content_md5">content_md5</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.etag">etag</a>
+                                <a class="variable" href="#Metadata.mode">mode</a>
                         </li>
                 </ul>
 
@@ -865,15 +865,15 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
 
 
                             </div>
-                            <div id="Metadata.mode" class="classattr">
+                            <div id="Metadata.content_length" class="classattr">
                                 <div class="attr variable">
-            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
+            <span class="name">content_length</span><span class="annotation">: int</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.mode"></a>
+    <a class="headerlink" href="#Metadata.content_length"></a>
     
-            <div class="docstring"><p>mode represent this entry's mode.</p>
+            <div class="docstring"><p>Content length of this entry.</p>
 </div>
 
 
@@ -891,28 +891,28 @@ 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>
 
 
                             </div>
-                            <div id="Metadata.etag" class="classattr">
+                            <div id="Metadata.mode" class="classattr">
                                 <div class="attr variable">
-            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
+            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.etag"></a>
+    <a class="headerlink" href="#Metadata.mode"></a>
     
-            <div class="docstring"><p>ETag of this entry.</p>
+            <div class="docstring"><p>mode represent this entry's mode.</p>
 </div>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index fe69d7eb9..bc983f0bc 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>OpenDAL 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=\"w\"> </span> [...]
+    /** 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>OpenDAL 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=\"w\"> </span> [...]
 
     // 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/rust/implementors/core/clone/trait.Clone.js b/docs/rust/implementors/core/clone/trait.Clone.js
index 04a07c4f0..fde85e09d 100644
--- a/docs/rust/implementors/core/clone/trait.Clone.js
+++ b/docs/rust/implementors/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/raw/struct.AccessorInfo.html\" title=\"struct opendal::raw::AccessorInfo\">AccessorInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/layers/struct.MetricsLayer. [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/struct.Entry.html\" title=\"struct opendal::Entry\">Entry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/services/struct.Memcached.html\" title=\"struct opendal:: [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/cmp/trait.Eq.js b/docs/rust/implementors/core/cmp/trait.Eq.js
index 2b0e087fb..001e599c7 100644
--- a/docs/rust/implementors/core/cmp/trait.Eq.js
+++ b/docs/rust/implementors/core/cmp/trait.Eq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.WriteOperation.html\" title=\"enum opendal::raw::oio::WriteOperation\">WriteOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.html\" title=\"enum [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.html\" title=\"enum opendal::raw::oio::ReadOperation\">ReadOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.WriteOperation.html\" title=\"enum o [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/cmp/trait.PartialEq.js b/docs/rust/implementors/core/cmp/trait.PartialEq.js
index 0d5e77368..ac7790de0 100644
--- a/docs/rust/implementors/core/cmp/trait.PartialEq.js
+++ b/docs/rust/implementors/core/cmp/trait.PartialEq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"opendal/enum.Metakey.html\" title=\"enum opendal::Metakey\">Metakey</a>&gt; for <a class=\"enum\" href=\"opendal/enum.Metakey.html\" title=\"enum opendal::Metakey\">Metakey</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::Pa [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"opendal/raw/enum.Operation.html\" title=\"enum opendal::raw::Operation\">Operation</a>&gt; for <a class=\"enum\" href=\"opendal/raw/enum.Operation.html\" title=\"enum opendal::raw::Operation\">Operation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/convert/trait.From.js b/docs/rust/implementors/core/convert/trait.From.js
index 7344c8481..35bcebcee 100644
--- a/docs/rust/implementors/core/convert/trait.From.js
+++ b/docs/rust/implementors/core/convert/trait.From.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"opendal/raw/struct.OpStat.html\" title=\"struct opendal::raw::OpStat\">OpStat</a>&gt; for <a class=\"enum\" href=\"opendal/raw/enum.PresignOperation.html\" title=\"enum opendal::raw::PresignOperation\">PresignOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/convert/trait [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;MetaData&gt; for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct opendal::Metadata\">Metadata</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/1.70.0/alloc/ [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/default/trait.Default.js b/docs/rust/implementors/core/default/trait.Default.js
index edfce9710..df37bc4e7 100644
--- a/docs/rust/implementors/core/default/trait.Default.js
+++ b/docs/rust/implementors/core/default/trait.Default.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"opendal/enum.Scheme.html\" title=\"enum opendal::Scheme\">Scheme</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/services/struct.Ipfs.html\" title=\"stru [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/raw/adapters/typed_kv/struct.Capability.html\" title=\"struct opendal::raw::adapters::typed_kv::Capability\">Capability</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\ [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/fmt/trait.Debug.js b/docs/rust/implementors/core/fmt/trait.Debug.js
index 913dcd4b1..b8a497b01 100644
--- a/docs/rust/implementors/core/fmt/trait.Debug.js
+++ b/docs/rust/implementors/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/services/struct.Redis.html\" title=\"struct opendal::services::Redis\">RedisBuilder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"opendal/enum.Metakey.html\" title=\"enum opendal: [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/raw/struct.FormDataPart.html\" title=\"struct opendal::raw: [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/fmt/trait.Display.js b/docs/rust/implementors/core/fmt/trait.Display.js
index 2ef3bb776..abbf63bac 100644
--- a/docs/rust/implementors/core/fmt/trait.Display.js
+++ b/docs/rust/implementors/core/fmt/trait.Display.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.html\" title=\"enum opendal::raw::oio::ReadOperation\">ReadOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"opendal/enum.Scheme.html\"  [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"opendal/raw/enum.Operation.html\" title=\"enum opendal::raw::Operation\">Operation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opend [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/future/future/trait.Future.js b/docs/rust/implementors/core/future/future/trait.Future.js
index 283a498f7..4ae281da7 100644
--- a/docs/rust/implementors/core/future/future/trait.Future.js
+++ b/docs/rust/implementors/core/future/future/trait.Future.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a class=\"struct\" href=\"opendal/operator_futures/struct.FutureAppender.html\" title=\"struct opendal::operator_futures::FutureAppender\">FutureAppender</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Futur [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a class=\"struct\" href=\"opendal/operator_futures/struct.FutureStat.html\" title=\"struct opendal::operator_futures::FutureStat\">FutureStat</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/hash/trait.Hash.js b/docs/rust/implementors/core/hash/trait.Hash.js
index 0b2ece841..ac3d52515 100644
--- a/docs/rust/implementors/core/hash/trait.Hash.js
+++ b/docs/rust/implementors/core/hash/trait.Hash.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.WriteOperation.html\" title=\"enum opendal::raw::oio::WriteOperation\">WriteOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/enum.Scheme.html\" title=\"enu [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.html\" title=\"enum opendal::raw::oio::ReadOperation\">ReadOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.AppendOperation.html [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js b/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
index fd4df5c69..f63ec1024 100644
--- a/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
+++ b/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"opendal/struct.BlockingReader.html\" title=\"struct opendal::BlockingReader\">BlockingReader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"> [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"opendal/struct.BlockingReader.html\" title=\"struct opendal::BlockingReader\">BlockingReader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"> [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Copy.js b/docs/rust/implementors/core/marker/trait.Copy.js
index 060806d79..eca563198 100644
--- a/docs/rust/implementors/core/marker/trait.Copy.js
+++ b/docs/rust/implementors/core/marker/trait.Copy.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"opendal/enum.Scheme.html\" title=\"enum opendal::Scheme\">Scheme</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.html\" title=\"enum opendal::raw::oio [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"opendal/layers/struct.MadsimLayer.html\" title=\"struct opendal::layers::MadsimLayer\">MadsimLayer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.h [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.StructuralEq.js b/docs/rust/implementors/core/marker/trait.StructuralEq.js
index 26c3c0d2d..2f5c73a95 100644
--- a/docs/rust/implementors/core/marker/trait.StructuralEq.js
+++ b/docs/rust/implementors/core/marker/trait.StructuralEq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"opendal/raw/s [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.AppendOperation.html\" title=\"enum opendal::raw::oio::AppendOperation\">AppendOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a c [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js b/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js
index 9c7d91869..ebddc32b1 100644
--- a/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js
+++ b/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> fo [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.html\" title=\"enum opendal::raw::oio::ReadOperation\">ReadOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialE [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Sync.js b/docs/rust/implementors/core/marker/trait.Sync.js
index 166e06267..dcfc530b2 100644
--- a/docs/rust/implementors/core/marker/trait.Sync.js
+++ b/docs/rust/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/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/1.70.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/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/1.70.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/str/traits/trait.FromStr.js b/docs/rust/implementors/core/str/traits/trait.FromStr.js
index 8fe8f0c52..7adaf4231 100644
--- a/docs/rust/implementors/core/str/traits/trait.FromStr.js
+++ b/docs/rust/implementors/core/str/traits/trait.FromStr.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesRange.html\" title=\"struct opendal::raw::BytesRange\">BytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"enum\" href=\"opendal/e [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange.html\" title=\"struct opendal::raw::BytesContentRange\">BytesContentRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.70.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"st [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/futures_core/stream/trait.Stream.js b/docs/rust/implementors/futures_core/stream/trait.Stream.js
index 4039a9fef..cedbf3aef 100644
--- a/docs/rust/implementors/futures_core/stream/trait.Stream.js
+++ b/docs/rust/implementors/futures_core/stream/trait.Stream.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl Stream for <a class=\"struct\" href=\"opendal/struct.Reader.html\" title=\"struct opendal::Reader\">Reader</a>"],["impl Stream for <a class=\"struct\" href=\"opendal/struct.Lister.html\" title=\"struct opendal::Lister\">Lister</a>"],["impl Stream for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.Read.html\" title=\"trait opendal::raw::oio::Read\">Read</a>"]]
+"opendal":[["impl Stream for <a class=\"struct\" href=\"opendal/struct.Lister.html\" title=\"struct opendal::Lister\">Lister</a>"],["impl Stream for <a class=\"struct\" href=\"opendal/struct.Reader.html\" title=\"struct opendal::Reader\">Reader</a>"],["impl Stream for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.Read.html\" title=\"trait opendal::raw::oio::Read\">Read</a>"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/futures_io/if_std/trait.AsyncRead.js b/docs/rust/implementors/futures_io/if_std/trait.AsyncRead.js
index 0d5cca548..0fc4d7554 100644
--- a/docs/rust/implementors/futures_io/if_std/trait.AsyncRead.js
+++ b/docs/rust/implementors/futures_io/if_std/trait.AsyncRead.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl AsyncRead for <a class=\"struct\" href=\"opendal/struct.Reader.html\" title=\"struct opendal::Reader\">Reader</a>"],["impl AsyncRead for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.Read.html\" title=\"trait opendal::raw::oio::Read\">Read</a>"]]
+"opendal":[["impl AsyncRead for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.Read.html\" title=\"trait opendal::raw::oio::Read\">Read</a>"],["impl AsyncRead for <a class=\"struct\" href=\"opendal/struct.Reader.html\" title=\"struct opendal::Reader\">Reader</a>"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/futures_io/if_std/trait.AsyncWrite.js b/docs/rust/implementors/futures_io/if_std/trait.AsyncWrite.js
index d26032541..2eeee349a 100644
--- a/docs/rust/implementors/futures_io/if_std/trait.AsyncWrite.js
+++ b/docs/rust/implementors/futures_io/if_std/trait.AsyncWrite.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl AsyncWrite for <a class=\"struct\" href=\"opendal/struct.Writer.html\" title=\"struct opendal::Writer\">Writer</a>"],["impl AsyncWrite for <a class=\"struct\" href=\"opendal/struct.Appender.html\" title=\"struct opendal::Appender\">Appender</a>"]]
+"opendal":[["impl AsyncWrite for <a class=\"struct\" href=\"opendal/struct.Appender.html\" title=\"struct opendal::Appender\">Appender</a>"],["impl AsyncWrite for <a class=\"struct\" href=\"opendal/struct.Writer.html\" title=\"struct opendal::Writer\">Writer</a>"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/opendal/docs/changelog/index.html b/docs/rust/opendal/docs/changelog/index.html
index 55b59e51c..6e7d635f7 100644
--- a/docs/rust/opendal/docs/changelog/index.html
+++ b/docs/rust/opendal/docs/changelog/index.html
@@ -3,7 +3,46 @@
 <p>All notable changes to this project will be documented in this file.</p>
 <p>The format is based on <a href="https://keepachangelog.com/">Keep a Changelog</a>
 and this project adheres to <a href="https://semver.org/">Semantic Versioning</a>.</p>
-<h3 id="v0360---2023-05-30"><a href="#v0360---2023-05-30">v0.36.0 - 2023-05-30</a></h3><h4 id="added"><a href="#added">Added</a></h4>
+<h3 id="v0361---2023-06-02"><a href="#v0361---2023-06-02">v0.36.1 - 2023-06-02</a></h3><h4 id="added"><a href="#added">Added</a></h4>
+<ul>
+<li>feat(services/webdav): support redirection when get 302/307 response during read operation by @Yansongsongsong in https://github.com/apache/incubator-opendal/pull/2256</li>
+<li>feat: Add Zig Bindings Module by @kassane in https://github.com/apache/incubator-opendal/pull/2374</li>
+<li>feat: Implement Timeout Layer by @Xuanwo in https://github.com/apache/incubator-opendal/pull/2395</li>
+</ul>
+<h4 id="changed"><a href="#changed">Changed</a></h4>
+<ul>
+<li>refactor(bindings/zig): enable tests and more by @tisonkun in https://github.com/apache/incubator-opendal/pull/2375</li>
+<li>refactor(bindings/zig): add errors handler and module test by @kassane in https://github.com/apache/incubator-opendal/pull/2381</li>
+<li>refactor(http_util): Adopt reqwest’s redirect support by @Xuanwo in https://github.com/apache/incubator-opendal/pull/2390</li>
+</ul>
+<h4 id="fixed"><a href="#fixed">Fixed</a></h4>
+<ul>
+<li>fix(bindings/zig): reflect C interface changes by @tisonkun in https://github.com/apache/incubator-opendal/pull/2378</li>
+<li>fix(services/azblob): Fix batch delete doesn’t work on azure by @Xuanwo in https://github.com/apache/incubator-opendal/pull/2382</li>
+</ul>
+<h4 id="docs"><a href="#docs">Docs</a></h4>
+<ul>
+<li>docs: service doc for s3 by @suyanhanx in https://github.com/apache/incubator-opendal/pull/2376</li>
+<li>docs(bindings/C): The documentation for OpenDAL C binding by @Ji-Xinyou in https://github.com/apache/incubator-opendal/pull/2373</li>
+<li>docs: add link for c binding by @suyanhanx in https://github.com/apache/incubator-opendal/pull/2380</li>
+<li>docs: docs for kv services by @suyanhanx in https://github.com/apache/incubator-opendal/pull/2396</li>
+<li>docs: docs for fs related services by @suyanhanx in https://github.com/apache/incubator-opendal/pull/2397</li>
+<li>docs(bindings/java): do not release snapshot versions anymore by @tisonkun in https://github.com/apache/incubator-opendal/pull/2398</li>
+</ul>
+<h4 id="ci"><a href="#ci">CI</a></h4>
+<ul>
+<li>ci: Enable semantic PRs by @Xuanwo in https://github.com/apache/incubator-opendal/pull/2370</li>
+<li>ci: improve licenserc settings by @tisonkun in https://github.com/apache/incubator-opendal/pull/2377</li>
+<li>build(deps): bump reqwest from 0.11.15 to 0.11.18 by @dependabot in https://github.com/apache/incubator-opendal/pull/2389</li>
+<li>build(deps): bump pyo3 from 0.18.2 to 0.18.3 by @dependabot in https://github.com/apache/incubator-opendal/pull/2388</li>
+<li>ci: Enable nextest for all behavior tests by @Xuanwo in https://github.com/apache/incubator-opendal/pull/2400</li>
+</ul>
+<h4 id="chore"><a href="#chore">Chore</a></h4>
+<ul>
+<li>chore(bindings/python): upgrade maturin to 1.0 by @messense in https://github.com/apache/incubator-opendal/pull/2369</li>
+<li>chore: Fix license headers for release/labler by @Xuanwo in https://github.com/apache/incubator-opendal/pull/2371</li>
+</ul>
+<h3 id="v0360---2023-05-30"><a href="#v0360---2023-05-30">v0.36.0 - 2023-05-30</a></h3><h4 id="added-1"><a href="#added-1">Added</a></h4>
 <ul>
 <li>feat(service/fs): add append support for fs (#2296)</li>
 <li>feat(services/sftp): add append support for sftp (#2297)</li>
@@ -17,7 +56,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>feat(bindings/java): save one jni call in the hot path (#2353)</li>
 <li>feat: server side encryption support for azblob (#2347)</li>
 </ul>
-<h4 id="changed"><a href="#changed">Changed</a></h4>
+<h4 id="changed-1"><a href="#changed-1">Changed</a></h4>
 <ul>
 <li>refactor(core): Implement RFC-2299 for stat_with (#2303)</li>
 <li>refactor(core): Implement RFC-2299 for BlockingOperator::write_with (#2305)</li>
@@ -35,12 +74,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor(bindings/C): align bdd test with the feature tests (#2340)</li>
 <li>refactor(bindings/java): narrow unsafe boundary (#2351)</li>
 </ul>
-<h4 id="fixed"><a href="#fixed">Fixed</a></h4>
+<h4 id="fixed-1"><a href="#fixed-1">Fixed</a></h4>
 <ul>
 <li>fix(services/supabase): correctly set retryable (#2295)</li>
 <li>fix(core): appender complete check (#2298)</li>
 </ul>
-<h4 id="docs"><a href="#docs">Docs</a></h4>
+<h4 id="docs-1"><a href="#docs-1">Docs</a></h4>
 <ul>
 <li>docs: add service doc for azdfs (#2310)</li>
 <li>docs(bidnings/java): how to deploy snapshots (#2311)</li>
@@ -54,7 +93,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>docs: add service doc for dashmap (#2342)</li>
 <li>docs(bindings/java): for BlockingOperator (#2344)</li>
 </ul>
-<h4 id="ci"><a href="#ci">CI</a></h4>
+<h4 id="ci-1"><a href="#ci-1">CI</a></h4>
 <ul>
 <li>build(bindings/java): prepare for snapshot release (#2301)</li>
 <li>build(bindings/java): support multiple platform java bindings  (#2324)</li>
@@ -69,7 +108,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>ci: Speed up python docs build (#2364)</li>
 <li>ci: Adopt setup-node’s cache logic instead (#2365)</li>
 </ul>
-<h4 id="chore"><a href="#chore">Chore</a></h4>
+<h4 id="chore-1"><a href="#chore-1">Chore</a></h4>
 <ul>
 <li>chore(test): Avoid test names becoming prefixes of other tests (#2333)</li>
 <li>chore(bindings/java): improve OpenDALException tests and docs (#2343)</li>
@@ -77,7 +116,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(docs): split docs build into small jobs (#2356)’</li>
 <li>chore: protect branch gh-pages (#2358)</li>
 </ul>
-<h3 id="v0350---2023-05-23"><a href="#v0350---2023-05-23">v0.35.0 - 2023-05-23</a></h3><h4 id="added-1"><a href="#added-1">Added</a></h4>
+<h3 id="v0350---2023-05-23"><a href="#v0350---2023-05-23">v0.35.0 - 2023-05-23</a></h3><h4 id="added-2"><a href="#added-2">Added</a></h4>
 <ul>
 <li>feat(services/onedrive): Implement <code>list</code>, <code>create_dir</code>, <code>stat</code> and upload
 ing large files (#2231)</li>
@@ -99,14 +138,14 @@ version (#2255)</li>
 <li>feat(services/oss): add append support (#2279)</li>
 <li>feat(bindings/java): implement async ops to pass AsyncStepsTest (#2291)</li>
 </ul>
-<h4 id="changed-1"><a href="#changed-1">Changed</a></h4>
+<h4 id="changed-2"><a href="#changed-2">Changed</a></h4>
 <ul>
 <li>services/gdrive: port code to GdriveCore &amp; add path_2_id cache (#2203)</li>
 <li>refactor: Minimize futures dependencies (#2248)</li>
 <li>refactor: Add Operator::via_map to support init without generic type parameters (#2280)</li>
 <li>refactor(binding/java): build, async and docs (#2276)</li>
 </ul>
-<h4 id="fixed-1"><a href="#fixed-1">Fixed</a></h4>
+<h4 id="fixed-2"><a href="#fixed-2">Fixed</a></h4>
 <ul>
 <li>fix: Fix bugs that failed wasabi’s integration tests (#2273)</li>
 </ul>
@@ -114,7 +153,7 @@ version (#2255)</li>
 <ul>
 <li>feat(core): remove <code>scan</code> from raw API (#2262)</li>
 </ul>
-<h4 id="docs-1"><a href="#docs-1">Docs</a></h4>
+<h4 id="docs-2"><a href="#docs-2">Docs</a></h4>
 <ul>
 <li>chore(s3): update builder region doc (#2247)</li>
 <li>docs: Add services in readme (#2251)</li>
@@ -125,7 +164,7 @@ version (#2255)</li>
 <li>docs: Remove unlicensed svg (#2289)</li>
 <li>fix(website): double active route (#2290)</li>
 </ul>
-<h4 id="ci-1"><a href="#ci-1">CI</a></h4>
+<h4 id="ci-2"><a href="#ci-2">CI</a></h4>
 <ul>
 <li>ci: Enable test for cos (#2270)</li>
 <li>ci: Add integration tests for supabase (#2272)</li>
@@ -134,11 +173,11 @@ version (#2255)</li>
 <li>ci: Cleanup NOTICE file (#2281)</li>
 <li>ci: Fix release not contains incubating (#2292)</li>
 </ul>
-<h4 id="chore-1"><a href="#chore-1">Chore</a></h4>
+<h4 id="chore-2"><a href="#chore-2">Chore</a></h4>
 <ul>
 <li>chore(core): remove unnecessary path prefix (#2265)</li>
 </ul>
-<h3 id="v0340---2023-05-09"><a href="#v0340---2023-05-09">v0.34.0 - 2023-05-09</a></h3><h4 id="added-2"><a href="#added-2">Added</a></h4>
+<h3 id="v0340---2023-05-09"><a href="#v0340---2023-05-09">v0.34.0 - 2023-05-09</a></h3><h4 id="added-3"><a href="#added-3">Added</a></h4>
 <ul>
 <li>feat(writer): configurable buffer size of unsized write (#2143)</li>
 <li>feat(oay): Add basic s3 list_objects_v2 with start_after support (#2219)</li>
@@ -148,12 +187,12 @@ version (#2255)</li>
 <li>feat: Add assert for public types to ensure Send + Sync (#2237)</li>
 <li>feat(services/gcs): Add abort support for writer (#2242)</li>
 </ul>
-<h4 id="changed-2"><a href="#changed-2">Changed</a></h4>
+<h4 id="changed-3"><a href="#changed-3">Changed</a></h4>
 <ul>
 <li>refactor: Replace futures::ready with std::task::ready (#2221)</li>
 <li>refactor: Use list without delimiter to replace scan (#2243)</li>
 </ul>
-<h4 id="fixed-2"><a href="#fixed-2">Fixed</a></h4>
+<h4 id="fixed-3"><a href="#fixed-3">Fixed</a></h4>
 <ul>
 <li>fix(services/gcs): checked_rem_euclid could return Some(0) (#2220)</li>
 <li>fix(tests): Etag must be wrapped by <code>&quot;</code> (#2226)</li>
@@ -161,12 +200,12 @@ version (#2255)</li>
 <li>fix(services/s3): Return error if region not set for AWS S3 (#2234)</li>
 <li>fix(services/gcs): rsa 0.9 breaks gcs presign (#2236)</li>
 </ul>
-<h4 id="chore-2"><a href="#chore-2">Chore</a></h4>
+<h4 id="chore-3"><a href="#chore-3">Chore</a></h4>
 <ul>
 <li>chore: change log subscriber from env_logger to tracing-subscriber (#2238)</li>
 <li>chore: Fix build of wasabi (#2241)</li>
 </ul>
-<h3 id="v0333---2023-05-06"><a href="#v0333---2023-05-06">v0.33.3 - 2023-05-06</a></h3><h4 id="added-3"><a href="#added-3">Added</a></h4>
+<h3 id="v0333---2023-05-06"><a href="#v0333---2023-05-06">v0.33.3 - 2023-05-06</a></h3><h4 id="added-4"><a href="#added-4">Added</a></h4>
 <ul>
 <li>feat(services/onedrive): Add read and write support for OneDrive (#2129)</li>
 <li>test(core): test for <code>read_with_override_cache_control</code> (#2155)</li>
@@ -179,19 +218,19 @@ version (#2255)</li>
 <li>feat(tests): Enable supabase integration tests (#2190)</li>
 <li>feat(core): merge scan and list (#2214)</li>
 </ul>
-<h4 id="changed-3"><a href="#changed-3">Changed</a></h4>
+<h4 id="changed-4"><a href="#changed-4">Changed</a></h4>
 <ul>
 <li>refactor(java): refactor java code for java binding (#2145)</li>
 <li>refactor(layers/logging): parsing level str (#2160)</li>
 <li>refactor: Move not initiated logic to utils instead (#2196)</li>
 <li>refactor(services/memcached): Rewrite memecached connection entirely (#2204)</li>
 </ul>
-<h4 id="fixed-3"><a href="#fixed-3">Fixed</a></h4>
+<h4 id="fixed-4"><a href="#fixed-4">Fixed</a></h4>
 <ul>
 <li>fix(service/s3): set retryable on batch (#2171)</li>
 <li>fix(services/supabase): Supabase ci fix (#2200)</li>
 </ul>
-<h4 id="docs-2"><a href="#docs-2">Docs</a></h4>
+<h4 id="docs-3"><a href="#docs-3">Docs</a></h4>
 <ul>
 <li>docs(website): try to add opendal logo (#2159)</li>
 <li>doc: update vision to be more clear (#2164)</li>
@@ -201,7 +240,7 @@ version (#2255)</li>
 <li>docs(nodejs): Add CONTRIBUTING docs (#2174)</li>
 <li>docs: Add CONTRIBUTING for python (#2188)</li>
 </ul>
-<h4 id="ci-2"><a href="#ci-2">CI</a></h4>
+<h4 id="ci-3"><a href="#ci-3">CI</a></h4>
 <ul>
 <li>ci: Use microsoft rust devcontainer instead (#2165)</li>
 <li>ci(devcontainer): Install development deps (#2167)</li>
@@ -211,7 +250,7 @@ version (#2255)</li>
 <li>ci: Add tools to generate NOTICE and all deps licenses (#2205)</li>
 <li>ci: use Temurin JDK 11 to build the bindings-java (#2213)</li>
 </ul>
-<h4 id="chore-3"><a href="#chore-3">Chore</a></h4>
+<h4 id="chore-4"><a href="#chore-4">Chore</a></h4>
 <ul>
 <li>chore(deps): bump clap from 4.1.11 to 4.2.5 (#2183)</li>
 <li>chore(deps): bump futures from 0.3.27 to 0.3.28 (#2181)</li>
@@ -219,7 +258,7 @@ version (#2255)</li>
 <li>chore: Refactor behavior test (#2189)</li>
 <li>chore: update readme for more information that is more friendly to newcomers (#2217)</li>
 </ul>
-<h3 id="v0332---2023-04-27"><a href="#v0332---2023-04-27">v0.33.2 - 2023-04-27</a></h3><h4 id="added-4"><a href="#added-4">Added</a></h4>
+<h3 id="v0332---2023-04-27"><a href="#v0332---2023-04-27">v0.33.2 - 2023-04-27</a></h3><h4 id="added-5"><a href="#added-5">Added</a></h4>
 <ul>
 <li>feat(core): add test for <code>stat_with_if_none_match</code> (#2122)</li>
 <li>feat(services/gcs): Add start-after support for list (#2107)</li>
@@ -235,16 +274,16 @@ version (#2255)</li>
 <li>test(core): test for <code>read_with_if_none_match</code> (#2141)</li>
 <li>feat(services/supabase): Add read/write/stat support for supabase (#2119)</li>
 </ul>
-<h4 id="docs-3"><a href="#docs-3">Docs</a></h4>
+<h4 id="docs-4"><a href="#docs-4">Docs</a></h4>
 <ul>
 <li>docs: add hdfs classpath related troubleshoot (#2130)</li>
 </ul>
-<h4 id="ci-3"><a href="#ci-3">CI</a></h4>
+<h4 id="ci-4"><a href="#ci-4">CI</a></h4>
 <ul>
 <li>ci: Mark job as skipped if owner is not apache (#2128)</li>
 <li>ci: Enable native-tls to test gcs presign for workaround (#2138)</li>
 </ul>
-<h3 id="v0331---2023-04-25"><a href="#v0331---2023-04-25">v0.33.1 - 2023-04-25</a></h3><h4 id="added-5"><a href="#added-5">Added</a></h4>
+<h3 id="v0331---2023-04-25"><a href="#v0331---2023-04-25">v0.33.1 - 2023-04-25</a></h3><h4 id="added-6"><a href="#added-6">Added</a></h4>
 <ul>
 <li>feat: Add behavior test for read_with_if_match &amp; stat_with_if_match (#2088)</li>
 <li>feat(tests): Add fuzz test for writer without content length (#2100)</li>
@@ -254,22 +293,22 @@ version (#2255)</li>
 <li>feat(services/s3): Add <code>start-after</code> support for list (#2096)</li>
 <li>feat: gcs support cache control (#2116)</li>
 </ul>
-<h4 id="fixed-4"><a href="#fixed-4">Fixed</a></h4>
+<h4 id="fixed-5"><a href="#fixed-5">Fixed</a></h4>
 <ul>
 <li>fix(services/gcs): set <code>content length=0</code> for gcs initiate_resumable_upload (#2110)</li>
 <li>fix(bindings/nodejs): Fix index.d.ts not updated (#2117)</li>
 </ul>
-<h4 id="docs-4"><a href="#docs-4">Docs</a></h4>
+<h4 id="docs-5"><a href="#docs-5">Docs</a></h4>
 <ul>
 <li>chore: improve LoggingLayer docs and pub use log::Level (#2089)</li>
 <li>docs(refactor): Add more detailed description of operator, accessor, and builder (#2094)</li>
 </ul>
-<h4 id="ci-4"><a href="#ci-4">CI</a></h4>
+<h4 id="ci-5"><a href="#ci-5">CI</a></h4>
 <ul>
 <li>chore(bindings/nodejs): update <code>package.json</code> repository info (#2078)</li>
 <li>ci: Bring hdfs test back (#2114)</li>
 </ul>
-<h3 id="v0330---2023-04-23"><a href="#v0330---2023-04-23">v0.33.0 - 2023-04-23</a></h3><h4 id="added-6"><a href="#added-6">Added</a></h4>
+<h3 id="v0330---2023-04-23"><a href="#v0330---2023-04-23">v0.33.0 - 2023-04-23</a></h3><h4 id="added-7"><a href="#added-7">Added</a></h4>
 <ul>
 <li>feat: Add OpenTelemetry Trace Layer (#2001)</li>
 <li>feat: add if_none_match support for azblob (#2035)</li>
@@ -288,29 +327,29 @@ version (#2255)</li>
 <li>feat(core): test for read_with_override_content_composition (#2067)</li>
 <li>feat(core): Add <code>start-after</code> support for list (#2071)</li>
 </ul>
-<h4 id="changed-4"><a href="#changed-4">Changed</a></h4>
+<h4 id="changed-5"><a href="#changed-5">Changed</a></h4>
 <ul>
 <li>refactor: Polish Writer API by merging append and write together (#2036)</li>
 <li>refactor(raw/http_util): Add url in error context (#2066)</li>
 <li>refactor: Allow reusing the same operator to speed up tests (#2068)</li>
 </ul>
-<h4 id="fixed-5"><a href="#fixed-5">Fixed</a></h4>
+<h4 id="fixed-6"><a href="#fixed-6">Fixed</a></h4>
 <ul>
 <li>fix(bindings/ruby): use rb_sys_env to help find ruby for building (#2051)</li>
 <li>fix: MadsimLayer should be able to built without cfg (#2059)</li>
 <li>fix(services/s3): Ignore prefix if it’s empty (#2064)</li>
 </ul>
-<h4 id="docs-5"><a href="#docs-5">Docs</a></h4>
+<h4 id="docs-6"><a href="#docs-6">Docs</a></h4>
 <ul>
 <li>docs(bindings/python): ipynb examples for users (#2061)</li>
 </ul>
-<h4 id="ci-5"><a href="#ci-5">CI</a></h4>
+<h4 id="ci-6"><a href="#ci-6">CI</a></h4>
 <ul>
 <li>ci(bindings/nodejs): publish support <code>--provenance</code> (#2046)</li>
 <li>ci: upgrade typos to 1.14.8 (#2055)</li>
 <li>chore(bindings/C): ignore the formatting of auto-generated opendal.h (#2056)</li>
 </ul>
-<h3 id="v0320---2023-04-18"><a href="#v0320---2023-04-18">v0.32.0 - 2023-04-18</a></h3><h4 id="added-7"><a href="#added-7">Added</a></h4>
+<h3 id="v0320---2023-04-18"><a href="#v0320---2023-04-18">v0.32.0 - 2023-04-18</a></h3><h4 id="added-8"><a href="#added-8">Added</a></h4>
 <ul>
 <li>feat: Add wasabi service implementation (#2004)</li>
 <li>feat: improve the readability of oli command line error output (#2016)</li>
@@ -321,22 +360,22 @@ version (#2255)</li>
 <li>feat(layer): add madsim layer (#2006)</li>
 <li>feat(gcs): add support for gcs append (#1801)</li>
 </ul>
-<h4 id="changed-5"><a href="#changed-5">Changed</a></h4>
+<h4 id="changed-6"><a href="#changed-6">Changed</a></h4>
 <ul>
 <li>refactor: Rename <code>Create</code> to <code>CreateDir</code> for its behavior changed (#2019)</li>
 </ul>
-<h4 id="fixed-6"><a href="#fixed-6">Fixed</a></h4>
+<h4 id="fixed-7"><a href="#fixed-7">Fixed</a></h4>
 <ul>
 <li>fix: Cargo lock not updated (#2027)</li>
 <li>fix(services/s3): Ignore empty query to make it more compatible (#2028)</li>
 <li>fix(services/oss): Fix env not loaded for oss signer (#2029)</li>
 </ul>
-<h4 id="docs-6"><a href="#docs-6">Docs</a></h4>
+<h4 id="docs-7"><a href="#docs-7">Docs</a></h4>
 <ul>
 <li>docs: fix some typos (#2022)</li>
 <li>docs: add dev dependency section (#2021)</li>
 </ul>
-<h3 id="v0311---2023-04-17"><a href="#v0311---2023-04-17">v0.31.1 - 2023-04-17</a></h3><h4 id="added-8"><a href="#added-8">Added</a></h4>
+<h3 id="v0311---2023-04-17"><a href="#v0311---2023-04-17">v0.31.1 - 2023-04-17</a></h3><h4 id="added-9"><a href="#added-9">Added</a></h4>
 <ul>
 <li>feat(services/azdfs): support rename (#1929)</li>
 <li>test: Increate copy/move nested path test depth (#1932)</li>
@@ -350,12 +389,12 @@ version (#2255)</li>
 <li>feat(services/gcs): Allow setting default storage_class (#1996)</li>
 <li>feat(binding/C): add clang-format for c binding (#2003)</li>
 </ul>
-<h4 id="changed-6"><a href="#changed-6">Changed</a></h4>
+<h4 id="changed-7"><a href="#changed-7">Changed</a></h4>
 <ul>
 <li>refactor: Polish the behavior of scan (#1926)</li>
 <li>refactor: Polish the implementation of webhdfs (#1935)</li>
 </ul>
-<h4 id="fixed-7"><a href="#fixed-7">Fixed</a></h4>
+<h4 id="fixed-8"><a href="#fixed-8">Fixed</a></h4>
 <ul>
 <li>fix: sled should not be enabled by default (#1923)</li>
 <li>fix: kv adapter’s writer implementation fixed to honour empty writes (#193</li>
@@ -366,7 +405,7 @@ version (#2255)</li>
 <ul>
 <li>fix(services/azblob): fix copy missing content-length (#2000)</li>
 </ul>
-<h4 id="docs-7"><a href="#docs-7">Docs</a></h4>
+<h4 id="docs-8"><a href="#docs-8">Docs</a></h4>
 <ul>
 <li>docs: Adding docs link to python binding (#1921)</li>
 <li>docs(bindings/python): fix wrong doc link (#1928)</li>
@@ -378,14 +417,14 @@ version (#2255)</li>
 <li>docs: Add OpenDAL VISION (#2007)</li>
 <li>docs: update VISION and behavior tests doc (#2009)</li>
 </ul>
-<h4 id="ci-6"><a href="#ci-6">CI</a></h4>
+<h4 id="ci-7"><a href="#ci-7">CI</a></h4>
 <ul>
 <li>ci(bindings/nodejs): Access should be set to public before publish (#1919)</li>
 <li>ci: Re-enable webhdfs test (#1925)</li>
 <li>chore: add .editorconfig (#1988)</li>
 <li>ci: Fix format after adding editorconfig (#1990)</li>
 </ul>
-<h3 id="v0310---2023-04-12"><a href="#v0310---2023-04-12">v0.31.0 - 2023-04-12</a></h3><h4 id="added-9"><a href="#added-9">Added</a></h4>
+<h3 id="v0310---2023-04-12"><a href="#v0310---2023-04-12">v0.31.0 - 2023-04-12</a></h3><h4 id="added-10"><a href="#added-10">Added</a></h4>
 <ul>
 <li>feat(bindings/java): add cucumber test (#1809)</li>
 <li>feat(bindings/java): setup Java CI (#1823)</li>
@@ -417,7 +456,7 @@ version (#2255)</li>
 <li>feat(services/oss): remove unused builder prop allow_anonymous (#1913)</li>
 <li>feat: Add feature flag for all services (#1915)</li>
 </ul>
-<h4 id="changed-7"><a href="#changed-7">Changed</a></h4>
+<h4 id="changed-8"><a href="#changed-8">Changed</a></h4>
 <ul>
 <li>refactor(core): Simplify the usage of BatchOperation and BatchResults (#1843)</li>
 <li>refactor: Use reqwest blocking client instead of ureq (#1853)</li>
@@ -432,7 +471,7 @@ version (#2255)</li>
 <li>refactor: Use chrono instead of time to work well with ecosystem (#1912)</li>
 <li>refactor(service/obs): Migrate obs to async reqsign (#1914)</li>
 </ul>
-<h4 id="fixed-8"><a href="#fixed-8">Fixed</a></h4>
+<h4 id="fixed-9"><a href="#fixed-9">Fixed</a></h4>
 <ul>
 <li>fix: podling website check (#1838)</li>
 <li>fix(website): copyright update (#1839)</li>
@@ -440,19 +479,19 @@ version (#2255)</li>
 <li>fix(core): S3 Copy should set SSE headers (#1860)</li>
 <li>fix: Fix presign related unit tests (#1910)</li>
 </ul>
-<h4 id="docs-8"><a href="#docs-8">Docs</a></h4>
+<h4 id="docs-9"><a href="#docs-9">Docs</a></h4>
 <ul>
 <li>docs(bindings/nodejs): fix build failed (#1819)</li>
 <li>docs: fix several typos in the documentation (#1846)</li>
 <li>doc(bindings/nodejs): update presign example in doc (#1901)</li>
 </ul>
-<h4 id="ci-7"><a href="#ci-7">CI</a></h4>
+<h4 id="ci-8"><a href="#ci-8">CI</a></h4>
 <ul>
 <li>ci: Fix build for nodejs binding on macos (#1813)</li>
 <li>binding/c: build: add phony to makefile, and some improve (#1850)</li>
 <li>ci: upgrade hawkeye action (#1834)</li>
 </ul>
-<h4 id="chore-4"><a href="#chore-4">Chore</a></h4>
+<h4 id="chore-5"><a href="#chore-5">Chore</a></h4>
 <ul>
 <li>chore(bindings/nodejs): add deno benchmark (#1814)</li>
 <li>chore: Add CODEOWNERS (#1817)</li>
@@ -465,7 +504,7 @@ version (#2255)</li>
 <li>chore: Make clippy happy (#1865)</li>
 <li>binding(python): Format python code in binding (#1885)</li>
 </ul>
-<h3 id="v0305---2023-03-31"><a href="#v0305---2023-03-31">v0.30.5 - 2023-03-31</a></h3><h4 id="added-10"><a href="#added-10">Added</a></h4>
+<h3 id="v0305---2023-03-31"><a href="#v0305---2023-03-31">v0.30.5 - 2023-03-31</a></h3><h4 id="added-11"><a href="#added-11">Added</a></h4>
 <ul>
 <li>feat(oli): implement <code>oli rm</code> (#1774)</li>
 <li>feat(bindings/nodejs): Support presign (#1772)</li>
@@ -479,25 +518,25 @@ version (#2255)</li>
 <li>feat: add override_cache_control (#1804)</li>
 <li>feat: add cache_control to OpWrite (#1806)</li>
 </ul>
-<h4 id="changed-8"><a href="#changed-8">Changed</a></h4>
+<h4 id="changed-9"><a href="#changed-9">Changed</a></h4>
 <ul>
 <li>refactor(oli): switch to <code>Operator::scan</code> and <code>Operator::remove_all</code> (#1779)</li>
 <li>refactor(bindings/nodejs): Polish benchmark to make it more readable (#1810)</li>
 </ul>
-<h4 id="fixed-9"><a href="#fixed-9">Fixed</a></h4>
+<h4 id="fixed-10"><a href="#fixed-10">Fixed</a></h4>
 <ul>
 <li>fix(oli): set the root of fs service to ‘/’ (#1773)</li>
 <li>fix: align WebDAV stat with RFC specification (#1783)</li>
 <li>fix(bindings/nodejs): fix read benchmark (#1805)</li>
 </ul>
-<h4 id="ci-8"><a href="#ci-8">CI</a></h4>
+<h4 id="ci-9"><a href="#ci-9">CI</a></h4>
 <ul>
 <li>ci: Split clippy and docs check (#1785)</li>
 <li>ci(bindings/nodejs): Support aarch64-apple-darwin (#1780)</li>
 <li>ci(bindings/nodejs): publish with LICENSE &amp; NOTICE (#1790)</li>
 <li>ci(services/redis): Add dragonfly test (#1808)</li>
 </ul>
-<h4 id="chore-5"><a href="#chore-5">Chore</a></h4>
+<h4 id="chore-6"><a href="#chore-6">Chore</a></h4>
 <ul>
 <li>chore(bindings/python): update maturin to 0.14.16 (#1777)</li>
 <li>chore(bin/oli): Set oli version from package version (#1786)</li>
@@ -506,7 +545,7 @@ version (#2255)</li>
 <li>chore(bindings/nodejs): init benchmark (#1798)</li>
 <li>chore(bindings/nodejs): Fix generated headers (#1802)</li>
 </ul>
-<h3 id="v0304---2023-03-26"><a href="#v0304---2023-03-26">v0.30.4 - 2023-03-26</a></h3><h4 id="added-11"><a href="#added-11">Added</a></h4>
+<h3 id="v0304---2023-03-26"><a href="#v0304---2023-03-26">v0.30.4 - 2023-03-26</a></h3><h4 id="added-12"><a href="#added-12">Added</a></h4>
 <ul>
 <li>feat(oli): add config file to oli (#1706)</li>
 <li>feat: make oli support more services (#1717)</li>
@@ -523,17 +562,17 @@ version (#2255)</li>
 <li>feat(oli): implement oli ls (#1755)</li>
 <li>feat(oli): implement oli cat (#1759)</li>
 </ul>
-<h4 id="fixed-10"><a href="#fixed-10">Fixed</a></h4>
+<h4 id="fixed-11"><a href="#fixed-11">Fixed</a></h4>
 <ul>
 <li>fix(bindings/nodejs): Publish sub-package name (#1704)</li>
 </ul>
-<h4 id="docs-9"><a href="#docs-9">Docs</a></h4>
+<h4 id="docs-10"><a href="#docs-10">Docs</a></h4>
 <ul>
 <li>docs: Update comparison vs object_store (#1698)</li>
 <li>docs(bindings/python): add pdoc to docs env (#1718)</li>
 <li>docs: List working on bindings in README (#1753)</li>
 </ul>
-<h4 id="ci-9"><a href="#ci-9">CI</a></h4>
+<h4 id="ci-10"><a href="#ci-10">CI</a></h4>
 <ul>
 <li>ci: Fix workflow not triggered when itself changed (#1716)</li>
 <li>ci: Remove ROCKSDB_LIB_DIR after we didn’t install librocksdb (#1719)</li>
@@ -542,7 +581,7 @@ version (#2255)</li>
 <li>ci: add a basic ci for ruby (#1744)</li>
 <li>ci: Remove target from cache (#1764)</li>
 </ul>
-<h4 id="chore-6"><a href="#chore-6">Chore</a></h4>
+<h4 id="chore-7"><a href="#chore-7">Chore</a></h4>
 <ul>
 <li>chore: Fix CHANGELOG not found (#1694)</li>
 <li>chore: Remove publish=false of oli (#1697)</li>
@@ -555,7 +594,7 @@ version (#2255)</li>
 <li>chore: improve NotADirectory error message with ending slash (#1756)</li>
 <li>chore(bindings/python): update pyo3 to 0.18.2 (#1758)</li>
 </ul>
-<h3 id="v0303---2023-03-16"><a href="#v0303---2023-03-16">v0.30.3 - 2023-03-16</a></h3><h4 id="added-12"><a href="#added-12">Added</a></h4>
+<h3 id="v0303---2023-03-16"><a href="#v0303---2023-03-16">v0.30.3 - 2023-03-16</a></h3><h4 id="added-13"><a href="#added-13">Added</a></h4>
 <ul>
 <li>feat: Infer storage name based on endpoint (#1551)</li>
 <li>feat(bindings/python): implement async file-like reader API (#1570)</li>
@@ -574,12 +613,12 @@ version (#2255)</li>
 <li>feat(bindings/python): add auto-generated api docs (#1613)</li>
 <li>feat(bindings/python): add <code>__repr__</code> to <code>Operator</code> and <code>AsyncOperator</code> (#1683)</li>
 </ul>
-<h4 id="changed-9"><a href="#changed-9">Changed</a></h4>
+<h4 id="changed-10"><a href="#changed-10">Changed</a></h4>
 <ul>
 <li>*: Change all files licenses to ASF (#1592)</li>
 <li>refactor(bindings/python): only enable <code>pyo3/entension-module</code> feature when building with maturin (#1680)</li>
 </ul>
-<h4 id="fixed-11"><a href="#fixed-11">Fixed</a></h4>
+<h4 id="fixed-12"><a href="#fixed-12">Fixed</a></h4>
 <ul>
 <li>fix(bindings/python): Fix the metadata for Python binding (#1568)</li>
 <li>fix: Operator::remove_all behaviour on non-existing object fixed (#1587)</li>
@@ -587,7 +626,7 @@ version (#2255)</li>
 <li>fix: Bucket config related error is misleadling (#1684)</li>
 <li>fix(services/s3): UploadId should be percent encoded (#1690)</li>
 </ul>
-<h4 id="ci-10"><a href="#ci-10">CI</a></h4>
+<h4 id="ci-11"><a href="#ci-11">CI</a></h4>
 <ul>
 <li>ci: Fix typo in workflows (#1582)</li>
 <li>ci: Don’t check dep updates so frequently (#1599)</li>
@@ -607,7 +646,7 @@ version (#2255)</li>
 <li>ci: Fix license header check and doc check (#1674)</li>
 <li>infra: Add odev to simplify contributor’s setup (#1687)</li>
 </ul>
-<h4 id="docs-10"><a href="#docs-10">Docs</a></h4>
+<h4 id="docs-11"><a href="#docs-11">Docs</a></h4>
 <ul>
 <li>docs: Migrate links to o.a.o (#1630)</li>
 <li>docs: update the old address and the LICENSE size. (#1633)</li>
@@ -625,7 +664,7 @@ version (#2255)</li>
 <li>website: Add GitHub entry (#1636)</li>
 <li>website: move some content of footer to navbar. (#1660)</li>
 </ul>
-<h4 id="chore-7"><a href="#chore-7">Chore</a></h4>
+<h4 id="chore-8"><a href="#chore-8">Chore</a></h4>
 <ul>
 <li>chore(bindings/nodejs): fix missing files to publish (#1569)</li>
 <li>chore(deps): bump lazy-regex from 2.4.1 to 2.5.0 (#1573)</li>
@@ -654,23 +693,23 @@ version (#2255)</li>
 <li>chore: Remove not needed ignore from licenserc (#1677)</li>
 <li>chore: Ignore generated docs from git (#1686)</li>
 </ul>
-<h3 id="v0302---2023-03-10"><a href="#v0302---2023-03-10">v0.30.2 - 2023-03-10</a></h3><h4 id="ci-11"><a href="#ci-11">CI</a></h4>
+<h3 id="v0302---2023-03-10"><a href="#v0302---2023-03-10">v0.30.2 - 2023-03-10</a></h3><h4 id="ci-12"><a href="#ci-12">CI</a></h4>
 <ul>
 <li>ci(bindings/nodejs): Fix nodejs package can’t uploaded (#1564)</li>
 </ul>
-<h3 id="v0301---2023-03-10"><a href="#v0301---2023-03-10">v0.30.1 - 2023-03-10</a></h3><h4 id="docs-11"><a href="#docs-11">Docs</a></h4>
+<h3 id="v0301---2023-03-10"><a href="#v0301---2023-03-10">v0.30.1 - 2023-03-10</a></h3><h4 id="docs-12"><a href="#docs-12">Docs</a></h4>
 <ul>
 <li>docs: Fix Operator::create() has been removed (#1560)</li>
 </ul>
-<h4 id="ci-12"><a href="#ci-12">CI</a></h4>
+<h4 id="ci-13"><a href="#ci-13">CI</a></h4>
 <ul>
 <li>ci: Fix python &amp; nodejs not released correctly (#1559)</li>
 </ul>
-<h4 id="chore-8"><a href="#chore-8">Chore</a></h4>
+<h4 id="chore-9"><a href="#chore-9">Chore</a></h4>
 <ul>
 <li>chore(bindings/nodejs): update license in package.json (#1556)</li>
 </ul>
-<h3 id="v0300---2023-03-10"><a href="#v0300---2023-03-10">v0.30.0 - 2023-03-10</a></h3><h4 id="added-13"><a href="#added-13">Added</a></h4>
+<h3 id="v0300---2023-03-10"><a href="#v0300---2023-03-10">v0.30.0 - 2023-03-10</a></h3><h4 id="added-14"><a href="#added-14">Added</a></h4>
 <ul>
 <li>RFC-1477: Remove Object Concept (#1477)</li>
 <li>feat(bindings/nodejs): fs Operator (#1485)</li>
@@ -691,7 +730,7 @@ version (#2255)</li>
 <li>feat(bindings/nodejs): Support Operator.scanSync &amp; Operator.listSync (#1546)</li>
 <li>feat: remove_via can delete files concurrently (#1495)</li>
 </ul>
-<h4 id="changed-10"><a href="#changed-10">Changed</a></h4>
+<h4 id="changed-11"><a href="#changed-11">Changed</a></h4>
 <ul>
 <li>refactor: Split operator APIs into different part (#1483)</li>
 <li>refactor: Remove Object prefix for public API (#1488)</li>
@@ -703,50 +742,50 @@ version (#2255)</li>
 <li>refactor: improve the python binding implementation (#1517)</li>
 <li>refactor(bindings/nodejs): Remove scheme from bindings (#1552)</li>
 </ul>
-<h4 id="fixed-12"><a href="#fixed-12">Fixed</a></h4>
+<h4 id="fixed-13"><a href="#fixed-13">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Make sure the ureq’s body has been consumed (#1497)</li>
 <li>fix(services/s3): Allow retry error RequestTimeout (#1532)</li>
 </ul>
-<h4 id="docs-12"><a href="#docs-12">Docs</a></h4>
+<h4 id="docs-13"><a href="#docs-13">Docs</a></h4>
 <ul>
 <li>docs: Remove all references to object (#1500)</li>
 <li>docs(bindings/python): Add building docs (#1526)</li>
 <li>docs(bindings/nodejs): update readme (#1527)</li>
 <li>docs: Add detailed docs for create_dir (#1537)</li>
 </ul>
-<h4 id="ci-13"><a href="#ci-13">CI</a></h4>
+<h4 id="ci-14"><a href="#ci-14">CI</a></h4>
 <ul>
 <li>ci: Don’t run binding tests if only services changes (#1498)</li>
 <li>ci: Improve rocksdb build speed by link dynamic libs (#1502)</li>
 <li>ci: Fix bindings CI not running on PR (#1530)</li>
 <li>ci: Polish scripts and prepare for releasing (#1553)</li>
 </ul>
-<h4 id="chore-9"><a href="#chore-9">Chore</a></h4>
+<h4 id="chore-10"><a href="#chore-10">Chore</a></h4>
 <ul>
 <li>chore: Re-organize the project layout (#1489)</li>
 <li>chore: typo &amp; clippy (#1499)</li>
 <li>chore: typo (#1501)</li>
 <li>chore: Move memcache-async into opendal (#1544)</li>
 </ul>
-<h3 id="v0291---2023-03-05"><a href="#v0291---2023-03-05">v0.29.1 - 2023-03-05</a></h3><h4 id="added-14"><a href="#added-14">Added</a></h4>
+<h3 id="v0291---2023-03-05"><a href="#v0291---2023-03-05">v0.29.1 - 2023-03-05</a></h3><h4 id="added-15"><a href="#added-15">Added</a></h4>
 <ul>
 <li>feat(bindings/python): Add basic IO support (#1464)</li>
 <li>feat(binding/node.js): basic IO (#1416)</li>
 <li>feat(bindings/nodejs): Align to OpenDAL exports (#1466)</li>
 <li>chore(bindings/nodejs): remove duplicate attribute &amp; unused comment (#1478)</li>
 </ul>
-<h4 id="changed-11"><a href="#changed-11">Changed</a></h4>
+<h4 id="changed-12"><a href="#changed-12">Changed</a></h4>
 <ul>
 <li>refactor: Promote operator as a mod for further refactor (#1479)</li>
 </ul>
-<h4 id="docs-13"><a href="#docs-13">Docs</a></h4>
+<h4 id="docs-14"><a href="#docs-14">Docs</a></h4>
 <ul>
 <li>docs: Add convert from m*n to m+n (#1454)</li>
 <li>docs: Polish comments for public types (#1455)</li>
 <li>docs: Add discord chat link (#1474)</li>
 </ul>
-<h4 id="chore-10"><a href="#chore-10">Chore</a></h4>
+<h4 id="chore-11"><a href="#chore-11">Chore</a></h4>
 <ul>
 <li>chore: fix typo (#1456)</li>
 <li>chore: fix typo (#1459)</li>
@@ -754,7 +793,7 @@ version (#2255)</li>
 <li>chore(bindings/nodjes): Don’t check-in binaries (#1469)</li>
 <li>chore(binding/nodejs): specific package manager version with hash (#1470)</li>
 </ul>
-<h3 id="v0290---2023-03-01"><a href="#v0290---2023-03-01">v0.29.0 - 2023-03-01</a></h3><h4 id="added-15"><a href="#added-15">Added</a></h4>
+<h3 id="v0290---2023-03-01"><a href="#v0290---2023-03-01">v0.29.0 - 2023-03-01</a></h3><h4 id="added-16"><a href="#added-16">Added</a></h4>
 <ul>
 <li>RFC-1420: Object Writer (#1420)</li>
 <li>feat: oss backend support http protocol (#1432)</li>
@@ -762,23 +801,23 @@ version (#2255)</li>
 <li>feat/layers/retry: Add Write Retry support (#1447)</li>
 <li>feat: Add Write append tests (#1448)</li>
 </ul>
-<h4 id="changed-12"><a href="#changed-12">Changed</a></h4>
+<h4 id="changed-13"><a href="#changed-13">Changed</a></h4>
 <ul>
 <li>refactor: Decouple decompress read feature from opendal (#1406)</li>
 <li>refactor: Cleanup pager related implementation (#1439)</li>
 <li>refactor: Polish the implement details for Writer (#1445)</li>
 <li>refactor: Remove <code>io::input</code> and Rename <code>io::output</code> to <code>oio</code> (#1446)</li>
 </ul>
-<h4 id="fixed-13"><a href="#fixed-13">Fixed</a></h4>
+<h4 id="fixed-14"><a href="#fixed-14">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Fix part number for AWS S3 (#1450)</li>
 </ul>
-<h4 id="ci-14"><a href="#ci-14">CI</a></h4>
+<h4 id="ci-15"><a href="#ci-15">CI</a></h4>
 <ul>
 <li>ci: Consistently apply license header (#1411)</li>
 <li>ci: add typos check (#1425)</li>
 </ul>
-<h4 id="docs-14"><a href="#docs-14">Docs</a></h4>
+<h4 id="docs-15"><a href="#docs-15">Docs</a></h4>
 <ul>
 <li>docs: Add services-dashmap feature (#1404)</li>
 <li>docs: Fix incorrect indent for title (#1405)</li>
@@ -787,29 +826,29 @@ version (#2255)</li>
 <li>docs: Add tutorial of building a duck storage service (#1410)</li>
 <li>docs: Add a basic object example (#1422)</li>
 </ul>
-<h4 id="chore-11"><a href="#chore-11">Chore</a></h4>
+<h4 id="chore-12"><a href="#chore-12">Chore</a></h4>
 <ul>
 <li>chore: typo fix (#1418)</li>
 <li>chore: Make license check happy (#1423)</li>
 <li>chore: typo-fix (#1434)</li>
 </ul>
-<h3 id="v0280---2023-02-22"><a href="#v0280---2023-02-22">v0.28.0 - 2023-02-22</a></h3><h4 id="added-16"><a href="#added-16">Added</a></h4>
+<h3 id="v0280---2023-02-22"><a href="#v0280---2023-02-22">v0.28.0 - 2023-02-22</a></h3><h4 id="added-17"><a href="#added-17">Added</a></h4>
 <ul>
 <li>feat: add dashmap support (#1390)</li>
 </ul>
-<h4 id="changed-13"><a href="#changed-13">Changed</a></h4>
+<h4 id="changed-14"><a href="#changed-14">Changed</a></h4>
 <ul>
 <li>refactor: Implement query based object metadata cache (#1395)</li>
 <li>refactor: Store complete inside bits and add more examples (#1397)</li>
 <li>refactor: Trigger panic if users try to visit not fetched metadata (#1399)</li>
 <li>refactor: Polish the implement of Query Based Metadata Cache (#1400)</li>
 </ul>
-<h4 id="docs-15"><a href="#docs-15">Docs</a></h4>
+<h4 id="docs-16"><a href="#docs-16">Docs</a></h4>
 <ul>
 <li>RFC-1391: Object Metadataer (#1391)</li>
 <li>RFC-1398: Query Based Metadata (#1398)</li>
 </ul>
-<h3 id="v0272---2023-02-20"><a href="#v0272---2023-02-20">v0.27.2 - 2023-02-20</a></h3><h4 id="added-17"><a href="#added-17">Added</a></h4>
+<h3 id="v0272---2023-02-20"><a href="#v0272---2023-02-20">v0.27.2 - 2023-02-20</a></h3><h4 id="added-18"><a href="#added-18">Added</a></h4>
 <ul>
 <li>feat: Add batch API for Accessor (#1339)</li>
 <li>feat: add Content-Disposition for inner API (#1347)</li>
@@ -821,7 +860,7 @@ version (#2255)</li>
 <li>feat: Integrate batch with existing ecosystem better (#1378)</li>
 <li>feat: Add batch delete support for oss (#1385)</li>
 </ul>
-<h4 id="changed-14"><a href="#changed-14">Changed</a></h4>
+<h4 id="changed-15"><a href="#changed-15">Changed</a></h4>
 <ul>
 <li>refactor: Authorization logic for WebdavBackend (#1348)</li>
 <li>refactor(webhdfs): handle 307 redirection instead of noredirect (#1358)</li>
@@ -829,12 +868,12 @@ version (#2255)</li>
 <li>refactor: Cleanup duplicated code (#1373)</li>
 <li>refactor: Cleanup some not needed error context (#1374)</li>
 </ul>
-<h4 id="docs-16"><a href="#docs-16">Docs</a></h4>
+<h4 id="docs-17"><a href="#docs-17">Docs</a></h4>
 <ul>
 <li>docs: Fix broken links (#1344)</li>
 <li>docs: clarify about opendal user defined client (#1356)</li>
 </ul>
-<h4 id="fixed-14"><a href="#fixed-14">Fixed</a></h4>
+<h4 id="fixed-15"><a href="#fixed-15">Fixed</a></h4>
 <ul>
 <li>fix(webhdfs): should prepend http:// scheme (#1354)</li>
 </ul>
@@ -844,7 +883,7 @@ version (#2255)</li>
 <li>ci: Only run service test on changing (#1363)</li>
 <li>ci: run tests with nextest (#1370)</li>
 </ul>
-<h3 id="v0271---2023-02-13"><a href="#v0271---2023-02-13">v0.27.1 - 2023-02-13</a></h3><h4 id="added-18"><a href="#added-18">Added</a></h4>
+<h3 id="v0271---2023-02-13"><a href="#v0271---2023-02-13">v0.27.1 - 2023-02-13</a></h3><h4 id="added-19"><a href="#added-19">Added</a></h4>
 <ul>
 <li>feat: Add username and password support for WebDAV (#1323)</li>
 <li>ci: Add test case for webdav with basic auth (#1327)</li>
@@ -852,23 +891,23 @@ version (#2255)</li>
 <li>feat: Add scan support for kv adapter (#1333)</li>
 <li>feat: Add scan support for sled (#1334)</li>
 </ul>
-<h4 id="changed-15"><a href="#changed-15">Changed</a></h4>
+<h4 id="changed-16"><a href="#changed-16">Changed</a></h4>
 <ul>
 <li>chore(deps): update moka requirement from 0.9 to 0.10 (#1331)</li>
 <li>chore(deps): update rocksdb requirement from 0.19 to 0.20 (#1332)</li>
 </ul>
-<h4 id="fixed-15"><a href="#fixed-15">Fixed</a></h4>
+<h4 id="fixed-16"><a href="#fixed-16">Fixed</a></h4>
 <ul>
 <li>fix(services/oss,s3): Metadata should be marked as complete (#1335)</li>
 </ul>
-<h3 id="v0270---2023-02-11"><a href="#v0270---2023-02-11">v0.27.0 - 2023-02-11</a></h3><h4 id="added-19"><a href="#added-19">Added</a></h4>
+<h3 id="v0270---2023-02-11"><a href="#v0270---2023-02-11">v0.27.0 - 2023-02-11</a></h3><h4 id="added-20"><a href="#added-20">Added</a></h4>
 <ul>
 <li>feat: Add Retryable Pager Support (#1304)</li>
 <li>feat: Add Sled support (#1305)</li>
 <li>feat: Add Object::scan() support (#1314)</li>
 <li>feat: Add object page size support (#1318)</li>
 </ul>
-<h4 id="changed-16"><a href="#changed-16">Changed</a></h4>
+<h4 id="changed-17"><a href="#changed-17">Changed</a></h4>
 <ul>
 <li>refactor: Hide backon from our public API (#1302)</li>
 <li>refactor: Don’t expose ops structs to users directly (#1303)</li>
@@ -877,87 +916,87 @@ version (#2255)</li>
 <li>deps: remove unused deps (#1321)</li>
 <li>refactor: Extract scan as a new API and remove ListStyle (#1324)</li>
 </ul>
-<h4 id="docs-17"><a href="#docs-17">Docs</a></h4>
+<h4 id="docs-18"><a href="#docs-18">Docs</a></h4>
 <ul>
 <li>docs: Add risingwave in projects (#1322)</li>
 </ul>
-<h4 id="fixed-16"><a href="#fixed-16">Fixed</a></h4>
+<h4 id="fixed-17"><a href="#fixed-17">Fixed</a></h4>
 <ul>
 <li>ci: Fix dev container Dockerfile (#1298)</li>
 <li>fix: Rocksdb’s scheme not output correctly (#1300)</li>
 <li>chore: fix name typo in oss backend (#1316)</li>
 <li>chore: Add typos-cli and fix typos (#1320)</li>
 </ul>
-<h3 id="v0262---2023-02-07"><a href="#v0262---2023-02-07">v0.26.2 - 2023-02-07</a></h3><h4 id="added-20"><a href="#added-20">Added</a></h4>
+<h3 id="v0262---2023-02-07"><a href="#v0262---2023-02-07">v0.26.2 - 2023-02-07</a></h3><h4 id="added-21"><a href="#added-21">Added</a></h4>
 <ul>
 <li>feat: Add ChaosLayer to inject errors into underlying services (#1287)</li>
 <li>feat: Implement retry reader (#1291)</li>
 <li>feat: use std::path::Path for fs backend (#1100)</li>
 <li>feat: Implement services webhdfs (#1263)</li>
 </ul>
-<h4 id="changed-17"><a href="#changed-17">Changed</a></h4>
+<h4 id="changed-18"><a href="#changed-18">Changed</a></h4>
 <ul>
 <li>refactor: Split CompleteReaderLayer from TypeEraserLayer (#1290)</li>
 <li>refactor(services/fs): Remove not needed generic (#1292)</li>
 </ul>
-<h4 id="docs-18"><a href="#docs-18">Docs</a></h4>
+<h4 id="docs-19"><a href="#docs-19">Docs</a></h4>
 <ul>
 <li>docs: fix typo (#1285)</li>
 <li>docs: Polish docs for better reading (#1288)</li>
 </ul>
-<h4 id="fixed-17"><a href="#fixed-17">Fixed</a></h4>
+<h4 id="fixed-18"><a href="#fixed-18">Fixed</a></h4>
 <ul>
 <li>fix: FsBuilder can’t be used with empty root anymore (#1293)</li>
 <li>fix: Fix retry happened in seek’s read ahead logic (#1294)</li>
 </ul>
-<h3 id="v0261---2023-02-05"><a href="#v0261---2023-02-05">v0.26.1 - 2023-02-05</a></h3><h4 id="changed-18"><a href="#changed-18">Changed</a></h4>
+<h3 id="v0261---2023-02-05"><a href="#v0261---2023-02-05">v0.26.1 - 2023-02-05</a></h3><h4 id="changed-19"><a href="#changed-19">Changed</a></h4>
 <ul>
 <li>refactor: Remove not used layer subdir (#1280)</li>
 </ul>
-<h4 id="docs-19"><a href="#docs-19">Docs</a></h4>
+<h4 id="docs-20"><a href="#docs-20">Docs</a></h4>
 <ul>
 <li>docs: Add v0.26 upgrade guide (#1276)</li>
 <li>docs: Add feature sets in services (#1277)</li>
 <li>docs: Migrate all docs in rustdoc instead (#1281)</li>
 <li>docs: Fix index page not redirected (#1282)</li>
 </ul>
-<h3 id="v0260---2023-02-04"><a href="#v0260---2023-02-04">v0.26.0 - 2023-02-04</a></h3><h4 id="added-21"><a href="#added-21">Added</a></h4>
+<h3 id="v0260---2023-02-04"><a href="#v0260---2023-02-04">v0.26.0 - 2023-02-04</a></h3><h4 id="added-22"><a href="#added-22">Added</a></h4>
 <ul>
 <li>feat: Add benchmarks for blocking_seek operations (#1258)</li>
 <li>feat: add dev container (#1261)</li>
 <li>feat: Zero Cost OpenDAL (#1260)</li>
 <li>feat: Allow dynamic dispatch layer (#1273)</li>
 </ul>
-<h4 id="changed-19"><a href="#changed-19">Changed</a></h4>
+<h4 id="changed-20"><a href="#changed-20">Changed</a></h4>
 <ul>
 <li>refactor: remove the duplicated dependency in dev-dependencies (#1257)</li>
 <li>refactor: some code in GitHub Actions (#1269)</li>
 <li>refactor: Don’t expose services mod directly (#1271)</li>
 <li>refactor: Polish Builder API (#1272)</li>
 </ul>
-<h3 id="v0252---2023-01-30"><a href="#v0252---2023-01-30">v0.25.2 - 2023-01-30</a></h3><h4 id="added-22"><a href="#added-22">Added</a></h4>
+<h3 id="v0252---2023-01-30"><a href="#v0252---2023-01-30">v0.25.2 - 2023-01-30</a></h3><h4 id="added-23"><a href="#added-23">Added</a></h4>
 <ul>
 <li>feat: Add basic object_store support (#1243)</li>
 <li>feat: Implement webdav support (#1246)</li>
 <li>feat: Allow passing content_type to OSS presign (#1252)</li>
 <li>feat: Make sure short functions have been inlined (#1253)</li>
 </ul>
-<h4 id="changed-20"><a href="#changed-20">Changed</a></h4>
+<h4 id="changed-21"><a href="#changed-21">Changed</a></h4>
 <ul>
 <li>refacor(services/fs): Make normalized path check optional (#1242)</li>
 </ul>
-<h4 id="docs-20"><a href="#docs-20">Docs</a></h4>
+<h4 id="docs-21"><a href="#docs-21">Docs</a></h4>
 <ul>
 <li>docs(http): remove out-dated comments (#1240)</li>
 <li>docs: Add bindings in README (#1244)</li>
 <li>docs: Add docs for webdav and http services (#1248)</li>
 <li>docs: Add webdav in lib docs (#1249)</li>
 </ul>
-<h4 id="fixed-18"><a href="#fixed-18">Fixed</a></h4>
+<h4 id="fixed-19"><a href="#fixed-19">Fixed</a></h4>
 <ul>
 <li>fix(services/ghac): Fix log message for ghac_upload in write (#1239)</li>
 </ul>
-<h3 id="v0251---2023-01-27"><a href="#v0251---2023-01-27">v0.25.1 - 2023-01-27</a></h3><h4 id="added-23"><a href="#added-23">Added</a></h4>
+<h3 id="v0251---2023-01-27"><a href="#v0251---2023-01-27">v0.25.1 - 2023-01-27</a></h3><h4 id="added-24"><a href="#added-24">Added</a></h4>
 <ul>
 <li>ci: Setup benchmark workflow (#1200)</li>
 <li>feat: Let’s try play with python (#1205)</li>
@@ -966,7 +1005,7 @@ version (#2255)</li>
 <li>ci: Make sure opendal is buildable on windows (#1221)</li>
 <li>ci: Remove not needed audit checks (#1226)</li>
 </ul>
-<h4 id="changed-21"><a href="#changed-21">Changed</a></h4>
+<h4 id="changed-22"><a href="#changed-22">Changed</a></h4>
 <ul>
 <li>refactor: Remove observe read/write (#1202)</li>
 <li>refactor: Remove not used unwind safe feature (#1218)</li>
@@ -974,67 +1013,67 @@ version (#2255)</li>
 <li>cleanup: Move testdata into tests/data (#1228)</li>
 <li>refactor(layers/metrics): Defer initiation of error counters (#1232)</li>
 </ul>
-<h4 id="fixed-19"><a href="#fixed-19">Fixed</a></h4>
+<h4 id="fixed-20"><a href="#fixed-20">Fixed</a></h4>
 <ul>
 <li>fix: Retry for read and write should at ObjectReader level (#1211)</li>
 </ul>
-<h3 id="v0250---2023-01-18"><a href="#v0250---2023-01-18">v0.25.0 - 2023-01-18</a></h3><h4 id="added-24"><a href="#added-24">Added</a></h4>
+<h3 id="v0250---2023-01-18"><a href="#v0250---2023-01-18">v0.25.0 - 2023-01-18</a></h3><h4 id="added-25"><a href="#added-25">Added</a></h4>
 <ul>
 <li>feat: Add dns cache for std dns resolver (#1191)</li>
 <li>feat: Allow setting http client that built from external (#1192)</li>
 <li>feat: Implement BlockingObjectReader (#1194)</li>
 </ul>
-<h4 id="changed-22"><a href="#changed-22">Changed</a></h4>
+<h4 id="changed-23"><a href="#changed-23">Changed</a></h4>
 <ul>
 <li>chore(deps): replace dotenv with dotenvy (#1187)</li>
 <li>refactor: Avoid calling detect region if we know the region (#1188)</li>
 <li>chore: ensure minimal version buildable (#1193)</li>
 </ul>
-<h3 id="v0246---2023-01-12"><a href="#v0246---2023-01-12">v0.24.6 - 2023-01-12</a></h3><h4 id="added-25"><a href="#added-25">Added</a></h4>
+<h3 id="v0246---2023-01-12"><a href="#v0246---2023-01-12">v0.24.6 - 2023-01-12</a></h3><h4 id="added-26"><a href="#added-26">Added</a></h4>
 <ul>
 <li>feat: implement tokio::io::{AsyncRead, AsyncSeek} for ObjectReader (#1175)</li>
 <li>feat(services/hdfs): Evaluating the new async implementation (#1176)</li>
 <li>feat(services/ghac): Handling too many requests error (#1181)</li>
 </ul>
-<h4 id="fixed-20"><a href="#fixed-20">Fixed</a></h4>
+<h4 id="fixed-21"><a href="#fixed-21">Fixed</a></h4>
 <ul>
 <li>doc: fix name change in README (#1179)</li>
 </ul>
-<h3 id="v0245---2023-01-09"><a href="#v0245---2023-01-09">v0.24.5 - 2023-01-09</a></h3><h4 id="fixed-21"><a href="#fixed-21">Fixed</a></h4>
+<h3 id="v0245---2023-01-09"><a href="#v0245---2023-01-09">v0.24.5 - 2023-01-09</a></h3><h4 id="fixed-22"><a href="#fixed-22">Fixed</a></h4>
 <ul>
 <li>fix(services/memcached): TcpStream should only accept host:port (#1170)</li>
 </ul>
-<h3 id="v0244---2023-01-09"><a href="#v0244---2023-01-09">v0.24.4 - 2023-01-09</a></h3><h4 id="added-26"><a href="#added-26">Added</a></h4>
+<h3 id="v0244---2023-01-09"><a href="#v0244---2023-01-09">v0.24.4 - 2023-01-09</a></h3><h4 id="added-27"><a href="#added-27">Added</a></h4>
 <ul>
 <li>feat: Add presign endpoint option for OSS (#1135)</li>
 <li>feat: Reset state while returning error so that we can retry IO (#1166)</li>
 </ul>
-<h4 id="changed-23"><a href="#changed-23">Changed</a></h4>
+<h4 id="changed-24"><a href="#changed-24">Changed</a></h4>
 <ul>
 <li>chore(deps): update base64 requirement from 0.20 to 0.21 (#1164)</li>
 </ul>
-<h4 id="fixed-22"><a href="#fixed-22">Fixed</a></h4>
+<h4 id="fixed-23"><a href="#fixed-23">Fixed</a></h4>
 <ul>
 <li>fix: Memcached can’t work on windows (#1165)</li>
 </ul>
-<h3 id="v0243---2023-01-09"><a href="#v0243---2023-01-09">v0.24.3 - 2023-01-09</a></h3><h4 id="added-27"><a href="#added-27">Added</a></h4>
+<h3 id="v0243---2023-01-09"><a href="#v0243---2023-01-09">v0.24.3 - 2023-01-09</a></h3><h4 id="added-28"><a href="#added-28">Added</a></h4>
 <ul>
 <li>feat: Implement memcached service support (#1161)</li>
 </ul>
-<h3 id="v0242---2023-01-08"><a href="#v0242---2023-01-08">v0.24.2 - 2023-01-08</a></h3><h4 id="changed-24"><a href="#changed-24">Changed</a></h4>
+<h3 id="v0242---2023-01-08"><a href="#v0242---2023-01-08">v0.24.2 - 2023-01-08</a></h3><h4 id="changed-25"><a href="#changed-25">Changed</a></h4>
 <ul>
 <li>refactor: Use dep: to make our features more clean (#1153)</li>
 </ul>
-<h4 id="fixed-23"><a href="#fixed-23">Fixed</a></h4>
+<h4 id="fixed-24"><a href="#fixed-24">Fixed</a></h4>
 <ul>
 <li>fix: ghac shall return ObjectAlreadyExists for writing the same path (#1156)</li>
 <li>fix: futures read_to_end will lead to performance regression (#1158)</li>
 </ul>
-<h3 id="v0241---2023-01-08"><a href="#v0241---2023-01-08">v0.24.1 - 2023-01-08</a></h3><h4 id="fixed-24"><a href="#fixed-24">Fixed</a></h4>
+<h3 id="v0241---2023-01-08"><a href="#v0241---2023-01-08">v0.24.1 - 2023-01-08</a></h3><h4 id="fixed-25"><a href="#fixed-25">Fixed</a></h4>
 <ul>
 <li>fix: Allow range_read to be retired (#1149)</li>
 </ul>
-<h3 id="v0240---2023-01-07"><a href="#v0240---2023-01-07">v0.24.0 - 2023-01-07</a></h3><h4 id="added-28"><a href="#added-28">Added</a></h4>
+<h3 id="v0240---2023-01-07"><a href="#v0240---2023-01-07">v0.24.0 - 2023-01-07</a></h3><h4 id="added-29"><a href="#added-29">Added</a></h4>
 <ul>
 <li>Add support for SAS tokens in Azure blob storage (#1124)</li>
 <li>feat: Add github action cache service support (#1111)</li>
@@ -1042,7 +1081,7 @@ version (#2255)</li>
 <li>feat: Implement offset seekable reader for zero cost read (#1133)</li>
 <li>feat: Implement fuzz test on ObjectReader (#1140)</li>
 </ul>
-<h4 id="changed-25"><a href="#changed-25">Changed</a></h4>
+<h4 id="changed-26"><a href="#changed-26">Changed</a></h4>
 <ul>
 <li>chore(deps): update quick-xml requirement from 0.26 to 0.27 (#1101)</li>
 <li>ci: Enable rust cache for CI (#1107)</li>
@@ -1052,94 +1091,94 @@ version (#2255)</li>
 <li>refactor: Remove open related APIs (#1129)</li>
 <li>refactor: Merge and cleanup io &amp; io_util modules (#1136)</li>
 </ul>
-<h4 id="fixed-25"><a href="#fixed-25">Fixed</a></h4>
+<h4 id="fixed-26"><a href="#fixed-26">Fixed</a></h4>
 <ul>
 <li>ci: Fix build for oay and oli (#1097)</li>
 <li>fix: Fix rustls support for suppaftp (#1102)</li>
 <li>fix(services/ghac): Fix pkg version not used correctly (#1125)</li>
 </ul>
-<h3 id="v0230---2022-12-22"><a href="#v0230---2022-12-22">v0.23.0 - 2022-12-22</a></h3><h4 id="added-29"><a href="#added-29">Added</a></h4>
+<h3 id="v0230---2022-12-22"><a href="#v0230---2022-12-22">v0.23.0 - 2022-12-22</a></h3><h4 id="added-30"><a href="#added-30">Added</a></h4>
 <ul>
 <li>feat: Implement object handler so that we can do seek on file (#1091)</li>
 <li>feat: Implement blocking for hdfs (#1092)</li>
 <li>feat(services/hdfs): Implement open and blocking open (#1093)</li>
 <li>docs: Add mozilla/sccache into projects (#1094)</li>
 </ul>
-<h3 id="v0226---2022-12-20"><a href="#v0226---2022-12-20">v0.22.6 - 2022-12-20</a></h3><h4 id="added-30"><a href="#added-30">Added</a></h4>
+<h3 id="v0226---2022-12-20"><a href="#v0226---2022-12-20">v0.22.6 - 2022-12-20</a></h3><h4 id="added-31"><a href="#added-31">Added</a></h4>
 <ul>
 <li>feat(io): make BlockingBytesRead Send + Sync (#1083)</li>
 <li>feat(fs): skip seek if offset is 0 (#1082)</li>
 <li>RFC-1085: Object Handler (#1085)</li>
 <li>feat(services/s3,gcs): Allow accepting signer directly (#1087)</li>
 </ul>
-<h3 id="v0225---2022-12-13"><a href="#v0225---2022-12-13">v0.22.5 - 2022-12-13</a></h3><h4 id="added-31"><a href="#added-31">Added</a></h4>
+<h3 id="v0225---2022-12-13"><a href="#v0225---2022-12-13">v0.22.5 - 2022-12-13</a></h3><h4 id="added-32"><a href="#added-32">Added</a></h4>
 <ul>
 <li>feat: Add service account support for gcs (#1076)</li>
 </ul>
-<h3 id="v0224---2022-12-13"><a href="#v0224---2022-12-13">v0.22.4 - 2022-12-13</a></h3><h4 id="added-32"><a href="#added-32">Added</a></h4>
+<h3 id="v0224---2022-12-13"><a href="#v0224---2022-12-13">v0.22.4 - 2022-12-13</a></h3><h4 id="added-33"><a href="#added-33">Added</a></h4>
 <ul>
 <li>improve blocking read use read_to_end (#1072)</li>
 <li>feat(services/gcs): Fully implement default credential support (#1073)</li>
 </ul>
-<h4 id="fixed-26"><a href="#fixed-26">Fixed</a></h4>
+<h4 id="fixed-27"><a href="#fixed-27">Fixed</a></h4>
 <ul>
 <li>fix: read a large range without error and add test (#1068)</li>
 <li>fix(services/oss): Enable standard behavior for oss range (#1070)</li>
 </ul>
-<h3 id="v0223---2022-12-11"><a href="#v0223---2022-12-11">v0.22.3 - 2022-12-11</a></h3><h4 id="added-33"><a href="#added-33">Added</a></h4>
+<h3 id="v0223---2022-12-11"><a href="#v0223---2022-12-11">v0.22.3 - 2022-12-11</a></h3><h4 id="added-34"><a href="#added-34">Added</a></h4>
 <ul>
 <li>feat(layers/metrics): Merge error and failure counters together (#1058)</li>
 <li>feat: Set MSRV to 1.60 (#1060)</li>
 <li>feat: Add unwind safe flag for operator (#1061)</li>
 <li>feat(azblob): Add build from connection string support (#1064)</li>
 </ul>
-<h4 id="fixed-27"><a href="#fixed-27">Fixed</a></h4>
+<h4 id="fixed-28"><a href="#fixed-28">Fixed</a></h4>
 <ul>
 <li>fix(services/moka): Don’t print all content in cache (#1057)</li>
 </ul>
-<h3 id="v0222---2022-12-07"><a href="#v0222---2022-12-07">v0.22.2 - 2022-12-07</a></h3><h4 id="added-34"><a href="#added-34">Added</a></h4>
+<h3 id="v0222---2022-12-07"><a href="#v0222---2022-12-07">v0.22.2 - 2022-12-07</a></h3><h4 id="added-35"><a href="#added-35">Added</a></h4>
 <ul>
 <li>feat(presign): support presign head method for s3 and oss (#1049)</li>
 </ul>
-<h3 id="v0221---2022-12-05"><a href="#v0221---2022-12-05">v0.22.1 - 2022-12-05</a></h3><h4 id="fixed-28"><a href="#fixed-28">Fixed</a></h4>
+<h3 id="v0221---2022-12-05"><a href="#v0221---2022-12-05">v0.22.1 - 2022-12-05</a></h3><h4 id="fixed-29"><a href="#fixed-29">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Allow disable loading from imds_v2 and assume_role (#1044)</li>
 </ul>
-<h3 id="v0220---2022-12-05"><a href="#v0220---2022-12-05">v0.22.0 - 2022-12-05</a></h3><h4 id="added-35"><a href="#added-35">Added</a></h4>
+<h3 id="v0220---2022-12-05"><a href="#v0220---2022-12-05">v0.22.0 - 2022-12-05</a></h3><h4 id="added-36"><a href="#added-36">Added</a></h4>
 <ul>
 <li>feat: improve temp file organization when enable atomic write in fs (#1017)</li>
 <li>feat: Allow configure LoggingLayer’s level (#1021)</li>
 <li>feat: Enable users to specify the cache policy (#1024)</li>
 <li>feat: Implement presign for oss (#1035)</li>
 </ul>
-<h4 id="changed-26"><a href="#changed-26">Changed</a></h4>
+<h4 id="changed-27"><a href="#changed-27">Changed</a></h4>
 <ul>
 <li>refactor: Polish error handling of different services (#1018)</li>
 <li>refactor: Merge metadata and content cache together (#1020)</li>
 <li>refactor(layer/cache): Allow users implement cache by themselves (#1040)</li>
 </ul>
-<h4 id="fixed-29"><a href="#fixed-29">Fixed</a></h4>
+<h4 id="fixed-30"><a href="#fixed-30">Fixed</a></h4>
 <ul>
 <li>fix(services/fs): Make sure writing file is truncated (#1036)</li>
 </ul>
-<h3 id="v0212---2022-11-27"><a href="#v0212---2022-11-27">v0.21.2 - 2022-11-27</a></h3><h4 id="added-36"><a href="#added-36">Added</a></h4>
+<h3 id="v0212---2022-11-27"><a href="#v0212---2022-11-27">v0.21.2 - 2022-11-27</a></h3><h4 id="added-37"><a href="#added-37">Added</a></h4>
 <ul>
 <li>feat: Add azdfs support (#1009)</li>
 <li>feat: Set MSRV of opendal to 1.60 (#1012)</li>
 </ul>
-<h4 id="docs-21"><a href="#docs-21">Docs</a></h4>
+<h4 id="docs-22"><a href="#docs-22">Docs</a></h4>
 <ul>
 <li>docs: Fix docs for azdfs service (#1010)</li>
 </ul>
-<h3 id="v0211---2022-11-26"><a href="#v0211---2022-11-26">v0.21.1 - 2022-11-26</a></h3><h4 id="added-37"><a href="#added-37">Added</a></h4>
+<h3 id="v0211---2022-11-26"><a href="#v0211---2022-11-26">v0.21.1 - 2022-11-26</a></h3><h4 id="added-38"><a href="#added-38">Added</a></h4>
 <ul>
 <li>feat: Export ObjectLister as public type (#1006)</li>
 </ul>
-<h4 id="changed-27"><a href="#changed-27">Changed</a></h4>
+<h4 id="changed-28"><a href="#changed-28">Changed</a></h4>
 <ul>
 <li>deps: Remove not used thiserror and num-trait (#1005)</li>
 </ul>
-<h3 id="v0210---2022-11-25"><a href="#v0210---2022-11-25">v0.21.0 - 2022-11-25</a></h3><h4 id="added-38"><a href="#added-38">Added</a></h4>
+<h3 id="v0210---2022-11-25"><a href="#v0210---2022-11-25">v0.21.0 - 2022-11-25</a></h3><h4 id="added-39"><a href="#added-39">Added</a></h4>
 <ul>
 <li>docs: Add greptimedb and mars into projects (#975)</li>
 <li>RFC-0977: Refactor Error (#977)</li>
@@ -1147,7 +1186,7 @@ version (#2255)</li>
 <li>feat: Add OperatorMetadata to avoid expose AccessorMetadata (#997)</li>
 <li>feat: Improve display for error (#1002)</li>
 </ul>
-<h4 id="changed-28"><a href="#changed-28">Changed</a></h4>
+<h4 id="changed-29"><a href="#changed-29">Changed</a></h4>
 <ul>
 <li>refactor: Use separate Error instead of std::io::Error to avoid confusing (#976)</li>
 <li>refactor: Return ReplyCreate for create operation (#981)</li>
@@ -1165,21 +1204,21 @@ version (#2255)</li>
 <li>refactor: Move ObjectEntry and ObjectPage into raw (#999)</li>
 <li>refactor: Accept Operator instead of <code>Arc&lt;dyn Accessor&gt;</code> (#1001)</li>
 </ul>
-<h4 id="fixed-30"><a href="#fixed-30">Fixed</a></h4>
+<h4 id="fixed-31"><a href="#fixed-31">Fixed</a></h4>
 <ul>
 <li>fix: RetryAccessor is too verbose (#980)</li>
 </ul>
-<h3 id="v0201---2022-11-18"><a href="#v0201---2022-11-18">v0.20.1 - 2022-11-18</a></h3><h4 id="added-39"><a href="#added-39">Added</a></h4>
+<h3 id="v0201---2022-11-18"><a href="#v0201---2022-11-18">v0.20.1 - 2022-11-18</a></h3><h4 id="added-40"><a href="#added-40">Added</a></h4>
 <ul>
 <li>feat: Implement blocking operations for cache services (#970)</li>
 </ul>
-<h4 id="fixed-31"><a href="#fixed-31">Fixed</a></h4>
+<h4 id="fixed-32"><a href="#fixed-32">Fixed</a></h4>
 <ul>
 <li>fix: Use std Duration as args instead (#966)</li>
 <li>build: Make opendal buildable on 1.60 (#968)</li>
 <li>fix: Avoid cache missing after write (#971)</li>
 </ul>
-<h3 id="v0200---2022-11-17"><a href="#v0200---2022-11-17">v0.20.0 - 2022-11-17</a></h3><h4 id="added-40"><a href="#added-40">Added</a></h4>
+<h3 id="v0200---2022-11-17"><a href="#v0200---2022-11-17">v0.20.0 - 2022-11-17</a></h3><h4 id="added-41"><a href="#added-41">Added</a></h4>
 <ul>
 <li>RFC-0926: Object Reader (#926)</li>
 <li>feat: Implement Object Reader (#928)</li>
@@ -1196,57 +1235,57 @@ version (#2255)</li>
 <li>feat(layers): Implement fixed content cache (#953)</li>
 <li>feat: Enable default_ttl support for redis (#960)</li>
 </ul>
-<h4 id="changed-29"><a href="#changed-29">Changed</a></h4>
+<h4 id="changed-30"><a href="#changed-30">Changed</a></h4>
 <ul>
 <li>refactor: Return ObjectReader in Accessor::read (#929)</li>
 <li>refactor(oay,oli): drop unnecessary patch.crates-io from <code>Cargo.toml</code></li>
 <li>refactor: Polish bytes range (#950)</li>
 <li>refactor: Use simplified kv adapter instead (#959)</li>
 </ul>
-<h4 id="fixed-32"><a href="#fixed-32">Fixed</a></h4>
+<h4 id="fixed-33"><a href="#fixed-33">Fixed</a></h4>
 <ul>
 <li>fix(ops): Fix suffix range behavior of bytes range (#942)</li>
 <li>fix: Fix cache path not used correctly (#958)</li>
 </ul>
-<h3 id="v0198---2022-11-13"><a href="#v0198---2022-11-13">v0.19.8 - 2022-11-13</a></h3><h4 id="added-41"><a href="#added-41">Added</a></h4>
+<h3 id="v0198---2022-11-13"><a href="#v0198---2022-11-13">v0.19.8 - 2022-11-13</a></h3><h4 id="added-42"><a href="#added-42">Added</a></h4>
 <ul>
 <li>feat(services/moka): Use entry’s bytes as capacity weigher (#914)</li>
 <li>feat: Implement rocksdb service (#913)</li>
 </ul>
-<h4 id="changed-30"><a href="#changed-30">Changed</a></h4>
+<h4 id="changed-31"><a href="#changed-31">Changed</a></h4>
 <ul>
 <li>refactor: Reduce backend builder log level to debug (#907)</li>
 <li>refactor: Remove deprecated features (#920)</li>
 <li>refactor: use moka::sync::SegmentedCache (#921)</li>
 </ul>
-<h4 id="fixed-33"><a href="#fixed-33">Fixed</a></h4>
+<h4 id="fixed-34"><a href="#fixed-34">Fixed</a></h4>
 <ul>
 <li>fix(http): Check already read size before returning (#919)</li>
 </ul>
-<h3 id="v0197---2022-10-31"><a href="#v0197---2022-10-31">v0.19.7 - 2022-10-31</a></h3><h4 id="added-42"><a href="#added-42">Added</a></h4>
+<h3 id="v0197---2022-10-31"><a href="#v0197---2022-10-31">v0.19.7 - 2022-10-31</a></h3><h4 id="added-43"><a href="#added-43">Added</a></h4>
 <ul>
 <li>feat: Implement content type support for stat (#891)</li>
 </ul>
-<h4 id="changed-31"><a href="#changed-31">Changed</a></h4>
+<h4 id="changed-32"><a href="#changed-32">Changed</a></h4>
 <ul>
 <li>refactor(layers/metrics): Holding all metrics handlers to avoid lock (#894)</li>
 <li>refactor(layers/metrics): Only update metrics while dropping readers (#896)</li>
 </ul>
-<h3 id="v0196---2022-10-25"><a href="#v0196---2022-10-25">v0.19.6 - 2022-10-25</a></h3><h4 id="fixed-34"><a href="#fixed-34">Fixed</a></h4>
+<h3 id="v0196---2022-10-25"><a href="#v0196---2022-10-25">v0.19.6 - 2022-10-25</a></h3><h4 id="fixed-35"><a href="#fixed-35">Fixed</a></h4>
 <ul>
 <li>fix: Metrics blocking reader doesn’t handle operation correctly (#887)</li>
 </ul>
-<h3 id="v0195---2022-10-24"><a href="#v0195---2022-10-24">v0.19.5 - 2022-10-24</a></h3><h4 id="added-43"><a href="#added-43">Added</a></h4>
+<h3 id="v0195---2022-10-24"><a href="#v0195---2022-10-24">v0.19.5 - 2022-10-24</a></h3><h4 id="added-44"><a href="#added-44">Added</a></h4>
 <ul>
 <li>feat: add a feature named trust-dns (#879)</li>
 <li>feat: implement write_with (#880)</li>
 <li>feat: <code>content-type</code> configuration (#878)</li>
 </ul>
-<h4 id="fixed-35"><a href="#fixed-35">Fixed</a></h4>
+<h4 id="fixed-36"><a href="#fixed-36">Fixed</a></h4>
 <ul>
 <li>fix: Allow forward layers’ acesser operations to inner (#884)</li>
 </ul>
-<h3 id="v0194---2022-10-15"><a href="#v0194---2022-10-15">v0.19.4 - 2022-10-15</a></h3><h4 id="added-44"><a href="#added-44">Added</a></h4>
+<h3 id="v0194---2022-10-15"><a href="#v0194---2022-10-15">v0.19.4 - 2022-10-15</a></h3><h4 id="added-45"><a href="#added-45">Added</a></h4>
 <ul>
 <li>feat: Improve into_stream by reduce zero byte fill (#864)</li>
 <li>debug: Add log for sync http client (#865)</li>
@@ -1254,16 +1293,16 @@ version (#2255)</li>
 <li>feat: Try to use trust-dns-resolver (#869)</li>
 <li>feat: Add log for dropping reader and streamer (#870)</li>
 </ul>
-<h4 id="changed-32"><a href="#changed-32">Changed</a></h4>
+<h4 id="changed-33"><a href="#changed-33">Changed</a></h4>
 <ul>
 <li>refactor: replace md5 with md-5 (#862)</li>
 <li>refactor: replace the hard code to X_AMZ_BUCKET_REGION constant (#866)</li>
 </ul>
-<h3 id="v0193---2022-10-13"><a href="#v0193---2022-10-13">v0.19.3 - 2022-10-13</a></h3><h4 id="fixed-36"><a href="#fixed-36">Fixed</a></h4>
+<h3 id="v0193---2022-10-13"><a href="#v0193---2022-10-13">v0.19.3 - 2022-10-13</a></h3><h4 id="fixed-37"><a href="#fixed-37">Fixed</a></h4>
 <ul>
 <li>fix: Retry for write is not implemented correctly (#860)</li>
 </ul>
-<h3 id="v0192---2022-10-13"><a href="#v0192---2022-10-13">v0.19.2 - 2022-10-13</a></h3><h4 id="added-45"><a href="#added-45">Added</a></h4>
+<h3 id="v0192---2022-10-13"><a href="#v0192---2022-10-13">v0.19.2 - 2022-10-13</a></h3><h4 id="added-46"><a href="#added-46">Added</a></h4>
 <ul>
 <li>feat(experiment): Allow user to config http connection pool (#843)</li>
 <li>feat: Add concurrent limit layer (#848)</li>
@@ -1271,7 +1310,7 @@ version (#2255)</li>
 <li>feat: Implement service for moka (#852)</li>
 <li>docs: Add docs for moka service and concurrent limit layer (#857)</li>
 </ul>
-<h3 id="v0191---2022-10-11"><a href="#v0191---2022-10-11">v0.19.1 - 2022-10-11</a></h3><h4 id="added-46"><a href="#added-46">Added</a></h4>
+<h3 id="v0191---2022-10-11"><a href="#v0191---2022-10-11">v0.19.1 - 2022-10-11</a></h3><h4 id="added-47"><a href="#added-47">Added</a></h4>
 <ul>
 <li>feat: Allow retry read and write (#826)</li>
 <li>feat: Convert interrupted error to permanent after retry (#827)</li>
@@ -1280,16 +1319,16 @@ version (#2255)</li>
 <li>feat: Bump reqsign to latest version (#837)</li>
 <li>feat(services/s3): Add role_arn and external_id for assume_role (#838)</li>
 </ul>
-<h4 id="changed-33"><a href="#changed-33">Changed</a></h4>
+<h4 id="changed-34"><a href="#changed-34">Changed</a></h4>
 <ul>
 <li>test: accelerate behaviour test <code>test_list_rich_dir</code> (#828)</li>
 </ul>
-<h4 id="fixed-37"><a href="#fixed-37">Fixed</a></h4>
+<h4 id="fixed-38"><a href="#fixed-38">Fixed</a></h4>
 <ul>
 <li>fix: ObjectEntry returned in batch operator doesn’t have correct accessor (#839)</li>
 <li>fix: Accessor in layers not set correctly (#840)</li>
 </ul>
-<h3 id="v0190---2022-10-08"><a href="#v0190---2022-10-08">v0.19.0 - 2022-10-08</a></h3><h4 id="added-47"><a href="#added-47">Added</a></h4>
+<h3 id="v0190---2022-10-08"><a href="#v0190---2022-10-08">v0.19.0 - 2022-10-08</a></h3><h4 id="added-48"><a href="#added-48">Added</a></h4>
 <ul>
 <li>feat: Implement object page stream for services like s3 (#787)</li>
 <li>RFC-0793: Generic KV Services (#793)</li>
@@ -1301,7 +1340,7 @@ version (#2255)</li>
 <li>feat: Add OSS Service Support (#801)</li>
 <li>feat: Add integration tests for OSS (#814)</li>
 </ul>
-<h4 id="changed-34"><a href="#changed-34">Changed</a></h4>
+<h4 id="changed-35"><a href="#changed-35">Changed</a></h4>
 <ul>
 <li>refactor: Move object to mod (#786)</li>
 <li>refactor: Implement azblob dir stream based on ObjectPageStream (#790)</li>
@@ -1311,32 +1350,32 @@ version (#2255)</li>
 <li>refactor: Remove deprecated type aliases (#819)</li>
 <li>test: list rich dir (#820)</li>
 </ul>
-<h4 id="fixed-38"><a href="#fixed-38">Fixed</a></h4>
+<h4 id="fixed-39"><a href="#fixed-39">Fixed</a></h4>
 <ul>
 <li>fix(services/redis): MATCH can’t handle correctly (#803)</li>
 <li>fix: Disable ipfs redirection (#809)</li>
 <li>fix(services/ipfs): Use ipfs files API to copy data (#811)</li>
 <li>fix(services/hdfs): Allow retrying would block (#815)</li>
 </ul>
-<h3 id="v0182---2022-10-01"><a href="#v0182---2022-10-01">v0.18.2 - 2022-10-01</a></h3><h4 id="added-48"><a href="#added-48">Added</a></h4>
+<h3 id="v0182---2022-10-01"><a href="#v0182---2022-10-01">v0.18.2 - 2022-10-01</a></h3><h4 id="added-49"><a href="#added-49">Added</a></h4>
 <ul>
 <li>feat: Enable retry layer by default (#781)</li>
 </ul>
-<h4 id="changed-35"><a href="#changed-35">Changed</a></h4>
+<h4 id="changed-36"><a href="#changed-36">Changed</a></h4>
 <ul>
 <li>ci: Enable IPFS NoFecth to avoid networking timeout (#780)</li>
 <li>ci: Build all feature in release to prevent build failure under release profile (#783)</li>
 </ul>
-<h4 id="fixed-39"><a href="#fixed-39">Fixed</a></h4>
+<h4 id="fixed-40"><a href="#fixed-40">Fixed</a></h4>
 <ul>
 <li>fix: Fix build error under release profile (#782)</li>
 </ul>
-<h3 id="v0181---2022-10-01"><a href="#v0181---2022-10-01">v0.18.1 - 2022-10-01</a></h3><h4 id="fixed-40"><a href="#fixed-40">Fixed</a></h4>
+<h3 id="v0181---2022-10-01"><a href="#v0181---2022-10-01">v0.18.1 - 2022-10-01</a></h3><h4 id="fixed-41"><a href="#fixed-41">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Content MD5 not set during list (#775)</li>
 <li>test: Add a test for ObjectEntry metadata cache (#776)</li>
 </ul>
-<h3 id="v0180---2022-10-01"><a href="#v0180---2022-10-01">v0.18.0 - 2022-10-01</a></h3><h4 id="added-49"><a href="#added-49">Added</a></h4>
+<h3 id="v0180---2022-10-01"><a href="#v0180---2022-10-01">v0.18.0 - 2022-10-01</a></h3><h4 id="added-50"><a href="#added-50">Added</a></h4>
 <ul>
 <li>feat: Add Metadata Cache Layer (#739)</li>
 <li>feat: Bump reqsign version to 0.5 (#741)</li>
@@ -1349,28 +1388,28 @@ version (#2255)</li>
 <li>feat: Implement cached metadata for ObjectEntry (#761)</li>
 <li>feat: Assign unique name for memory backend (#769)</li>
 </ul>
-<h4 id="changed-36"><a href="#changed-36">Changed</a></h4>
+<h4 id="changed-37"><a href="#changed-37">Changed</a></h4>
 <ul>
 <li>refactor: replace error::other with new_other_object_error (#738)</li>
 <li>chore(compress): log with trace level instead of debug. (#752)</li>
 <li>refactor: Rename DirXxxx to ObjectXxxx instead (#759)</li>
 </ul>
-<h4 id="fixed-41"><a href="#fixed-41">Fixed</a></h4>
+<h4 id="fixed-42"><a href="#fixed-42">Fixed</a></h4>
 <ul>
 <li>fix(http_util): Disable auto compress and enable http proxy (#731)</li>
 <li>deps: Fix build after bump deps of oli and oay (#766)</li>
 </ul>
-<h3 id="v0174---2022-09-27"><a href="#v0174---2022-09-27">v0.17.4 - 2022-09-27</a></h3><h4 id="fixed-42"><a href="#fixed-42">Fixed</a></h4>
+<h3 id="v0174---2022-09-27"><a href="#v0174---2022-09-27">v0.17.4 - 2022-09-27</a></h3><h4 id="fixed-43"><a href="#fixed-43">Fixed</a></h4>
 <ul>
 <li>fix(http_util): Allow retry more errors (#724)</li>
 <li>fix(services/ftp): Suffix endpoints with default port (#726)</li>
 </ul>
-<h3 id="v0173---2022-09-26"><a href="#v0173---2022-09-26">v0.17.3 - 2022-09-26</a></h3><h4 id="added-50"><a href="#added-50">Added</a></h4>
+<h3 id="v0173---2022-09-26"><a href="#v0173---2022-09-26">v0.17.3 - 2022-09-26</a></h3><h4 id="added-51"><a href="#added-51">Added</a></h4>
 <ul>
 <li>feat: Add SubdirLayer to allowing switch directory (#718)</li>
 <li>feat(layers/retry): Add warning log while retry happened (#721)</li>
 </ul>
-<h4 id="fixed-43"><a href="#fixed-43">Fixed</a></h4>
+<h4 id="fixed-44"><a href="#fixed-44">Fixed</a></h4>
 <ul>
 <li>fix: update metrics on result (#716)</li>
 <li>fix: SubdirLayer should handle dir correctly (#720)</li>
@@ -1380,33 +1419,33 @@ version (#2255)</li>
 <li>feat: implement basic cp command (#688)</li>
 <li>chore: also parse ‘FTPS’ to Scheme::Ftp (#704)</li>
 </ul>
-<h4 id="changed-37"><a href="#changed-37">Changed</a></h4>
+<h4 id="changed-38"><a href="#changed-38">Changed</a></h4>
 <ul>
 <li>refactor: remove <code>enable_secure</code> in FTP service (#709)</li>
 <li>oli: refactor copy implementation (#710)</li>
 </ul>
-<h4 id="fixed-44"><a href="#fixed-44">Fixed</a></h4>
+<h4 id="fixed-45"><a href="#fixed-45">Fixed</a></h4>
 <ul>
 <li>fix: Handle slash normalized false positives properly (#702)</li>
 <li>fix: Tracing is too verbose (#707)</li>
 <li>chore: fix error message in ftp service (#705)</li>
 </ul>
-<h3 id="v0171---2022-09-19"><a href="#v0171---2022-09-19">v0.17.1 - 2022-09-19</a></h3><h4 id="added-51"><a href="#added-51">Added</a></h4>
+<h3 id="v0171---2022-09-19"><a href="#v0171---2022-09-19">v0.17.1 - 2022-09-19</a></h3><h4 id="added-52"><a href="#added-52">Added</a></h4>
 <ul>
 <li>feat: redis service implement (#679)</li>
 <li>feat: Implement AsyncBufRead for IntoReader (#690)</li>
 <li>feat: expose security token of s3 (#693)</li>
 </ul>
-<h4 id="changed-38"><a href="#changed-38">Changed</a></h4>
+<h4 id="changed-39"><a href="#changed-39">Changed</a></h4>
 <ul>
 <li>refactor: avoid unnecessary parent creating in Redis service (#692)</li>
 <li>refactor: Refactor HTTP Client to split sending and incoming logic (#695)</li>
 </ul>
-<h4 id="fixed-45"><a href="#fixed-45">Fixed</a></h4>
+<h4 id="fixed-46"><a href="#fixed-46">Fixed</a></h4>
 <ul>
 <li>fix: Handle write data in async way for IPMFS (#694)</li>
 </ul>
-<h3 id="v0170---2022-09-15"><a href="#v0170---2022-09-15">v0.17.0 - 2022-09-15</a></h3><h4 id="added-52"><a href="#added-52">Added</a></h4>
+<h3 id="v0170---2022-09-15"><a href="#v0170---2022-09-15">v0.17.0 - 2022-09-15</a></h3><h4 id="added-53"><a href="#added-53">Added</a></h4>
 <ul>
 <li>RFC: Path In Accessor (#661)</li>
 <li>feat: Implement RFC-0661: Path In Accessor (#664)</li>
@@ -1414,13 +1453,13 @@ version (#2255)</li>
 <li>feat: make rustls the default tls implementation (#674)</li>
 <li>feat: Implement benches for layers (#681)</li>
 </ul>
-<h4 id="docs-22"><a href="#docs-22">Docs</a></h4>
+<h4 id="docs-23"><a href="#docs-23">Docs</a></h4>
 <ul>
 <li>docs: Add how to implement service docs (#665)</li>
 <li>refactor: update redis support rfc (#676)</li>
 <li>docs: update metrics documentation (#684)</li>
 </ul>
-<h4 id="fixed-46"><a href="#fixed-46">Fixed</a></h4>
+<h4 id="fixed-47"><a href="#fixed-47">Fixed</a></h4>
 <ul>
 <li>fix: Immutable Index Layer could return duplicated paths (#671)</li>
 <li>fix: Remove not needed type parameter for immutable_layer (#677)</li>
@@ -1428,7 +1467,7 @@ version (#2255)</li>
 <li>fix: List non-exist dir should return empty (#683)</li>
 <li>fix: Add path validation for fs backend (#685)</li>
 </ul>
-<h3 id="v0160---2022-09-12"><a href="#v0160---2022-09-12">v0.16.0 - 2022-09-12</a></h3><h4 id="added-53"><a href="#added-53">Added</a></h4>
+<h3 id="v0160---2022-09-12"><a href="#v0160---2022-09-12">v0.16.0 - 2022-09-12</a></h3><h4 id="added-54"><a href="#added-54">Added</a></h4>
 <ul>
 <li>feat: Implement tests for read-only services (#634)</li>
 <li>feat(services/ftp): Implemented multi connection (#637)</li>
@@ -1438,7 +1477,7 @@ version (#2255)</li>
 <li>feat: derive Hash for Scheme (#653)</li>
 <li>feat(services/ftp): Setup integration tests (#648)</li>
 </ul>
-<h4 id="changed-39"><a href="#changed-39">Changed</a></h4>
+<h4 id="changed-40"><a href="#changed-40">Changed</a></h4>
 <ul>
 <li>refactor: Migrate all behavior tests to capability based (#635)</li>
 <li>refactor: Remove list support from http service (#639)</li>
@@ -1451,7 +1490,7 @@ version (#2255)</li>
 <li>chore(deps): Update criterion requirement from 0.3 to 0.4 (#656)</li>
 <li>chore(deps): Update quick-xml requirement from 0.24 to 0.25 (#657)</li>
 </ul>
-<h4 id="docs-23"><a href="#docs-23">Docs</a></h4>
+<h4 id="docs-24"><a href="#docs-24">Docs</a></h4>
 <ul>
 <li>docs: Add docs for ipfs (#649)</li>
 <li>docs: Fix typo (#650)</li>
@@ -1461,7 +1500,7 @@ version (#2255)</li>
 <ul>
 <li>RFC-0623: Redis Service (#623)</li>
 </ul>
-<h3 id="v0150---2022-09-05"><a href="#v0150---2022-09-05">v0.15.0 - 2022-09-05</a></h3><h4 id="added-54"><a href="#added-54">Added</a></h4>
+<h3 id="v0150---2022-09-05"><a href="#v0150---2022-09-05">v0.15.0 - 2022-09-05</a></h3><h4 id="added-55"><a href="#added-55">Added</a></h4>
 <ul>
 <li>RFC-0599: Blocking API (#599)</li>
 <li>feat: Add blocking API in Accessor (#604)</li>
@@ -1472,27 +1511,27 @@ version (#2255)</li>
 <li>feat: implemented ftp backend (#581)</li>
 <li>RFC-0627: Split Capabilities (#627)</li>
 </ul>
-<h4 id="changed-40"><a href="#changed-40">Changed</a></h4>
+<h4 id="changed-41"><a href="#changed-41">Changed</a></h4>
 <ul>
 <li>refactor: Extrace normalize_root functions (#619)</li>
 <li>refactor: Extrace build_abs_path and build_rooted_abs_path (#620)</li>
 <li>refactor: Extract build_rel_path (#621)</li>
 <li>feat: Rename ipfs to ipmfs to better reflect its naming (#629)</li>
 </ul>
-<h3 id="v0141---2022-08-30"><a href="#v0141---2022-08-30">v0.14.1 - 2022-08-30</a></h3><h4 id="added-55"><a href="#added-55">Added</a></h4>
+<h3 id="v0141---2022-08-30"><a href="#v0141---2022-08-30">v0.14.1 - 2022-08-30</a></h3><h4 id="added-56"><a href="#added-56">Added</a></h4>
 <ul>
 <li>feat: Add IPFS backend (#481)</li>
 <li>refactor: IPFS service cleanup (#590)</li>
 </ul>
-<h4 id="docs-24"><a href="#docs-24">Docs</a></h4>
+<h4 id="docs-25"><a href="#docs-25">Docs</a></h4>
 <ul>
 <li>docs: Add obs in OpenDAL lib docs (#585)</li>
 </ul>
-<h4 id="fixed-47"><a href="#fixed-47">Fixed</a></h4>
+<h4 id="fixed-48"><a href="#fixed-48">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): If input range is <code>0..</code>, don’t insert range header (#592)</li>
 </ul>
-<h3 id="v0140---2022-08-28"><a href="#v0140---2022-08-28">v0.14.0 - 2022-08-28</a></h3><h4 id="added-56"><a href="#added-56">Added</a></h4>
+<h3 id="v0140---2022-08-28"><a href="#v0140---2022-08-28">v0.14.0 - 2022-08-28</a></h3><h4 id="added-57"><a href="#added-57">Added</a></h4>
 <ul>
 <li>RFC-0554: Write Refactor (#554)</li>
 <li>feat: Implement huaweicloud obs service other op support (#557)</li>
@@ -1506,7 +1545,7 @@ version (#2255)</li>
 <li>feat: List metadata reuse (#577)</li>
 <li>feat: Implement integration test for obs (#572)</li>
 </ul>
-<h4 id="changed-41"><a href="#changed-41">Changed</a></h4>
+<h4 id="changed-42"><a href="#changed-42">Changed</a></h4>
 <ul>
 <li>refactor(ops): Promote ops as a parent mod (#553)</li>
 <li>refactor: Implement RFC-0554 Write Refactor (#556)</li>
@@ -1518,22 +1557,22 @@ version (#2255)</li>
 <ul>
 <li>refactor: Remove deprecated APIs (#582)</li>
 </ul>
-<h4 id="docs-25"><a href="#docs-25">Docs</a></h4>
+<h4 id="docs-26"><a href="#docs-26">Docs</a></h4>
 <ul>
 <li>docs: Add docs for obs service (#579)</li>
 </ul>
-<h3 id="v0131---2022-08-22"><a href="#v0131---2022-08-22">v0.13.1 - 2022-08-22</a></h3><h4 id="added-57"><a href="#added-57">Added</a></h4>
+<h3 id="v0131---2022-08-22"><a href="#v0131---2022-08-22">v0.13.1 - 2022-08-22</a></h3><h4 id="added-58"><a href="#added-58">Added</a></h4>
 <ul>
 <li>feat: Add walk for BatchOperator (#543)</li>
 <li>feat: Mark Scheme non_exhaustive and extendable (#544)</li>
 <li>feat: Try to limit the max_connections for http client (#545)</li>
 <li>feat: Implement huaweicloud obs service read support (#540)</li>
 </ul>
-<h4 id="docs-26"><a href="#docs-26">Docs</a></h4>
+<h4 id="docs-27"><a href="#docs-27">Docs</a></h4>
 <ul>
 <li>docs: Fix gcs is missing from index (#546)</li>
 </ul>
-<h3 id="v0130---2022-08-17"><a href="#v0130---2022-08-17">v0.13.0 - 2022-08-17</a></h3><h4 id="added-58"><a href="#added-58">Added</a></h4>
+<h3 id="v0130---2022-08-17"><a href="#v0130---2022-08-17">v0.13.0 - 2022-08-17</a></h3><h4 id="added-59"><a href="#added-59">Added</a></h4>
 <ul>
 <li>feat: Refactor metrics and hide under feature layers-metrics (#521)</li>
 <li>feat(layer): Add TracingLayer support (#523)</li>
@@ -1543,20 +1582,20 @@ version (#2255)</li>
 <li>docs: Add docs for new layers (#534)</li>
 <li>docs: Add docs for gcs backend (#535)</li>
 </ul>
-<h4 id="changed-42"><a href="#changed-42">Changed</a></h4>
+<h4 id="changed-43"><a href="#changed-43">Changed</a></h4>
 <ul>
 <li>refactor: Rewrite retry layer support (#522)</li>
 </ul>
-<h4 id="fixed-48"><a href="#fixed-48">Fixed</a></h4>
+<h4 id="fixed-49"><a href="#fixed-49">Fixed</a></h4>
 <ul>
 <li>fix: Make ProtocolViolation a retryable error (#528)</li>
 </ul>
-<h3 id="v0120---2022-08-12"><a href="#v0120---2022-08-12">v0.12.0 - 2022-08-12</a></h3><h4 id="added-59"><a href="#added-59">Added</a></h4>
+<h3 id="v0120---2022-08-12"><a href="#v0120---2022-08-12">v0.12.0 - 2022-08-12</a></h3><h4 id="added-60"><a href="#added-60">Added</a></h4>
 <ul>
 <li>RFC-0501: New Builder (#501)</li>
 <li>feat: Implement RFC-0501 New Builder (#510)</li>
 </ul>
-<h4 id="changed-43"><a href="#changed-43">Changed</a></h4>
+<h4 id="changed-44"><a href="#changed-44">Changed</a></h4>
 <ul>
 <li>feat: Use isahc to replace hyper (#471)</li>
 <li>refactor: make parse http error code public (#511)</li>
@@ -1567,30 +1606,30 @@ version (#2255)</li>
 <ul>
 <li>refactor: Remove deprecated struct Metadata (#503)</li>
 </ul>
-<h3 id="v0114---2022-08-02"><a href="#v0114---2022-08-02">v0.11.4 - 2022-08-02</a></h3><h4 id="added-60"><a href="#added-60">Added</a></h4>
+<h3 id="v0114---2022-08-02"><a href="#v0114---2022-08-02">v0.11.4 - 2022-08-02</a></h3><h4 id="added-61"><a href="#added-61">Added</a></h4>
 <ul>
 <li>feat: Support using rustls for TLS (#491)</li>
 </ul>
-<h4 id="changed-44"><a href="#changed-44">Changed</a></h4>
+<h4 id="changed-45"><a href="#changed-45">Changed</a></h4>
 <ul>
 <li>feat: try to support epoll (#478)</li>
 <li>deps: Lower the requirement of deps (#495)</li>
 <li>Revert “feat: try to support epoll” (#496)</li>
 </ul>
-<h4 id="fixed-49"><a href="#fixed-49">Fixed</a></h4>
+<h4 id="fixed-50"><a href="#fixed-50">Fixed</a></h4>
 <ul>
 <li>fix: Uri encode continuation-token before signing (#494)</li>
 </ul>
-<h4 id="docs-27"><a href="#docs-27">Docs</a></h4>
+<h4 id="docs-28"><a href="#docs-28">Docs</a></h4>
 <ul>
 <li>docs: Add downloads in README (#485)</li>
 <li>docs: Update slogan for OpenDAL (#486)</li>
 </ul>
-<h3 id="v0113---2022-07-26"><a href="#v0113---2022-07-26">v0.11.3 - 2022-07-26</a></h3><h4 id="changed-45"><a href="#changed-45">Changed</a></h4>
+<h3 id="v0113---2022-07-26"><a href="#v0113---2022-07-26">v0.11.3 - 2022-07-26</a></h3><h4 id="changed-46"><a href="#changed-46">Changed</a></h4>
 <ul>
 <li>build: Remove not used features (#472)</li>
 </ul>
-<h4 id="fixed-50"><a href="#fixed-50">Fixed</a></h4>
+<h4 id="fixed-51"><a href="#fixed-51">Fixed</a></h4>
 <ul>
 <li>fix: Disable connection pool as workaround for async runtime hang (#474)</li>
 </ul>
@@ -1601,12 +1640,12 @@ version (#2255)</li>
 <li>chore(deps): Update metrics requirement from 0.19.0 to 0.20.0 (#462)</li>
 <li>chore(deps): Bump tokio from 1.20.0 to 1.20.1 in /oay (#468)</li>
 </ul>
-<h3 id="v0112---2022-07-19"><a href="#v0112---2022-07-19">v0.11.2 - 2022-07-19</a></h3><h4 id="fixed-51"><a href="#fixed-51">Fixed</a></h4>
+<h3 id="v0112---2022-07-19"><a href="#v0112---2022-07-19">v0.11.2 - 2022-07-19</a></h3><h4 id="fixed-52"><a href="#fixed-52">Fixed</a></h4>
 <ul>
 <li>fix: Service HTTP deosn’t handle dir correctly (#455)</li>
 <li>fix: Service HTTP inserted with wrong key (#457)</li>
 </ul>
-<h3 id="v0111---2022-07-19"><a href="#v0111---2022-07-19">v0.11.1 - 2022-07-19</a></h3><h4 id="added-61"><a href="#added-61">Added</a></h4>
+<h3 id="v0111---2022-07-19"><a href="#v0111---2022-07-19">v0.11.1 - 2022-07-19</a></h3><h4 id="added-62"><a href="#added-62">Added</a></h4>
 <ul>
 <li>RFC-0438: Multipart (#438)</li>
 <li>RFC-0443: Gateway (#443)</li>
@@ -1615,7 +1654,7 @@ version (#2255)</li>
 <li>feat(oay): Implement range support (#450)</li>
 <li>feat(services-http): Implement write and delete for testing (#451)</li>
 </ul>
-<h3 id="v0110---2022-07-11"><a href="#v0110---2022-07-11">v0.11.0 - 2022-07-11</a></h3><h4 id="added-62"><a href="#added-62">Added</a></h4>
+<h3 id="v0110---2022-07-11"><a href="#v0110---2022-07-11">v0.11.0 - 2022-07-11</a></h3><h4 id="added-63"><a href="#added-63">Added</a></h4>
 <ul>
 <li>feat: derive Deserialize/Serialize for ObjectMetaData (#420)</li>
 <li>RFC-0423: Command Line Interface (#423)</li>
@@ -1625,18 +1664,18 @@ version (#2255)</li>
 <li>feat: Implement RFC-0429 Init From Iter (#432)</li>
 <li>feat(oli): Add cp command layout (#428)</li>
 </ul>
-<h4 id="docs-28"><a href="#docs-28">Docs</a></h4>
+<h4 id="docs-29"><a href="#docs-29">Docs</a></h4>
 <ul>
 <li>docs: Update description of OpenDAL (#434)</li>
 </ul>
-<h3 id="v0100---2022-07-04"><a href="#v0100---2022-07-04">v0.10.0 - 2022-07-04</a></h3><h4 id="added-63"><a href="#added-63">Added</a></h4>
+<h3 id="v0100---2022-07-04"><a href="#v0100---2022-07-04">v0.10.0 - 2022-07-04</a></h3><h4 id="added-64"><a href="#added-64">Added</a></h4>
 <ul>
 <li>RFC-0409: Accessor Capabilities (#409)</li>
 <li>feat: Implement RFC-0409 Accessor Capabilities (#411)</li>
 <li>RFC-0413: Presign (#413)</li>
 <li>feat: Implement presign support for s3 (#414)</li>
 </ul>
-<h4 id="docs-29"><a href="#docs-29">Docs</a></h4>
+<h4 id="docs-30"><a href="#docs-30">Docs</a></h4>
 <ul>
 <li>docs: Add new RFCs in list (#415)</li>
 </ul>
@@ -1644,12 +1683,12 @@ version (#2255)</li>
 <ul>
 <li>chore(deps): Update reqsign requirement from 0.1.1 to 0.2.0 (#412)</li>
 </ul>
-<h3 id="v091---2022-06-27"><a href="#v091---2022-06-27">v0.9.1 - 2022-06-27</a></h3><h4 id="added-64"><a href="#added-64">Added</a></h4>
+<h3 id="v091---2022-06-27"><a href="#v091---2022-06-27">v0.9.1 - 2022-06-27</a></h3><h4 id="added-65"><a href="#added-65">Added</a></h4>
 <ul>
 <li>feat(object): Add ETag support (#381)</li>
 <li>feat: Convert retryable hyper errors into Interrupted (#396)</li>
 </ul>
-<h4 id="changed-46"><a href="#changed-46">Changed</a></h4>
+<h4 id="changed-47"><a href="#changed-47">Changed</a></h4>
 <ul>
 <li>build: Exclude docs from publish (#383)</li>
 <li>ci: Don’t run CI on not needed push (#395)</li>
@@ -1660,33 +1699,33 @@ version (#2255)</li>
 <li>chore(deps): Update size requirement from 0.1.2 to 0.2.0 (#385)</li>
 <li>Upgrade dev-dependency <code>size</code> to 0.4 (#392)</li>
 </ul>
-<h4 id="fixed-52"><a href="#fixed-52">Fixed</a></h4>
+<h4 id="fixed-53"><a href="#fixed-53">Fixed</a></h4>
 <ul>
 <li>fix: Special chars not handled correctly (#398)</li>
 </ul>
-<h3 id="v090---2022-06-14"><a href="#v090---2022-06-14">v0.9.0 - 2022-06-14</a></h3><h4 id="added-65"><a href="#added-65">Added</a></h4>
+<h3 id="v090---2022-06-14"><a href="#v090---2022-06-14">v0.9.0 - 2022-06-14</a></h3><h4 id="added-66"><a href="#added-66">Added</a></h4>
 <ul>
 <li>feat: Implement http service support (#368)</li>
 <li>feat: Add http_header to handle HTTP header parse (#369)</li>
 <li>feat(services/s3): Add virtual host API style support (#374)</li>
 </ul>
-<h4 id="changed-47"><a href="#changed-47">Changed</a></h4>
+<h4 id="changed-48"><a href="#changed-48">Changed</a></h4>
 <ul>
 <li>refactor: Use the same http client across project (#364)</li>
 <li>refactor(services/{s3,azblob}): Make sure error response parsed correctly and safely (#375)</li>
 </ul>
-<h4 id="docs-30"><a href="#docs-30">Docs</a></h4>
+<h4 id="docs-31"><a href="#docs-31">Docs</a></h4>
 <ul>
 <li>docs: Add concepts for Accessor, Operator and Object (#354)</li>
 <li>docs: Aad docs for batch operations (#363)</li>
 </ul>
-<h3 id="v080---2022-06-09"><a href="#v080---2022-06-09">v0.8.0 - 2022-06-09</a></h3><h4 id="added-66"><a href="#added-66">Added</a></h4>
+<h3 id="v080---2022-06-09"><a href="#v080---2022-06-09">v0.8.0 - 2022-06-09</a></h3><h4 id="added-67"><a href="#added-67">Added</a></h4>
 <ul>
 <li>RFC-0337: Dir Entry (#337)</li>
 <li>feat: Implement RFC-0337: Dir Entry (#342)</li>
 <li>feat: Add batch operation support (#346)</li>
 </ul>
-<h4 id="changed-48"><a href="#changed-48">Changed</a></h4>
+<h4 id="changed-49"><a href="#changed-49">Changed</a></h4>
 <ul>
 <li>refactor: Rename Metadata to ObjectMetadata for clarify (#339)</li>
 </ul>
@@ -1695,12 +1734,12 @@ version (#2255)</li>
 <li>chore(deps): Bump actions/setup-python from 3 to 4 (#343)</li>
 <li>chore(deps): Bump amondnet/vercel-action from 20 to 25 (#344)</li>
 </ul>
-<h3 id="v073---2022-06-03"><a href="#v073---2022-06-03">v0.7.3 - 2022-06-03</a></h3><h4 id="fixed-53"><a href="#fixed-53">Fixed</a></h4>
+<h3 id="v073---2022-06-03"><a href="#v073---2022-06-03">v0.7.3 - 2022-06-03</a></h3><h4 id="fixed-54"><a href="#fixed-54">Fixed</a></h4>
 <ul>
 <li>fix(services/s3,hdfs): List empty dir should not return itself (#327)</li>
 <li>fix(services/hdfs): Root path not cleaned correctly (#330)</li>
 </ul>
-<h3 id="v072---2022-06-01"><a href="#v072---2022-06-01">v0.7.2 - 2022-06-01</a></h3><h4 id="added-67"><a href="#added-67">Added</a></h4>
+<h3 id="v072---2022-06-01"><a href="#v072---2022-06-01">v0.7.2 - 2022-06-01</a></h3><h4 id="added-68"><a href="#added-68">Added</a></h4>
 <ul>
 <li>feat(io_util): Improve debug logging for compress (#310)</li>
 <li>feat(services/s3): Add disable_credential_loader support (#317)</li>
@@ -1709,23 +1748,23 @@ version (#2255)</li>
 <li>feat: Add name to object metadata (#304)</li>
 <li>fix(io_util/compress): Fix decoder’s buf not all consumed (#323)</li>
 </ul>
-<h4 id="changed-49"><a href="#changed-49">Changed</a></h4>
+<h4 id="changed-50"><a href="#changed-50">Changed</a></h4>
 <ul>
 <li>chore(deps): Update metrics requirement from 0.18.1 to 0.19.0 (#314)</li>
 <li>docs: Update README to reflect current status (#321)</li>
 <li>refactor(object): Make Metadata::name() return &amp;str (#322)</li>
 </ul>
-<h4 id="fixed-54"><a href="#fixed-54">Fixed</a></h4>
+<h4 id="fixed-55"><a href="#fixed-55">Fixed</a></h4>
 <ul>
 <li>docs: Fix typo in examples (#320)</li>
 <li>fix(services): Don’t throw error message for stat operation (#324)</li>
 </ul>
-<h3 id="v071---2022-05-29"><a href="#v071---2022-05-29">v0.7.1 - 2022-05-29</a></h3><h4 id="fixed-55"><a href="#fixed-55">Fixed</a></h4>
+<h3 id="v071---2022-05-29"><a href="#v071---2022-05-29">v0.7.1 - 2022-05-29</a></h3><h4 id="fixed-56"><a href="#fixed-56">Fixed</a></h4>
 <ul>
 <li>publish: Fix git version not allowed (#306)</li>
 <li>fix(io_util/compress): Decompress read exit too early (#308)</li>
 </ul>
-<h3 id="v070---2022-05-29"><a href="#v070---2022-05-29">v0.7.0 - 2022-05-29</a></h3><h4 id="added-68"><a href="#added-68">Added</a></h4>
+<h3 id="v070---2022-05-29"><a href="#v070---2022-05-29">v0.7.0 - 2022-05-29</a></h3><h4 id="added-69"><a href="#added-69">Added</a></h4>
 <ul>
 <li>feat: Add support for blocking decompress_read (#289)</li>
 <li>feat: Add check for operator (#290)</li>
@@ -1734,32 +1773,32 @@ version (#2255)</li>
 <li>feat: Implement operator metadata support (#296)</li>
 <li>feat: Implement RFC-0293 Object ID (#298)</li>
 </ul>
-<h4 id="changed-50"><a href="#changed-50">Changed</a></h4>
+<h4 id="changed-51"><a href="#changed-51">Changed</a></h4>
 <ul>
 <li>chore(deps): Update quick-xml requirement from 0.22.0 to 0.23.0 (#286)</li>
 <li>feat(io_util): Refactor decompress decoder (#302)</li>
 <li>ci: Adopt amondnet/vercel-action (#303)</li>
 </ul>
-<h4 id="fixed-56"><a href="#fixed-56">Fixed</a></h4>
+<h4 id="fixed-57"><a href="#fixed-57">Fixed</a></h4>
 <ul>
 <li>fix(services/aws): Increase retry times for AWS STS (#299)</li>
 </ul>
-<h3 id="v063---2022-05-25"><a href="#v063---2022-05-25">v0.6.3 - 2022-05-25</a></h3><h4 id="added-69"><a href="#added-69">Added</a></h4>
+<h3 id="v063---2022-05-25"><a href="#v063---2022-05-25">v0.6.3 - 2022-05-25</a></h3><h4 id="added-70"><a href="#added-70">Added</a></h4>
 <ul>
 <li>ci: Add all issues into databend-storage project (#277)</li>
 <li>feat(services/s3): Add retry in load_credential (#281)</li>
 <li>feat(services): Allow endpoint has trailing slash (#282)</li>
 <li>feat(services): Attach more context in error messages (#283)</li>
 </ul>
-<h3 id="v062---2022-05-12"><a href="#v062---2022-05-12">v0.6.2 - 2022-05-12</a></h3><h4 id="fixed-57"><a href="#fixed-57">Fixed</a></h4>
+<h3 id="v062---2022-05-12"><a href="#v062---2022-05-12">v0.6.2 - 2022-05-12</a></h3><h4 id="fixed-58"><a href="#fixed-58">Fixed</a></h4>
 <ul>
 <li>fix(azblob): Request URL not construct correctly (#270)</li>
 </ul>
-<h3 id="v061---2022-05-09"><a href="#v061---2022-05-09">v0.6.1 - 2022-05-09</a></h3><h4 id="added-70"><a href="#added-70">Added</a></h4>
+<h3 id="v061---2022-05-09"><a href="#v061---2022-05-09">v0.6.1 - 2022-05-09</a></h3><h4 id="added-71"><a href="#added-71">Added</a></h4>
 <ul>
 <li>feat: Add hdfs scheme (#266)</li>
 </ul>
-<h3 id="v060---2022-05-07"><a href="#v060---2022-05-07">v0.6.0 - 2022-05-07</a></h3><h4 id="added-71"><a href="#added-71">Added</a></h4>
+<h3 id="v060---2022-05-07"><a href="#v060---2022-05-07">v0.6.0 - 2022-05-07</a></h3><h4 id="added-72"><a href="#added-72">Added</a></h4>
 <ul>
 <li>docs: Improve docs to 100% coverage (#246)</li>
 <li>RFC-0247: Retryable Error (#247)</li>
@@ -1768,37 +1807,37 @@ version (#2255)</li>
 <li>feat: Implement hdfs service support (#255)</li>
 <li>docs: Add docs for hdfs services (#262)</li>
 </ul>
-<h4 id="changed-51"><a href="#changed-51">Changed</a></h4>
+<h4 id="changed-52"><a href="#changed-52">Changed</a></h4>
 <ul>
 <li>docs: Make sure code examples are formatted (#251)</li>
 <li>chore(deps): Update uuid requirement from 0.8.2 to 1.0.0 (#252)</li>
 <li>refactor: Remove deprecated modules (#259)</li>
 </ul>
-<h4 id="fixed-58"><a href="#fixed-58">Fixed</a></h4>
+<h4 id="fixed-59"><a href="#fixed-59">Fixed</a></h4>
 <ul>
 <li>ci: Fix docs build (#260)</li>
 <li>fix: HDFS jar not load (#261)</li>
 </ul>
-<h3 id="v052---2022-04-08"><a href="#v052---2022-04-08">v0.5.2 - 2022-04-08</a></h3><h4 id="changed-52"><a href="#changed-52">Changed</a></h4>
+<h3 id="v052---2022-04-08"><a href="#v052---2022-04-08">v0.5.2 - 2022-04-08</a></h3><h4 id="changed-53"><a href="#changed-53">Changed</a></h4>
 <ul>
 <li>chore: Build all features for docs.rs (#238)</li>
 <li>ci: Enable auto dependence upgrade (#239)</li>
 <li>chore(deps): Bump actions/checkout from 2 to 3 (#240)</li>
 <li>docs: Refactor examples (#241)</li>
 </ul>
-<h4 id="fixed-59"><a href="#fixed-59">Fixed</a></h4>
+<h4 id="fixed-60"><a href="#fixed-60">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Endpoint without scheme should also supported (#242)</li>
 </ul>
-<h3 id="v051---2022-04-08"><a href="#v051---2022-04-08">v0.5.1 - 2022-04-08</a></h3><h4 id="added-72"><a href="#added-72">Added</a></h4>
+<h3 id="v051---2022-04-08"><a href="#v051---2022-04-08">v0.5.1 - 2022-04-08</a></h3><h4 id="added-73"><a href="#added-73">Added</a></h4>
 <ul>
 <li>docs: Add behavior docs for create operation (#235)</li>
 </ul>
-<h4 id="fixed-60"><a href="#fixed-60">Fixed</a></h4>
+<h4 id="fixed-61"><a href="#fixed-61">Fixed</a></h4>
 <ul>
 <li>fix(services/fs): Create on existing dir should succeed (#234)</li>
 </ul>
-<h3 id="v050---2022-04-07"><a href="#v050---2022-04-07">v0.5.0 - 2022-04-07</a></h3><h4 id="added-73"><a href="#added-73">Added</a></h4>
+<h3 id="v050---2022-04-07"><a href="#v050---2022-04-07">v0.5.0 - 2022-04-07</a></h3><h4 id="added-74"><a href="#added-74">Added</a></h4>
 <ul>
 <li>feat: Improve error message (#220)</li>
 <li>RFC-0221: Create Dir (#221)</li>
@@ -1807,30 +1846,30 @@ version (#2255)</li>
 <li>ci: Enable behavior test for azblob (#229)</li>
 <li>docs: Add docs for azblob’s public structs (#230)</li>
 </ul>
-<h4 id="changed-53"><a href="#changed-53">Changed</a></h4>
+<h4 id="changed-54"><a href="#changed-54">Changed</a></h4>
 <ul>
 <li>refactor: Move op.objects() to o.list() (#224)</li>
 <li>refactor: Improve behavior_tests so that cargo test works without –all-features (#231)</li>
 </ul>
-<h4 id="fixed-61"><a href="#fixed-61">Fixed</a></h4>
+<h4 id="fixed-62"><a href="#fixed-62">Fixed</a></h4>
 <ul>
 <li>fix: Azblob should pass all behavior tests now (#228)</li>
 </ul>
-<h3 id="v042---2022-04-03"><a href="#v042---2022-04-03">v0.4.2 - 2022-04-03</a></h3><h4 id="added-74"><a href="#added-74">Added</a></h4>
+<h3 id="v042---2022-04-03"><a href="#v042---2022-04-03">v0.4.2 - 2022-04-03</a></h3><h4 id="added-75"><a href="#added-75">Added</a></h4>
 <ul>
 <li>feat: Add seekable_reader on Object (#215)</li>
 </ul>
-<h4 id="fixed-62"><a href="#fixed-62">Fixed</a></h4>
+<h4 id="fixed-63"><a href="#fixed-63">Fixed</a></h4>
 <ul>
 <li>fix: Object last_modified should carry timezone (#217)</li>
 </ul>
-<h3 id="v041---2022-04-02"><a href="#v041---2022-04-02">v0.4.1 - 2022-04-02</a></h3><h4 id="added-75"><a href="#added-75">Added</a></h4>
+<h3 id="v041---2022-04-02"><a href="#v041---2022-04-02">v0.4.1 - 2022-04-02</a></h3><h4 id="added-76"><a href="#added-76">Added</a></h4>
 <ul>
 <li>feat: Export SeekableReader (#212)</li>
 </ul>
 <h3 id="v040---2022-04-02"><a href="#v040---2022-04-02">v0.4.0 - 2022-04-02</a></h3>
 <p><strong>Refer to <a href="./docs/upgrade.md">Upgrade</a> <code>From v0.3 to v0.4</code> section for more upgrade details.</strong></p>
-<h4 id="added-76"><a href="#added-76">Added</a></h4>
+<h4 id="added-77"><a href="#added-77">Added</a></h4>
 <ul>
 <li>feat(services/azblob): Implement list support (#193)</li>
 <li>feat: Implement io_util like into_sink and into_stream (#197)</li>
@@ -1838,7 +1877,7 @@ version (#2255)</li>
 <li>feat(io_util): Implement observer for sink and stream (#198)</li>
 <li>docs: Add docs for public types (#206)</li>
 </ul>
-<h4 id="changed-54"><a href="#changed-54">Changed</a></h4>
+<h4 id="changed-55"><a href="#changed-55">Changed</a></h4>
 <ul>
 <li>refactor: Make read return BytesStream instead (#192)</li>
 <li>RFC-0191: Async Streaming IO (#191)</li>
@@ -1847,7 +1886,7 @@ version (#2255)</li>
 <li>refactor: Rollback changes around async streaming io (#205)</li>
 <li>refactor: Refactor behavior tests with macro_rules (#207)</li>
 </ul>
-<h4 id="fixed-63"><a href="#fixed-63">Fixed</a></h4>
+<h4 id="fixed-64"><a href="#fixed-64">Fixed</a></h4>
 <ul>
 <li>deps: Bump to reqsign to fix s3 url encode issue (#202)</li>
 </ul>
@@ -1855,62 +1894,62 @@ version (#2255)</li>
 <ul>
 <li>RFC-0203: Remove Credential (#203)</li>
 </ul>
-<h3 id="v030---2022-03-25"><a href="#v030---2022-03-25">v0.3.0 - 2022-03-25</a></h3><h4 id="added-77"><a href="#added-77">Added</a></h4>
+<h3 id="v030---2022-03-25"><a href="#v030---2022-03-25">v0.3.0 - 2022-03-25</a></h3><h4 id="added-78"><a href="#added-78">Added</a></h4>
 <ul>
 <li>feat: Add azure blob support (#165)</li>
 <li>feat: Add tracing support via minitrace (#175)</li>
 <li>feat(service/s3): Implement server side encryption support (#182)</li>
 </ul>
-<h4 id="changed-55"><a href="#changed-55">Changed</a></h4>
+<h4 id="changed-56"><a href="#changed-56">Changed</a></h4>
 <ul>
 <li>chore: Level down some log entry to debug (#181)</li>
 </ul>
-<h4 id="fixed-64"><a href="#fixed-64">Fixed</a></h4>
+<h4 id="fixed-65"><a href="#fixed-65">Fixed</a></h4>
 <ul>
 <li>fix(service/s3): Endpoint template should be applied if region exists (#180)</li>
 </ul>
-<h3 id="v025---2022-03-22"><a href="#v025---2022-03-22">v0.2.5 - 2022-03-22</a></h3><h4 id="added-78"><a href="#added-78">Added</a></h4>
+<h3 id="v025---2022-03-22"><a href="#v025---2022-03-22">v0.2.5 - 2022-03-22</a></h3><h4 id="added-79"><a href="#added-79">Added</a></h4>
 <ul>
 <li>feat: Adopt quick_xml to parse xml (#164)</li>
 <li>test: Add behavior test for not exist object (#166)</li>
 <li>feat: Allow user input region (#168)</li>
 </ul>
-<h4 id="changed-56"><a href="#changed-56">Changed</a></h4>
+<h4 id="changed-57"><a href="#changed-57">Changed</a></h4>
 <ul>
 <li>feat: Improve error handle for s3 service (#169)</li>
 <li>feat: Read error response for better debugging (#170)</li>
 <li>examples: Improve examples for s3 (#171)</li>
 </ul>
-<h3 id="v024---2022-03-18"><a href="#v024---2022-03-18">v0.2.4 - 2022-03-18</a></h3><h4 id="added-79"><a href="#added-79">Added</a></h4>
+<h3 id="v024---2022-03-18"><a href="#v024---2022-03-18">v0.2.4 - 2022-03-18</a></h3><h4 id="added-80"><a href="#added-80">Added</a></h4>
 <ul>
 <li>feat: Add content_md5 and last_modified in metadata (#158)</li>
 </ul>
-<h4 id="changed-57"><a href="#changed-57">Changed</a></h4>
+<h4 id="changed-58"><a href="#changed-58">Changed</a></h4>
 <ul>
 <li>refactor: Say goodbye to aws-s3-sdk (#152)</li>
 </ul>
-<h3 id="v023---2022-03-14"><a href="#v023---2022-03-14">v0.2.3 - 2022-03-14</a></h3><h4 id="added-80"><a href="#added-80">Added</a></h4>
+<h3 id="v023---2022-03-14"><a href="#v023---2022-03-14">v0.2.3 - 2022-03-14</a></h3><h4 id="added-81"><a href="#added-81">Added</a></h4>
 <ul>
 <li>feat: Export BoxedObjectStream so that users can implement Layer (#147)</li>
 </ul>
-<h3 id="v022---2022-03-14"><a href="#v022---2022-03-14">v0.2.2 - 2022-03-14</a></h3><h4 id="fixed-65"><a href="#fixed-65">Fixed</a></h4>
+<h3 id="v022---2022-03-14"><a href="#v022---2022-03-14">v0.2.2 - 2022-03-14</a></h3><h4 id="fixed-66"><a href="#fixed-66">Fixed</a></h4>
 <ul>
 <li>services/fs: Refactor via tokio::fs (#142)</li>
 <li>fix: Stat root should return a dir object (#143)</li>
 </ul>
-<h3 id="v021---2022-03-10"><a href="#v021---2022-03-10">v0.2.1 - 2022-03-10</a></h3><h4 id="added-81"><a href="#added-81">Added</a></h4>
+<h3 id="v021---2022-03-10"><a href="#v021---2022-03-10">v0.2.1 - 2022-03-10</a></h3><h4 id="added-82"><a href="#added-82">Added</a></h4>
 <ul>
 <li>*: Implement logging support (#122)</li>
 <li>feat(service): Add service memory read support (#121)</li>
 <li>services: Add basic metrics (#127)</li>
 <li>services: Add full memory support (#134)</li>
 </ul>
-<h4 id="changed-58"><a href="#changed-58">Changed</a></h4>
+<h4 id="changed-59"><a href="#changed-59">Changed</a></h4>
 <ul>
 <li>benches: Refactor to support more read pattern (#126)</li>
 <li>services: Refactor into directories (#131)</li>
 </ul>
-<h4 id="docs-31"><a href="#docs-31">Docs</a></h4>
+<h4 id="docs-32"><a href="#docs-32">Docs</a></h4>
 <ul>
 <li>docs: Cover all public types and functions (#128)</li>
 <li>docs: Update README (#129)</li>
@@ -1918,28 +1957,28 @@ version (#2255)</li>
 <li>docs: Enrich README (#133)</li>
 <li>Add examples for object (#135)</li>
 </ul>
-<h3 id="v020---2022-03-08"><a href="#v020---2022-03-08">v0.2.0 - 2022-03-08</a></h3><h4 id="added-82"><a href="#added-82">Added</a></h4>
+<h3 id="v020---2022-03-08"><a href="#v020---2022-03-08">v0.2.0 - 2022-03-08</a></h3><h4 id="added-83"><a href="#added-83">Added</a></h4>
 <ul>
 <li>RFC-112: Path Normalization (#112)</li>
 <li>examples: Add more examples for services and operations (#113)</li>
 </ul>
-<h4 id="changed-59"><a href="#changed-59">Changed</a></h4>
+<h4 id="changed-60"><a href="#changed-60">Changed</a></h4>
 <ul>
 <li>benches: Refactor to make code more readable (#104)</li>
 <li>object: Refactor ObjectMode into enum (#114)</li>
 </ul>
-<h3 id="v014---2022-03-04"><a href="#v014---2022-03-04">v0.1.4 - 2022-03-04</a></h3><h4 id="added-83"><a href="#added-83">Added</a></h4>
+<h3 id="v014---2022-03-04"><a href="#v014---2022-03-04">v0.1.4 - 2022-03-04</a></h3><h4 id="added-84"><a href="#added-84">Added</a></h4>
 <ul>
 <li>services/s3: Implement anonymous read support (#97)</li>
 <li>bench: Add parallel_read bench (#100)</li>
 <li>services/s3: Add test for anonymous support (#99)</li>
 </ul>
-<h3 id="v013---2022-03-02"><a href="#v013---2022-03-02">v0.1.3 - 2022-03-02</a></h3><h4 id="added-84"><a href="#added-84">Added</a></h4>
+<h3 id="v013---2022-03-02"><a href="#v013---2022-03-02">v0.1.3 - 2022-03-02</a></h3><h4 id="added-85"><a href="#added-85">Added</a></h4>
 <ul>
 <li>RFC and implementations for limited reader (#90)</li>
 <li>readers: Implement observe reader support (#92)</li>
 </ul>
-<h4 id="changed-60"><a href="#changed-60">Changed</a></h4>
+<h4 id="changed-61"><a href="#changed-61">Changed</a></h4>
 <ul>
 <li>deps: Bump s3 sdk to 0.8 (#87)</li>
 <li>bench: Improve logic (#89)</li>
@@ -1948,37 +1987,37 @@ version (#2255)</li>
 <ul>
 <li><a href="https://github.com/apache/incubator-opendal/blob/main/docs/rfcs/0090-limited-reader.md">limited_reader</a></li>
 </ul>
-<h3 id="v012---2022-03-01"><a href="#v012---2022-03-01">v0.1.2 - 2022-03-01</a></h3><h4 id="changed-61"><a href="#changed-61">Changed</a></h4>
+<h3 id="v012---2022-03-01"><a href="#v012---2022-03-01">v0.1.2 - 2022-03-01</a></h3><h4 id="changed-62"><a href="#changed-62">Changed</a></h4>
 <ul>
 <li>object: Polish API for Metadata (#80)</li>
 </ul>
-<h3 id="v011---2022-03-01"><a href="#v011---2022-03-01">v0.1.1 - 2022-03-01</a></h3><h4 id="added-85"><a href="#added-85">Added</a></h4>
+<h3 id="v011---2022-03-01"><a href="#v011---2022-03-01">v0.1.1 - 2022-03-01</a></h3><h4 id="added-86"><a href="#added-86">Added</a></h4>
 <ul>
 <li>RFC and implementation of feature Object Stream (#69)</li>
 <li>services/s3: Implement List support (#76)</li>
 <li>credential: Add Plain variant to allow more input (#78)</li>
 </ul>
-<h4 id="changed-62"><a href="#changed-62">Changed</a></h4>
+<h4 id="changed-63"><a href="#changed-63">Changed</a></h4>
 <ul>
 <li>backend/s3: Change from lazy_static to once_cell (#62)</li>
 <li>backend/s3: Enable test on AWS S3 (#64)</li>
 </ul>
-<h3 id="v010---2022-02-24"><a href="#v010---2022-02-24">v0.1.0 - 2022-02-24</a></h3><h4 id="added-86"><a href="#added-86">Added</a></h4>
+<h3 id="v010---2022-02-24"><a href="#v010---2022-02-24">v0.1.0 - 2022-02-24</a></h3><h4 id="added-87"><a href="#added-87">Added</a></h4>
 <ul>
 <li>docs: Add README for behavior test and ops benchmarks (#53)</li>
 <li>RFC-0057: Auto Region (#57)</li>
 <li>backend/s3: Implement RFC-57 Auto Region (#59)</li>
 </ul>
-<h4 id="changed-63"><a href="#changed-63">Changed</a></h4>
+<h4 id="changed-64"><a href="#changed-64">Changed</a></h4>
 <ul>
 <li>io: Rename BoxedAsyncRead to BoxedAsyncReader (#55)</li>
 <li>*: Refactor tests (#60)</li>
 </ul>
-<h3 id="v005---2022-02-23"><a href="#v005---2022-02-23">v0.0.5 - 2022-02-23</a></h3><h4 id="fixed-66"><a href="#fixed-66">Fixed</a></h4>
+<h3 id="v005---2022-02-23"><a href="#v005---2022-02-23">v0.0.5 - 2022-02-23</a></h3><h4 id="fixed-67"><a href="#fixed-67">Fixed</a></h4>
 <ul>
 <li>io: Remove not used debug print (#48)</li>
 </ul>
-<h3 id="v004---2022-02-23"><a href="#v004---2022-02-23">v0.0.4 - 2022-02-23</a></h3><h4 id="added-87"><a href="#added-87">Added</a></h4>
+<h3 id="v004---2022-02-23"><a href="#v004---2022-02-23">v0.0.4 - 2022-02-23</a></h3><h4 id="added-88"><a href="#added-88">Added</a></h4>
 <ul>
 <li>readers: Allow config prefetch size (#31)</li>
 <li>RFC-0041: Object Native API (#41)</li>
@@ -1986,29 +2025,29 @@ version (#2255)</li>
 <li>RFC-0044: Error Handle (#44)</li>
 <li>error: Implement RFC-0044 Error Handle (#43)</li>
 </ul>
-<h4 id="changed-64"><a href="#changed-64">Changed</a></h4>
+<h4 id="changed-65"><a href="#changed-65">Changed</a></h4>
 <ul>
 <li>services/fs: Use separate dedicated thread pool instead (#42)</li>
 </ul>
-<h3 id="v003---2022-02-16"><a href="#v003---2022-02-16">v0.0.3 - 2022-02-16</a></h3><h4 id="added-88"><a href="#added-88">Added</a></h4>
+<h3 id="v003---2022-02-16"><a href="#v003---2022-02-16">v0.0.3 - 2022-02-16</a></h3><h4 id="added-89"><a href="#added-89">Added</a></h4>
 <ul>
 <li>benches: Implement benches for ops (#26)</li>
 </ul>
-<h4 id="changed-65"><a href="#changed-65">Changed</a></h4>
+<h4 id="changed-66"><a href="#changed-66">Changed</a></h4>
 <ul>
 <li>services/s3: Don’t load_from_env if users already inputs (#23)</li>
 <li>readers: Improve seekable performance (#25)</li>
 </ul>
-<h3 id="v002---2022-02-15"><a href="#v002---2022-02-15">v0.0.2 - 2022-02-15</a></h3><h4 id="added-89"><a href="#added-89">Added</a></h4>
+<h3 id="v002---2022-02-15"><a href="#v002---2022-02-15">v0.0.2 - 2022-02-15</a></h3><h4 id="added-90"><a href="#added-90">Added</a></h4>
 <ul>
 <li>tests: Implement behavior tests (#13)</li>
 <li>services/s3: Add support for endpoints without scheme (#15)</li>
 <li>tests: Implement integration tests for s3 (#18)</li>
 </ul>
-<h4 id="fixed-67"><a href="#fixed-67">Fixed</a></h4>
+<h4 id="fixed-68"><a href="#fixed-68">Fixed</a></h4>
 <ul>
 <li>services/s3: Allow set endpoint and region while input value is valid (#17)</li>
 </ul>
-<h3 id="v001---2022-02-14"><a href="#v001---2022-02-14">v0.0.1 - 2022-02-14</a></h3><h4 id="added-90"><a href="#added-90">Added</a></h4>
+<h3 id="v001---2022-02-14"><a href="#v001---2022-02-14">v0.0.1 - 2022-02-14</a></h3><h4 id="added-91"><a href="#added-91">Added</a></h4>
 <p>Hello, OpenDAL!</p>
 </div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/opendal/enum.ErrorKind.html b/docs/rust/opendal/enum.ErrorKind.html
index 208654b78..19b6996b4 100644
--- a/docs/rust/opendal/enum.ErrorKind.html
+++ b/docs/rust/opendal/enum.ErrorKind.html
@@ -49,7 +49,7 @@ So users could to handle this error by themselves.</p>
 <li>Service expected to write 1024 bytes, but users write less bytes.</li>
 </ul>
 </div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ErrorKind" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#104-109">source</a><a href="#impl-ErrorKind" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.ErrorKind.html" title="enum opendal:: [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ErrorKind" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#48">source</a><a href="#impl-Clone-for-ErrorKind" class="anchor">§</a><h3 class="code-header">impl [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ErrorKind" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#48">source</a><a href="#impl-Clone-for-ErrorKind" class="anchor">§</a><h3 class="code-header">impl [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.70.0/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html#method.ne" clas [...]
 sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-ErrorKind" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#48">source</a><a href="#impl-Copy-for-ErrorKind" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.ErrorKind.html" t [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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="srclink rightside" href="https://doc.rust-lang.org/1.70.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
diff --git a/docs/rust/opendal/enum.Metakey.html b/docs/rust/opendal/enum.Metakey.html
index 4949c9829..b4ecc35e0 100644
--- a/docs/rust/opendal/enum.Metakey.html
+++ b/docs/rust/opendal/enum.Metakey.html
@@ -29,9 +29,9 @@ already contains all metadata.</p>
 </div><section id="variant.ContentType" class="variant"><a href="#variant.ContentType" class="anchor">§</a><h3 class="code-header">ContentType</h3></section><div class="docblock"><p>Key for content type.</p>
 </div><section id="variant.Etag" class="variant"><a href="#variant.Etag" class="anchor">§</a><h3 class="code-header">Etag</h3></section><div class="docblock"><p>Key for etag.</p>
 </div><section id="variant.LastModified" class="variant"><a href="#variant.LastModified" class="anchor">§</a><h3 class="code-header">LastModified</h3></section><div class="docblock"><p>Key for last last modified.</p>
-</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BitAnd%3CR%3E-for-Metakey" class="impl"><a class="srclink rightside" href="../src/opendal/types/metadata.rs.html#423-461">source</a><a href="#impl-BitAnd%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl&lt;R: [...]
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BitAnd%3CR%3E-for-Metakey" class="impl"><a class="srclink rightside" href="../src/opendal/types/metadata.rs.html#423-461">source</a><a href="#impl-BitAnd%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl&lt;R: [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.70.0/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html#method.ne" clas [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Rem%3CR%3E-for-Metakey" class="impl"><a class="srclink rightside" href="../src/opendal/types/metadata.rs.html#423-461">source</a><a href="#impl-Rem%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl&lt;R: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/convert/trait.Into.html" title="tr [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Rem%3CR%3E-for-Metakey" class="impl"><a class="srclink rightside" href="../src/opendal/types/metadata.rs.html#423-461">source</a><a href="#impl-Rem%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl&lt;R: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/convert/trait.Into.html" title="tr [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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="srclink rightside" href="https://doc.rust-lang.org/1.70.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/enum.Scheme.html b/docs/rust/opendal/enum.Scheme.html
index 908996b27..4f103df9c 100644
--- a/docs/rust/opendal/enum.Scheme.html
+++ b/docs/rust/opendal/enum.Scheme.html
@@ -73,7 +73,7 @@ pub enum Scheme {
 <li>Custom must be lowed cases.</li>
 </ul>
 </div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Scheme" class="impl"><a class="srclink rightside" href="../src/opendal/types/scheme.rs.html#102-107">source</a><a href="#impl-Scheme" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme"> [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Scheme" class="impl"><a class="srclink rightside" href="../src/opendal/types/scheme.rs.html#31">source</a><a href="#impl-Clone-for-Scheme" class="anchor">§</a><h3 class="code-header">impl <a c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Scheme" class="impl"><a class="srclink rightside" href="../src/opendal/types/scheme.rs.html#31">source</a><a href="#impl-Clone-for-Scheme" class="anchor">§</a><h3 class="code-header">impl <a c [...]
     H: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
     Self: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.70.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.70.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></det [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.70.0/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html#method.ne" clas [...]
diff --git a/docs/rust/opendal/index.html b/docs/rust/opendal/index.html
index 377a1c758..e4458695e 100644
--- a/docs/rust/opendal/index.html
+++ b/docs/rust/opendal/index.html
@@ -1,4 +1,4 @@
-<!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="OpenDAL is the Open Data Access Layer to freely access data."><title>opendal - Rust</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=" [...]
+<!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="OpenDAL is the Open Data Access Layer to freely access data."><title>opendal - Rust</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=" [...]
 <ul>
 <li>Documentation: All docs are carried byself, visit <a href="docs/index.html" title="mod opendal::docs"><code>docs</code></a> for more.</li>
 <li>Services: All supported services could be found at <a href="services/index.html" title="mod opendal::services"><code>services</code></a>.</li>
diff --git a/docs/rust/opendal/raw/enum.PresignOperation.html b/docs/rust/opendal/raw/enum.PresignOperation.html
index 89306788d..06dec19b4 100644
--- a/docs/rust/opendal/raw/enum.PresignOperation.html
+++ b/docs/rust/opendal/raw/enum.PresignOperation.html
@@ -7,7 +7,7 @@ pub enum PresignOperation {
 </div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
 </div><section id="variant.Read" class="variant"><a href="#variant.Read" class="anchor">§</a><h3 class="code-header">Read(<a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>)</h3></section><div class="docblock"><p>Presign a read operation.</p>
 </div><section id="variant.Write" class="variant"><a href="#variant.Write" class="anchor">§</a><h3 class="code-header">Write(<a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>)</h3></section><div class="docblock"><p>Presign a write operation.</p>
-</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PresignOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#148">source</a><a href="#impl-Clone-for-PresignOperation" class="anchor">§</a><h3 class="code-header">impl <a class="t [...]
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PresignOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#148">source</a><a href="#impl-Clone-for-PresignOperation" class="anchor">§</a><h3 class="code-header">impl <a class="t [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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="srclink rightside" href="https://doc.rust-lang.org/1.70.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/raw/oio/enum.AppendOperation.html b/docs/rust/opendal/raw/oio/enum.AppendOperation.html
index a404abebd..48c0730bb 100644
--- a/docs/rust/opendal/raw/oio/enum.AppendOperation.html
+++ b/docs/rust/opendal/raw/oio/enum.AppendOperation.html
@@ -6,7 +6,7 @@ pub enum AppendOperation {
 </div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
 </div><section id="variant.Close" class="variant"><a href="#variant.Close" class="anchor">§</a><h3 class="code-header">Close</h3></section><div class="docblock"><p>Operation for <a href="trait.Append.html#tymethod.close" title="method opendal::raw::oio::Append::close"><code>Append::close</code></a></p>
 </div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AppendOperation" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/append.rs.html#36-41">source</a><a href="#impl-AppendOperation" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.AppendOperation.ht [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AppendOperation" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/append.rs.html#27">source</a><a href="#impl-Clone-for-AppendOperation" class="anchor">§</a><h3 cla [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AppendOperation" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/append.rs.html#27">source</a><a href="#impl-Clone-for-AppendOperation" class="anchor">§</a><h3 cla [...]
     H: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
     Self: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.70.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.70.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></det [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.70.0/src/core/cmp.rs.html#229">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.70.0/core/cmp/trait.PartialEq.html#method.ne" clas [...]
diff --git a/docs/rust/opendal/raw/oio/struct.Cursor.html b/docs/rust/opendal/raw/oio/struct.Cursor.html
index 5510e6c81..249124911 100644
--- a/docs/rust/opendal/raw/oio/struct.Cursor.html
+++ b/docs/rust/opendal/raw/oio/struct.Cursor.html
@@ -1,7 +1,7 @@
 <!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="Cursor is the cursor for `Bytes` that implements `oio::Read`"><title>Cursor 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" as="font" type="font [...]
 </div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Cursor" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#37-48">source</a><a href="#impl-Cursor" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Cursor.html" title="struct o [...]
 </div></details><details class="toggle method-toggle" open><summary><section id="method.remaining_slice" class="method"><a class="srclink rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#44-47">source</a><h4 class="code-header">pub fn <a href="#method.remaining_slice" class="fn">remaining_slice</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4> [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-Cursor" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#108-149">source</a><a href="#impl-BlockingRead-for-Cursor" class="anchor">§</a><h3 cl [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-Cursor" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#108-149">source</a><a href="#impl-BlockingRead-for-Cursor" class="anchor">§</a><h3 cl [...]
     &amp;mut self,
     _: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u8.html">u8</a>]
diff --git a/docs/rust/opendal/raw/oio/trait.Read.html b/docs/rust/opendal/raw/oio/trait.Read.html
index 89329f1fb..8c9bc593b 100644
--- a/docs/rust/opendal/raw/oio/trait.Read.html
+++ b/docs/rust/opendal/raw/oio/trait.Read.html
@@ -54,23 +54,23 @@ IO operations. <a>Read more</a></div></details></div></details><details class="t
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.70.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::Item&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to pull out the next value of this stream, registering the
 current task for wakeup if the value is not yet available, and returning
-<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&amp;self) -&gt; (<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/option/enum.Option.html" ti [...]
-work as expected, we must add this impl.</p>
-</div><div class="impl-items"><section id="method.poll_read-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#139-141">source</a><a href="#method.poll_read-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.poll_read" class="fn">poll_read</a>(
+<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&amp;self) -&gt; (<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/option/enum.Option.html" ti [...]
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section><section id="method.poll_seek-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#143-145 [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section><section id="method.poll_seek-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#117-124 [...]
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     pos: <a class="enum" href="https://doc.rust-lang.org/1.70.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section><section id="method.poll_next-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#147-149">so [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section><section id="method.poll_next-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#126-133">so [...]
+work as expected, we must add this impl.</p>
+</div><div class="impl-items"><section id="method.poll_read-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#139-141">source</a><a href="#method.poll_read-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.poll_read" class="fn">poll_read</a>(
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section><section id="method.poll_seek-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#117-124 [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section><section id="method.poll_seek-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#143-145 [...]
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     pos: <a class="enum" href="https://doc.rust-lang.org/1.70.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section><section id="method.poll_next-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#126-133">so [...]
-    R: AsyncRead + AsyncSeek + <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> + <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Read-for-IntoStreamableReader%3CR [...]
\ No newline at end of file
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section><section id="method.poll_next-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#147-149">so [...]
+    R: AsyncRead + AsyncSeek + <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> + <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Read-for-IntoStreamableReader%3CR [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.Write.html b/docs/rust/opendal/raw/oio/trait.Write.html
index 58800c7aa..4d2613192 100644
--- a/docs/rust/opendal/raw/oio/trait.Write.html
+++ b/docs/rust/opendal/raw/oio/trait.Write.html
@@ -46,32 +46,32 @@ content length. And users will call write multiple times.</p>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.70.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class="docblock"><p>Close the writer and make sure all data has been flushed.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Write-for-()" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#104-124">source</a><a href="#impl-Write-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Write.html" title="trait opendal:: [...]
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Write-for-Box%3CT%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#130-142">source</a><a href="#impl-Write-for-Box%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="trait.Write.html"  [...]
+<p>To make Writer work as expected, we must add this impl.</p>
+</div><div class="impl-items"><section id="method.write" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#131-133">source</a><a href="#method.write" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.write" class="fn">write</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 mut self,
     bs: Bytes
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.70.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section><section id="method.abort" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#111-116">source</a><a href="#method.abort" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.abort" class="fn">abort</a>&lt;'life0, 'async_trait&gt;(
+    'life0: 'async_trait,</span></h4></section><section id="method.abort" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#135-137">source</a><a href="#method.abort" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.abort" class="fn">abort</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 mut self
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.70.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section><section id="method.close" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#118-123">source</a><a href="#method.close" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.close" class="fn">close</a>&lt;'life0, 'async_trait&gt;(
+    'life0: 'async_trait,</span></h4></section><section id="method.close" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#139-141">source</a><a href="#method.close" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.close" class="fn">close</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 mut self
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.70.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Write-for-Box%3CT%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#130-142">source</a><a href="#impl-Write-for-Box%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="trait.Write.html" title="trait opendal::raw::oio::Write">Write</a> + ?<a class="trait" href="https://doc.rust-l [...]
-<p>To make Writer work as expected, we must add this impl.</p>
-</div><div class="impl-items"><section id="method.write-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#131-133">source</a><a href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.write" class="fn">write</a>&lt;'life0, 'async_trait&gt;(
+    'life0: 'async_trait,</span></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Write-for-()" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#104-124">source</a><a href="#impl-Write-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Write.html" title="trait opendal::raw::oio::Write">Write</a> for <a class="primitive" href="https://doc.rust-lang.org/1.70.0/st [...]
     &amp;'life0 mut self,
     bs: Bytes
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.70.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section><section id="method.abort-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#135-137">source</a><a href="#method.abort-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.abort" class="fn">abort</a>&lt;'life0, 'async_trait&gt;(
+    'life0: 'async_trait,</span></h4></section><section id="method.abort-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#111-116">source</a><a href="#method.abort-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.abort" class="fn">abort</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 mut self
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.70.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section><section id="method.close-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#139-141">source</a><a href="#method.close-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.close" class="fn">close</a>&lt;'life0, 'async_trait&gt;(
+    'life0: 'async_trait,</span></h4></section><section id="method.close-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/write.rs.html#118-123">source</a><a href="#method.close-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.close" class="fn">close</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 mut self
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.70.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../../implementors/opendal/raw/oio/write/trait.Write.js" data-ignore-extern-crates="std,alloc" async></script></section></div></main></body></html>
\ No newline at end of file
+    'life0: 'async_trait,</span></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../../implementors/opendal/raw/oio/write/trait.Write.js" data-ignore-extern-crates="alloc,std" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/trait.Accessor.html b/docs/rust/opendal/raw/trait.Accessor.html
index 83755901c..ce8022fa2 100644
--- a/docs/rust/opendal/raw/trait.Accessor.html
+++ b/docs/rust/opendal/raw/trait.Accessor.html
@@ -385,10 +385,9 @@ appended size if operate successful.</p>
 <ul>
 <li>List non-exist dir should return Empty.</li>
 </ul>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Accessor-for-()" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#387-404">source</a><a href="#impl-Accessor-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Accessor.html" title="trait open [...]
-</div><div class="impl-items"><section id="associatedtype.Reader-1" class="associatedtype trait-impl"><a href="#associatedtype.Reader-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = <a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.BlockingReader-1" class="associatedtype trait-impl"><a href="#associatedtype.BlockingReader-1" class="a [...]
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Accessor-for-Arc%3CT%3E" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#409-490">source</a><a href="#impl-Accessor-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="trait.Accessor.h [...]
 <code>Accessor</code> for <code>Arc&lt;dyn Accessor&gt;</code>.</p>
-</div><div class="impl-items"><section id="associatedtype.Reader-2" class="associatedtype trait-impl"><a href="#associatedtype.Reader-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = &lt;T as <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&gt;::<a class="associatedtype" href="trait.Accessor.html#associatedtype.Reader" title="type opendal::raw::Accessor::Reader">Reader</a> [...]
+</div><div class="impl-items"><section id="associatedtype.Reader-1" class="associatedtype trait-impl"><a href="#associatedtype.Reader-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = &lt;T as <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&gt;::<a class="associatedtype" href="trait.Accessor.html#associatedtype.Reader" title="type opendal::raw::Accessor::Reader">Reader</a> [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
@@ -488,4 +487,5 @@ appended size if operate successful.</p>
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2>< [...]
\ No newline at end of file
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Accessor-for-()" class="impl"><a class="sr [...]
+</div><div class="impl-items"><section id="associatedtype.Reader-2" class="associatedtype trait-impl"><a href="#associatedtype.Reader-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = <a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.BlockingReader-2" class="associatedtype trait-impl"><a href="#associatedtype.BlockingReader-2" class="a [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/struct.Appender.html b/docs/rust/opendal/struct.Appender.html
index 3fec8fe0a..0f01de275 100644
--- a/docs/rust/opendal/struct.Appender.html
+++ b/docs/rust/opendal/struct.Appender.html
@@ -13,28 +13,28 @@ always be <code>unsized</code>.</p>
 <h6 id="notes-2"><a href="#notes-2">Notes</a></h6>
 <p>Close should only be called when the appender is not closed,
 otherwise an unexpected error could be returned.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#188-252">source</a><a href="#impl-AsyncWrite-for-Appender" class="anchor">§</a><h3 class="c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#121-186">source</a><a href="#impl-AsyncWrite-for-Appender" class="anchor">§</a><h3 class="c [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
-their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_shutdown" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#226-251">source</a><a href="#method.poll_shutdown" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_shutdown</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a [...]
-the I/O connection has completely shut down. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_write_vectored" class="method trait-impl"><a href="#method.poll_write_vectored" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_write_vectored</a>(
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
+their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_close" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#160-185">source</a><a href="#method.poll_close" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_close</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a c [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     bufs: &amp;[<a class="struct" href="https://doc.rust-lang.org/1.70.0/std/io/struct.IoSlice.html" title="struct std::io::IoSlice">IoSlice</a>&lt;'_&gt;]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.70.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.70.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-implementation. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#121-186">source</a><a href="#impl-AsyncWrite-for-Appender-1" class="anchor">§</a><h3 class="code-header">impl AsyncWrite for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender">Appender</a></h3></section></summar [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.70.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.70.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
+IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#188-252">source</a><a href="#impl-AsyncWrite-for-Appender-1" class="anchor">§</a><h3 class="code-header">impl AsyncWrite for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender">Appender</a></h3></section></summary [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
-their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_close" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#160-185">source</a><a href="#method.poll_close" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_close</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a c [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
+their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_shutdown" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#226-251">source</a><a href="#method.poll_shutdown" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_shutdown</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a [...]
+the I/O connection has completely shut down. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_write_vectored-1" class="method trait-impl"><a href="#method.poll_write_vectored-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_write_vectored</a>(
     self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     bufs: &amp;[<a class="struct" href="https://doc.rust-lang.org/1.70.0/std/io/struct.IoSlice.html" title="struct std::io::IoSlice">IoSlice</a>&lt;'_&gt;]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.70.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.70.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-IO operations. <a>Read more</a></div></details></div></details><section id="impl-Sync-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#56">source</a><a href="#impl-Sync-for-Appender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender" [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.70.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.70.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
+implementation. <a>Read more</a></div></details></div></details><section id="impl-Sync-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#56">source</a><a href="#impl-Sync-for-Appender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender [...]
 <p>Appender will only be accessed by <code>&amp;mut Self</code></p>
 </div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Appender" class="impl"><a href="#impl-RefUnwindSafe-for-Appender" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwi [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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="srclink rightside" href="https://doc.rust-lang.org/1.70.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
diff --git a/docs/rust/opendal/struct.BlockingReader.html b/docs/rust/opendal/struct.BlockingReader.html
index 80d84cbfb..7afa97b72 100644
--- a/docs/rust/opendal/struct.BlockingReader.html
+++ b/docs/rust/opendal/struct.BlockingReader.html
@@ -1,6 +1,6 @@
 <!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="BlockingReader is designed to read data from given path in an blocking manner."><title>BlockingReader in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font"  [...]
 manner.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-BlockingReader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#218-233">source</a><a href="#impl-BlockingRead-for-BlockingReader" class="anchor">§</a><h3 class="code-head [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-BlockingReader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#218-233">source</a><a href="#impl-BlockingRead-for-BlockingReader" class="anchor">§</a><h3 class="code-head [...]
     &amp;mut self
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.70.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.org/ [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_next_chunk</code>)</span></div></span><div class='docblock'>Advances the iterator and returns an array containing the next <code>N</code> values. <a href="https://doc.rust-lang.org/1 [...]
@@ -189,7 +189,7 @@ implementation. <a href="https://doc.rust-lang.org/1.70.0/std/io/trait.Read.html
     Self: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Transforms this <code>Read</code> instance to an <a href="https://doc.rust-lang.org/1.70.0/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> over its bytes. <a href="https://doc.rust-lang.org/1.70.0/std/io/trait.Read.html# [...]
     R: <a class="trait" href="https://doc.rust-lang.org/1.70.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a>,
     Self: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will chain this stream with another. <a href="https://doc.rust-lang.org/1.70.0/std/io/trait.Read.html#method.chain">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take-1" class="method trait-impl"><span class="rightside [...]
-    Self: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will read at most <code>limit</code> bytes from it. <a href="https://doc.rust-lang.org/1.70.0/std/io/trait.Read.html#method.take">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Seek-for-BlockingReade [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will read at most <code>limit</code> bytes from it. <a href="https://doc.rust-lang.org/1.70.0/std/io/trait.Read.html#method.take">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Seek-for-BlockingReade [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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="srclink rightside" href="https://doc.rust-lang.org/1.70.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/struct.Error.html b/docs/rust/opendal/struct.Error.html
index bb4d96505..973cc56db 100644
--- a/docs/rust/opendal/struct.Error.html
+++ b/docs/rust/opendal/struct.Error.html
@@ -17,7 +17,7 @@
 <p>By setting persistent, we indicate the retry should be stopped.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.kind" class="method"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#330-332">source</a><h4 class="code-header">pub fn <a href="#method.kind" class="fn">kind</a>(&amp;self) -&gt; <a class="enum" href="enum.ErrorKind.html" title="enum opendal::ErrorKind">ErrorKind</a></h4></section></summary><div class="docblock"><p>Return error’s kind.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.is_temporary" class="method"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#335-337">source</a><h4 class="code-header">pub fn <a href="#method.is_temporary" class="fn">is_temporary</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if this error is temporary.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#210-244">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#210-244">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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="srclink rightside" href="https://doc.rust-lang.org/1.70.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.70.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/struct.Reader.html b/docs/rust/opendal/struct.Reader.html
index 221483df3..c41a0f58e 100644
--- a/docs/rust/opendal/struct.Reader.html
+++ b/docs/rust/opendal/struct.Reader.html
@@ -30,14 +30,14 @@ IO operations. <a>Read more</a></div></details></div></details><details class="t
     self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut ReadBuf&lt;'_&gt;
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.unit.html">()</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempts to read from the <code>AsyncRead</code> into <code>buf</cod [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.unit.html">()</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempts to read from the <code>AsyncRead</code> into <code>buf</cod [...]
+    self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
+    cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section></summary><div class='docblock'>Waits for a seek operation to complete. <a>Read more</a></div></deta [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     pos: <a class="enum" href="https://doc.rust-lang.org/1.70.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
-    self: <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
-    cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section></summary><div class='docblock'>Waits for a seek operation to complete. <a>Read more</a></div></deta [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.70.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.70.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.70.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.70.0/std/primitive.u8.html">u8</a>]
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index af02b5368..9f40f2940 100644
--- a/docs/rust/search-index.js
+++ b/docs/rust/search-index.js
@@ -1,5 +1,5 @@
 var searchIndex = JSON.parse('{\
-"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNDNNDDDDINDNNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNDNNDENNNNNNDDDNNNDNGNNSENNNNNNNNNNDLLLMLMMMLLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
+"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNDNNDDDDINDNNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNDNNDENNNNNNDDDNNNDNGNNSENNNNNNNNNNDLLLMLMMMLLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
 }');
 if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
 if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/services/azblob/index.html b/docs/services/azblob/index.html
index 44dc7b3b1..bee3c52c8 100644
--- a/docs/services/azblob/index.html
+++ b/docs/services/azblob/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/azdfs/index.html b/docs/services/azdfs/index.html
index 3d32d5e3c..044877c15 100644
--- a/docs/services/azdfs/index.html
+++ b/docs/services/azdfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Azdfs | 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/azdfs"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/cos/index.html b/docs/services/cos/index.html
index 974773a51..b6e9b726e 100644
--- a/docs/services/cos/index.html
+++ b/docs/services/cos/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/dashmap/index.html b/docs/services/dashmap/index.html
index 4fba54d9e..4cba5190f 100644
--- a/docs/services/dashmap/index.html
+++ b/docs/services/dashmap/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><me [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/fs/index.html b/docs/services/fs/index.html
index 99c00cd05..4ed07f743 100644
--- a/docs/services/fs/index.html
+++ b/docs/services/fs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/ftp/index.html b/docs/services/ftp/index.html
index c1b0e13ce..0031cd366 100644
--- a/docs/services/ftp/index.html
+++ b/docs/services/ftp/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/hdfs/index.html b/docs/services/hdfs/index.html
index 8bf95fe9d..bd7688e8e 100644
--- a/docs/services/hdfs/index.html
+++ b/docs/services/hdfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/ipfs/index.html b/docs/services/ipfs/index.html
index 8a3525615..314edd98a 100644
--- a/docs/services/ipfs/index.html
+++ b/docs/services/ipfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/memory/index.html b/docs/services/memory/index.html
index f709030d4..31c215f4e 100644
--- a/docs/services/memory/index.html
+++ b/docs/services/memory/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/redis/index.html b/docs/services/redis/index.html
index 3f8f407c1..bfb858fad 100644
--- a/docs/services/redis/index.html
+++ b/docs/services/redis/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/rocksdb/index.html b/docs/services/rocksdb/index.html
index 75f6cf86b..a408e4d0a 100644
--- a/docs/services/rocksdb/index.html
+++ b/docs/services/rocksdb/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><me [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -13,8 +13,8 @@
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
 issues. It is advisable to follow the steps provided in the <a href="https://github.com/facebook/rocksdb/blob/main/INSTALL.md" target="_blank" rel="noopener noreferrer"><code>INSTALL</code></a>
 file to build rocksdb, rather than relying on system libraries that
-may be outdated and incompatible.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2><ul><li><code>root</code>: Set the working directory of <code>OpenDAL</code></li><li><code>datadir</code>: Set the path to the rocksdb data directory</li></ul><p>You can refer to <!-- -->[<code>RocksdbBuilder</code>]<!-- -->&#x27;s docs for mor [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+may be outdated and incompatible.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration">​</a></h2><ul><li><code>root</code>: Set the working directory of <code>OpenDAL</code></li><li><code>datadir</code>: Set the path to the rocksdb data directory</li></ul><p>You can refer to <!-- -->[<code>RocksdbBuilder</code>]<!-- -->&#x27;s docs for mor [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/s3/index.html b/docs/services/s3/index.html
index bd6c4a47b..163b609b0 100644
--- a/docs/services/s3/index.html
+++ b/docs/services/s3/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/sftp/index.html b/docs/services/sftp/index.html
index 8cefcf39d..4ff744fe0 100644
--- a/docs/services/sftp/index.html
+++ b/docs/services/sftp/index.html
@@ -5,14 +5,14 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-lots of files, you should pay attention to close the file after using it.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2><p>This service can be used to:</p><ul class="contains-task-list containsTaskList_mC6p"><li class="task-list-item"><input type="checkbox" checked="" disabled=""> <!-- -->stat</li><li class="task-li [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+lots of files, you should pay attention to close the file after using it.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities">​</a></h2><p>This service can be used to:</p><ul class="contains-task-list containsTaskList_mC6p"><li class="task-list-item"><input type="checkbox" checked="" disabled=""> <!-- -->stat</li><li class="task-li [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/sled/index.html b/docs/services/sled/index.html
index 33dac76ca..2a19112e9 100644
--- a/docs/services/sled/index.html
+++ b/docs/services/sled/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/webhdfs/index.html b/docs/services/webhdfs/index.html
index e7d8552aa..fad7d947b 100644
--- a/docs/services/webhdfs/index.html
+++ b/docs/services/webhdfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><me [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/vision/index.html b/docs/vision/index.html
index 57c08e6ff..e876c13c5 100644
--- a/docs/vision/index.html
+++ b/docs/vision/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Vision | 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/vision"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><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.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 976e01f3b..aedc39ee6 100644
--- a/index.html
+++ b/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.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" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docse [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.ff24a91e.css">
-<link rel="preload" href="/assets/js/runtime~main.33a9a4dc.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.3a593831.js" as="script">
 <link rel="preload" href="/assets/js/main.094b9161.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div id="__docusaurus-base-url-issue-banner-container"></div><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria [...]
-<script src="/assets/js/runtime~main.33a9a4dc.js"></script>
+<script src="/assets/js/runtime~main.3a593831.js"></script>
 <script src="/assets/js/main.094b9161.js"></script>
 </body>
 </html>
\ No newline at end of file