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/12/07 08:55:01 UTC

(incubator-opendal) branch gh-pages updated: deploy: 0920ac37909eeaf5d18e15c98df860bf5ff47c15

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 360278234 deploy: 0920ac37909eeaf5d18e15c98df860bf5ff47c15
360278234 is described below

commit 360278234d30ab06c30e1da70c46caa70ce82818
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Thu Dec 7 08:54:57 2023 +0000

    deploy: 0920ac37909eeaf5d18e15c98df860bf5ff47c15
---
 404.html                                           |   4 +-
 .../{054cd2fb.a6416de2.js => 054cd2fb.280412a3.js} |   2 +-
 .../{0605a481.81074c30.js => 0605a481.e5b727d7.js} |   2 +-
 .../{093f5f04.85060a85.js => 093f5f04.71d34690.js} |   2 +-
 .../{09d8124e.cb352b95.js => 09d8124e.5833f065.js} |   2 +-
 .../{136e1c50.906f926a.js => 136e1c50.32c060a7.js} |   2 +-
 .../{151cd40f.2d87b344.js => 151cd40f.79da2846.js} |   2 +-
 .../{1957547a.fd98c8e9.js => 1957547a.c0eca585.js} |   2 +-
 assets/js/1db64337.a8d79f4f.js                     |   1 +
 assets/js/1db64337.fa38f60e.js                     |   1 -
 .../{22d8fa67.f1efcecb.js => 22d8fa67.a388f8bc.js} |   2 +-
 .../{29b208a4.14385d33.js => 29b208a4.71783267.js} |   2 +-
 .../{2cbf1097.c3d2fa29.js => 2cbf1097.79c5b17a.js} |   2 +-
 .../{3632610d.612677f6.js => 3632610d.92aa2de6.js} |   2 +-
 .../{381c04e3.8de9ea68.js => 381c04e3.8a502905.js} |   2 +-
 .../{39a95de5.2084dcbb.js => 39a95de5.2406f840.js} |   2 +-
 .../{42347498.9af04c5f.js => 42347498.a276b949.js} |   2 +-
 .../{434bbc94.eba4aa6f.js => 434bbc94.df5a13fc.js} |   2 +-
 .../{4e2d8f56.4b0f347a.js => 4e2d8f56.f5f7f312.js} |   2 +-
 assets/js/500d55cb.54d85960.js                     |   1 -
 .../{434bbc94.eba4aa6f.js => 500d55cb.89ae1663.js} |   2 +-
 .../{57a16c1d.6bcd3f64.js => 57a16c1d.fd0c6eff.js} |   2 +-
 .../{592d1076.b9f6dae1.js => 592d1076.3857ed0e.js} |   2 +-
 .../{621b831b.5ffe6cdc.js => 621b831b.2381ec44.js} |   2 +-
 .../{65bf2b43.f47a5831.js => 65bf2b43.881c3a1a.js} |   2 +-
 .../{67ecc70e.dd494efb.js => 67ecc70e.1f615799.js} |   2 +-
 .../{6a41242b.103dfd3a.js => 6a41242b.b8bdfbd8.js} |   2 +-
 .../{6dc695d1.e37ed05c.js => 6dc695d1.9598e37a.js} |   2 +-
 .../{6f4d3fa1.7de6a048.js => 6f4d3fa1.efaea531.js} |   2 +-
 .../{7263c0b5.13283b2c.js => 7263c0b5.994152db.js} |   2 +-
 assets/js/8070e160.3edaa9c5.js                     |   1 +
 assets/js/8070e160.85fd27f0.js                     |   1 -
 assets/js/8cc9519e.2cce4201.js                     |   1 -
 assets/js/8cc9519e.9c566be7.js                     |   1 +
 .../{8f4159f2.38b600af.js => 8f4159f2.dac17652.js} |   2 +-
 .../{8fb00c63.ac957133.js => 8fb00c63.97e47a67.js} |   2 +-
 .../{939f74f6.980acb43.js => 939f74f6.123208dd.js} |   2 +-
 .../{a0405932.ca0f3be9.js => a0405932.fa5c96a3.js} |   2 +-
 .../{b114cefa.f0f164e5.js => b114cefa.3b9ddf3b.js} |   2 +-
 .../{b56f9725.2e6bbe57.js => b56f9725.0e6f8155.js} |   2 +-
 .../{bb5b2057.83883374.js => bb5b2057.7e1f51ab.js} |   2 +-
 .../{c0600a1b.d429c1aa.js => c0600a1b.f9d9828d.js} |   2 +-
 .../{c46c6b55.96222456.js => c46c6b55.37c69eaa.js} |   2 +-
 .../{c6ab695b.38741998.js => c6ab695b.d8b4ae0d.js} |   2 +-
 .../{cc62039a.8a089a20.js => cc62039a.74013e6a.js} |   2 +-
 .../{d3c0d8d5.186b2f9f.js => d3c0d8d5.5f600dee.js} |   2 +-
 .../{ddccef4c.e5b31b6b.js => ddccef4c.2cfc49d8.js} |   2 +-
 .../{e892cec6.212ed703.js => e892cec6.43843724.js} |   2 +-
 .../{f1ca5a39.88562af1.js => f1ca5a39.6d6d0123.js} |   2 +-
 .../{f9145722.9a24151a.js => f9145722.9010c11b.js} |   2 +-
 .../{fde7cc64.6b9ff7f2.js => fde7cc64.cf4f3395.js} |   2 +-
 ...e~main.72d71391.js => runtime~main.c5993162.js} |   2 +-
 blog/archive/index.html                            |   4 +-
 blog/how-opendal-read-data/index.html              |   4 +-
 blog/index.html                                    |   4 +-
 blog/opendal-access-data-freely/index.html         |   4 +-
 blog/opendal-entered-apache-incubator/index.html   |   4 +-
 blog/owo-1/index.html                              |   4 +-
 blog/tags/announcement/index.html                  |   4 +-
 blog/tags/index.html                               |   4 +-
 blog/tags/internal/index.html                      |   4 +-
 blog/tags/owo/index.html                           |   4 +-
 community/category/committers/index.html           |   4 +-
 community/category/reference/index.html            |   4 +-
 community/committers/committer/index.html          |   4 +-
 community/committers/podling-report/index.html     |   4 +-
 .../reference/generate_release_note/index.html     |   4 +-
 .../committers/reference/setup_gpg/index.html      |   4 +-
 community/committers/release/index.html            |   4 +-
 community/committers/verify/index.html             |   4 +-
 community/index.html                               |   4 +-
 community/maturity/index.html                      |   4 +-
 community/security/index.html                      |   4 +-
 docs/c/functions.html                              |   3 -
 docs/c/functions_vars.html                         |   3 -
 docs/c/opendal_8h_source.html                      | 250 ++++++------
 docs/c/search/all_5.js                             |   3 +-
 docs/c/search/all_6.js                             |   4 +-
 docs/c/search/all_7.js                             | 138 +++----
 docs/c/search/all_8.js                             |  10 +-
 docs/c/search/all_9.js                             |  24 +-
 docs/c/search/all_a.js                             |   8 +-
 docs/c/search/all_b.js                             |   2 +-
 docs/c/search/all_c.js                             |  22 +-
 docs/c/search/classes_0.js                         |  36 +-
 docs/c/search/enums_0.js                           |   2 +-
 docs/c/search/enumvalues_0.js                      |  20 +-
 docs/c/search/files_0.js                           |   2 +-
 docs/c/search/files_1.js                           |   2 +-
 docs/c/search/functions_0.js                       |  72 ++--
 docs/c/search/pages_0.js                           |   2 +-
 docs/c/search/pages_1.js                           |   2 +-
 docs/c/search/typedefs_0.js                        |   4 +-
 docs/c/search/typedefs_1.js                        |   2 +-
 docs/c/search/typedefs_2.js                        |  40 +-
 docs/c/search/variables_0.js                       |   8 +-
 docs/c/search/variables_1.js                       |   6 +-
 docs/c/search/variables_2.js                       |   4 +-
 docs/c/search/variables_3.js                       |   4 +-
 docs/c/search/variables_4.js                       |   4 +-
 docs/c/search/variables_5.js                       |  13 +-
 docs/c/search/variables_6.js                       |   4 +-
 docs/c/search/variables_7.js                       |   2 +-
 docs/c/search/variables_8.js                       |  10 +-
 docs/c/search/variables_9.js                       |  22 +-
 docs/c/search/variables_a.js                       |   8 +-
 docs/c/search/variables_b.js                       |  22 +-
 docs/c/structopendal__capability-members.html      |  57 ++-
 docs/c/structopendal__capability.html              |  17 -
 docs/category/services/index.html                  |   4 +-
 docs/java/index-all.html                           |  10 +-
 docs/java/member-search-index.js                   |   2 +-
 docs/java/org/apache/opendal/Capability.html       | 148 +++----
 docs/lua/classes/opendal.metadata.html             |   2 +-
 docs/lua/classes/opendal.operator.html             |   2 +-
 docs/lua/index.html                                |   2 +-
 docs/nodejs/assets/search.js                       |   2 +-
 docs/nodejs/classes/BlockingLister.html            |   4 +-
 docs/nodejs/classes/BlockingReader.html            |   4 +-
 docs/nodejs/classes/BlockingWriter.html            |   8 +-
 docs/nodejs/classes/Capability.html                |  82 ++--
 docs/nodejs/classes/Entry.html                     |   4 +-
 docs/nodejs/classes/ExternalObject.html            |   4 +-
 docs/nodejs/classes/Layer.html                     |   2 +-
 docs/nodejs/classes/Lister.html                    |   4 +-
 docs/nodejs/classes/Metadata.html                  |  18 +-
 docs/nodejs/classes/Operator.html                  |  70 ++--
 docs/nodejs/classes/Reader.html                    |   6 +-
 docs/nodejs/classes/RetryLayer.html                |  14 +-
 docs/nodejs/classes/Writer.html                    |   8 +-
 docs/nodejs/interfaces/PresignedRequest.html       |   8 +-
 docs/overview/index.html                           |   6 +-
 docs/python/opendal.html                           | 450 ++++++++++-----------
 docs/python/search.js                              |   2 +-
 docs/quickstart/index.html                         |   6 +-
 .../implementors/core/default/trait.Default.js     |   2 +-
 .../opendal/raw/adapters/kv/struct.Backend.html    |  65 +--
 .../raw/adapters/typed_kv/struct.Backend.html      |  65 +--
 docs/rust/opendal/raw/oio/struct.FlatLister.html   |  10 +-
 .../opendal/raw/oio/struct.HierarchyLister.html    |   6 +-
 docs/rust/opendal/raw/oio/trait.BlockingList.html  |   4 +-
 docs/rust/opendal/raw/oio/trait.List.html          |   4 +-
 docs/rust/opendal/raw/trait.Accessor.html          |   2 +-
 docs/rust/opendal/struct.Capability.html           |   6 +-
 docs/rust/search-index.js                          |   2 +-
 docs/rust/src/opendal/layers/complete.rs.html      |  90 +----
 .../src/opendal/layers/immutable_index.rs.html     |   2 -
 docs/rust/src/opendal/layers/retry.rs.html         |   2 -
 .../src/opendal/raw/adapters/kv/backend.rs.html    | 148 +------
 .../opendal/raw/adapters/typed_kv/backend.rs.html  | 142 +------
 .../src/opendal/raw/oio/list/flat_list.rs.html     |  20 -
 .../opendal/raw/oio/list/hierarchy_list.rs.html    |  32 +-
 .../src/opendal/services/alluxio/backend.rs.html   |   2 -
 .../src/opendal/services/azblob/backend.rs.html    |   2 -
 .../src/opendal/services/azdls/backend.rs.html     |   2 -
 .../src/opendal/services/azfile/backend.rs.html    |   2 -
 docs/rust/src/opendal/services/b2/backend.rs.html  |   2 -
 docs/rust/src/opendal/services/cos/backend.rs.html |   2 -
 .../src/opendal/services/dashmap/backend.rs.html   |  20 +-
 .../rust/src/opendal/services/dbfs/backend.rs.html |   2 -
 docs/rust/src/opendal/services/fs/backend.rs.html  |   2 -
 docs/rust/src/opendal/services/ftp/backend.rs.html |   2 -
 docs/rust/src/opendal/services/gcs/backend.rs.html |   2 -
 .../src/opendal/services/gdrive/backend.rs.html    |   2 -
 .../rust/src/opendal/services/hdfs/backend.rs.html |   2 -
 .../opendal/services/huggingface/backend.rs.html   |   2 -
 .../rust/src/opendal/services/ipfs/backend.rs.html |   2 -
 .../src/opendal/services/ipmfs/backend.rs.html     |   2 -
 docs/rust/src/opendal/services/obs/backend.rs.html |   2 -
 .../src/opendal/services/onedrive/backend.rs.html  |   2 -
 docs/rust/src/opendal/services/oss/backend.rs.html |   2 -
 docs/rust/src/opendal/services/s3/backend.rs.html  |   2 -
 .../rust/src/opendal/services/sftp/backend.rs.html |   2 -
 .../src/opendal/services/swift/backend.rs.html     |   2 -
 .../src/opendal/services/webdav/backend.rs.html    |   2 -
 .../src/opendal/services/webhdfs/backend.rs.html   |   2 -
 docs/rust/src/opendal/types/capability.rs.html     |   4 -
 docs/services/atomicserver/index.html              |   6 +-
 docs/services/azblob/index.html                    |   6 +-
 docs/services/azdls/index.html                     |   6 +-
 docs/services/cacache/index.html                   |   6 +-
 docs/services/cos/index.html                       |   6 +-
 docs/services/d1/index.html                        |   6 +-
 docs/services/dashmap/index.html                   |   6 +-
 docs/services/dropbox/index.html                   |   6 +-
 docs/services/etcd/index.html                      |   6 +-
 docs/services/foundationdb/index.html              |   6 +-
 docs/services/fs/index.html                        |   6 +-
 docs/services/ftp/index.html                       |   6 +-
 docs/services/gcs/index.html                       |   6 +-
 docs/services/gdrive/index.html                    |   6 +-
 docs/services/ghac/index.html                      |   6 +-
 docs/services/gridfs/index.html                    |   6 +-
 docs/services/hdfs/index.html                      |   6 +-
 docs/services/http/index.html                      |   6 +-
 docs/services/ipfs/index.html                      |   6 +-
 docs/services/ipmfs/index.html                     |   6 +-
 docs/services/libsql/index.html                    |   6 +-
 docs/services/memcached/index.html                 |   6 +-
 docs/services/memory/index.html                    |   6 +-
 docs/services/moka/index.html                      |   6 +-
 docs/services/mongodb/index.html                   |   6 +-
 docs/services/mysql/index.html                     |   6 +-
 docs/services/obs/index.html                       |   6 +-
 docs/services/onedrive/index.html                  |   6 +-
 docs/services/oss/index.html                       |   6 +-
 docs/services/persy/index.html                     |   6 +-
 docs/services/postgresql/index.html                |   6 +-
 docs/services/redb/index.html                      |   6 +-
 docs/services/redis/index.html                     |   6 +-
 docs/services/rocksdb/index.html                   |   6 +-
 docs/services/s3/index.html                        |   6 +-
 docs/services/sftp/index.html                      |   6 +-
 docs/services/sled/index.html                      |   6 +-
 docs/services/sqlite/index.html                    |   6 +-
 docs/services/supabase/index.html                  |   6 +-
 docs/services/swift/index.html                     |   6 +-
 docs/services/tikv/index.html                      |   6 +-
 docs/services/vercel_artifacts/index.html          |   6 +-
 docs/services/webdav/index.html                    |   6 +-
 docs/services/webhdfs/index.html                   |   6 +-
 download/index.html                                |   4 +-
 index.html                                         |   4 +-
 223 files changed, 1206 insertions(+), 1625 deletions(-)

diff --git a/404.html b/404.html
index 02b7e5c71..c6fdd744b 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/054cd2fb.a6416de2.js b/assets/js/054cd2fb.280412a3.js
similarity index 84%
rename from assets/js/054cd2fb.a6416de2.js
rename to assets/js/054cd2fb.280412a3.js
index 5ab220dcf..877ce3503 100644
--- a/assets/js/054cd2fb.a6416de2.js
+++ b/assets/js/054cd2fb.280412a3.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1846],{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 s(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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1846],{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 s(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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/0605a481.81074c30.js b/assets/js/0605a481.e5b727d7.js
similarity index 83%
rename from assets/js/0605a481.81074c30.js
rename to assets/js/0605a481.e5b727d7.js
index 623b5dd9d..1e571f044 100644
--- a/assets/js/0605a481.81074c30.js
+++ b/assets/js/0605a481.e5b727d7.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2113],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2113],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/093f5f04.85060a85.js b/assets/js/093f5f04.71d34690.js
similarity index 62%
rename from assets/js/093f5f04.85060a85.js
rename to assets/js/093f5f04.71d34690.js
index 1c031b56d..fab9b2d1e 100644
--- a/assets/js/093f5f04.85060a85.js
+++ b/assets/js/093f5f04.71d34690.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6915],{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 s(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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6915],{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 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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/09d8124e.cb352b95.js b/assets/js/09d8124e.5833f065.js
similarity index 87%
rename from assets/js/09d8124e.cb352b95.js
rename to assets/js/09d8124e.5833f065.js
index 7b09df545..750e4959b 100644
--- a/assets/js/09d8124e.cb352b95.js
+++ b/assets/js/09d8124e.5833f065.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4543],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4543],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/136e1c50.906f926a.js b/assets/js/136e1c50.32c060a7.js
similarity index 83%
rename from assets/js/136e1c50.906f926a.js
rename to assets/js/136e1c50.32c060a7.js
index 02179ecc0..24b6c4e6f 100644
--- a/assets/js/136e1c50.906f926a.js
+++ b/assets/js/136e1c50.32c060a7.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3057],{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 i(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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3057],{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 i(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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/151cd40f.2d87b344.js b/assets/js/151cd40f.79da2846.js
similarity index 86%
rename from assets/js/151cd40f.2d87b344.js
rename to assets/js/151cd40f.79da2846.js
index d1c875240..1606426c1 100644
--- a/assets/js/151cd40f.2d87b344.js
+++ b/assets/js/151cd40f.79da2846.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3702],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>b});var a=r(7294);function n(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 a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3702],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>b});var a=r(7294);function n(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 a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/1957547a.fd98c8e9.js b/assets/js/1957547a.c0eca585.js
similarity index 72%
rename from assets/js/1957547a.fd98c8e9.js
rename to assets/js/1957547a.c0eca585.js
index ee03c0891..774503cb2 100644
--- a/assets/js/1957547a.fd98c8e9.js
+++ b/assets/js/1957547a.c0eca585.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4477],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4477],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.a8d79f4f.js b/assets/js/1db64337.a8d79f4f.js
new file mode 100644
index 000000000..c7c87a45e
--- /dev/null
+++ b/assets/js/1db64337.a8d79f4f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(7294);function n(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 a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.fa38f60e.js b/assets/js/1db64337.fa38f60e.js
deleted file mode 100644
index c9fbecacb..000000000
--- a/assets/js/1db64337.fa38f60e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(7294);function n(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 a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/22d8fa67.f1efcecb.js b/assets/js/22d8fa67.a388f8bc.js
similarity index 85%
rename from assets/js/22d8fa67.f1efcecb.js
rename to assets/js/22d8fa67.a388f8bc.js
index 39cf8dfa0..e0a86ea59 100644
--- a/assets/js/22d8fa67.f1efcecb.js
+++ b/assets/js/22d8fa67.a388f8bc.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4536],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4536],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/29b208a4.14385d33.js b/assets/js/29b208a4.71783267.js
similarity index 84%
rename from assets/js/29b208a4.14385d33.js
rename to assets/js/29b208a4.71783267.js
index 953c4559d..d2c3a913e 100644
--- a/assets/js/29b208a4.14385d33.js
+++ b/assets/js/29b208a4.71783267.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6152],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6152],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/2cbf1097.c3d2fa29.js b/assets/js/2cbf1097.79c5b17a.js
similarity index 91%
rename from assets/js/2cbf1097.c3d2fa29.js
rename to assets/js/2cbf1097.79c5b17a.js
index 860b90069..50989183d 100644
--- a/assets/js/2cbf1097.c3d2fa29.js
+++ b/assets/js/2cbf1097.79c5b17a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2804],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2804],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/3632610d.612677f6.js b/assets/js/3632610d.92aa2de6.js
similarity index 85%
rename from assets/js/3632610d.612677f6.js
rename to assets/js/3632610d.92aa2de6.js
index 536916c4d..fc1006482 100644
--- a/assets/js/3632610d.612677f6.js
+++ b/assets/js/3632610d.92aa2de6.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2963],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2963],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/381c04e3.8de9ea68.js b/assets/js/381c04e3.8a502905.js
similarity index 72%
rename from assets/js/381c04e3.8de9ea68.js
rename to assets/js/381c04e3.8a502905.js
index 5670f9e39..8b6c4be3a 100644
--- a/assets/js/381c04e3.8de9ea68.js
+++ b/assets/js/381c04e3.8a502905.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1725],{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 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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1725],{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 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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/39a95de5.2084dcbb.js b/assets/js/39a95de5.2406f840.js
similarity index 83%
rename from assets/js/39a95de5.2084dcbb.js
rename to assets/js/39a95de5.2406f840.js
index 4cdd00498..3d9bbd59d 100644
--- a/assets/js/39a95de5.2084dcbb.js
+++ b/assets/js/39a95de5.2406f840.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5737],{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 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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5737],{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 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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/42347498.9af04c5f.js b/assets/js/42347498.a276b949.js
similarity index 85%
rename from assets/js/42347498.9af04c5f.js
rename to assets/js/42347498.a276b949.js
index d86d7ac29..9ac90d748 100644
--- a/assets/js/42347498.9af04c5f.js
+++ b/assets/js/42347498.a276b949.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7254],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7254],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/434bbc94.eba4aa6f.js b/assets/js/434bbc94.df5a13fc.js
similarity index 85%
copy from assets/js/434bbc94.eba4aa6f.js
copy to assets/js/434bbc94.df5a13fc.js
index ed52a81bf..e6f712642 100644
--- a/assets/js/434bbc94.eba4aa6f.js
+++ b/assets/js/434bbc94.df5a13fc.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1163],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1163],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/4e2d8f56.4b0f347a.js b/assets/js/4e2d8f56.f5f7f312.js
similarity index 83%
rename from assets/js/4e2d8f56.4b0f347a.js
rename to assets/js/4e2d8f56.f5f7f312.js
index 43f810113..75293181d 100644
--- a/assets/js/4e2d8f56.4b0f347a.js
+++ b/assets/js/4e2d8f56.f5f7f312.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6752],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6752],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/500d55cb.54d85960.js b/assets/js/500d55cb.54d85960.js
deleted file mode 100644
index 886d1cf0b..000000000
--- a/assets/js/500d55cb.54d85960.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7489],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/434bbc94.eba4aa6f.js b/assets/js/500d55cb.89ae1663.js
similarity index 61%
rename from assets/js/434bbc94.eba4aa6f.js
rename to assets/js/500d55cb.89ae1663.js
index ed52a81bf..730b5ef23 100644
--- a/assets/js/434bbc94.eba4aa6f.js
+++ b/assets/js/500d55cb.89ae1663.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1163],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7489],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/57a16c1d.6bcd3f64.js b/assets/js/57a16c1d.fd0c6eff.js
similarity index 83%
rename from assets/js/57a16c1d.6bcd3f64.js
rename to assets/js/57a16c1d.fd0c6eff.js
index 7a97bbbd5..cf75ed8da 100644
--- a/assets/js/57a16c1d.6bcd3f64.js
+++ b/assets/js/57a16c1d.fd0c6eff.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7757],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7757],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/592d1076.b9f6dae1.js b/assets/js/592d1076.3857ed0e.js
similarity index 83%
rename from assets/js/592d1076.b9f6dae1.js
rename to assets/js/592d1076.3857ed0e.js
index 644c41759..c828f11fd 100644
--- a/assets/js/592d1076.b9f6dae1.js
+++ b/assets/js/592d1076.3857ed0e.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[990],{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([[990],{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/621b831b.5ffe6cdc.js b/assets/js/621b831b.2381ec44.js
similarity index 84%
rename from assets/js/621b831b.5ffe6cdc.js
rename to assets/js/621b831b.2381ec44.js
index 7c3a5d6ed..545927878 100644
--- a/assets/js/621b831b.5ffe6cdc.js
+++ b/assets/js/621b831b.2381ec44.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4551],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4551],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/65bf2b43.f47a5831.js b/assets/js/65bf2b43.881c3a1a.js
similarity index 82%
rename from assets/js/65bf2b43.f47a5831.js
rename to assets/js/65bf2b43.881c3a1a.js
index 674d0ae24..cc1a7d1f0 100644
--- a/assets/js/65bf2b43.f47a5831.js
+++ b/assets/js/65bf2b43.881c3a1a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2115],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2115],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/67ecc70e.dd494efb.js b/assets/js/67ecc70e.1f615799.js
similarity index 85%
rename from assets/js/67ecc70e.dd494efb.js
rename to assets/js/67ecc70e.1f615799.js
index 71b0547cc..e1bbfebfb 100644
--- a/assets/js/67ecc70e.dd494efb.js
+++ b/assets/js/67ecc70e.1f615799.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4434],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4434],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/6a41242b.103dfd3a.js b/assets/js/6a41242b.b8bdfbd8.js
similarity index 82%
rename from assets/js/6a41242b.103dfd3a.js
rename to assets/js/6a41242b.b8bdfbd8.js
index 134baa175..c07a22af2 100644
--- a/assets/js/6a41242b.103dfd3a.js
+++ b/assets/js/6a41242b.b8bdfbd8.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5571],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,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 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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5571],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,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 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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/6dc695d1.e37ed05c.js b/assets/js/6dc695d1.9598e37a.js
similarity index 81%
rename from assets/js/6dc695d1.e37ed05c.js
rename to assets/js/6dc695d1.9598e37a.js
index ef79b3127..d4d061f22 100644
--- a/assets/js/6dc695d1.e37ed05c.js
+++ b/assets/js/6dc695d1.9598e37a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5982],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5982],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/6f4d3fa1.7de6a048.js b/assets/js/6f4d3fa1.efaea531.js
similarity index 85%
rename from assets/js/6f4d3fa1.7de6a048.js
rename to assets/js/6f4d3fa1.efaea531.js
index 2e4080192..d62f27175 100644
--- a/assets/js/6f4d3fa1.7de6a048.js
+++ b/assets/js/6f4d3fa1.efaea531.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5885],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5885],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/7263c0b5.13283b2c.js b/assets/js/7263c0b5.994152db.js
similarity index 71%
rename from assets/js/7263c0b5.13283b2c.js
rename to assets/js/7263c0b5.994152db.js
index 847246a78..b265ba59c 100644
--- a/assets/js/7263c0b5.13283b2c.js
+++ b/assets/js/7263c0b5.994152db.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4649],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4649],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8070e160.3edaa9c5.js b/assets/js/8070e160.3edaa9c5.js
new file mode 100644
index 000000000..6a7b46bea
--- /dev/null
+++ b/assets/js/8070e160.3edaa9c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2651],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>g});var a=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8070e160.85fd27f0.js b/assets/js/8070e160.85fd27f0.js
deleted file mode 100644
index 153135459..000000000
--- a/assets/js/8070e160.85fd27f0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2651],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>g});var a=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8cc9519e.2cce4201.js b/assets/js/8cc9519e.2cce4201.js
deleted file mode 100644
index 1ecdf1d5a..000000000
--- a/assets/js/8cc9519e.2cce4201.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1652],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>k});var r=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8cc9519e.9c566be7.js b/assets/js/8cc9519e.9c566be7.js
new file mode 100644
index 000000000..4e50ffbc3
--- /dev/null
+++ b/assets/js/8cc9519e.9c566be7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1652],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8f4159f2.38b600af.js b/assets/js/8f4159f2.dac17652.js
similarity index 88%
rename from assets/js/8f4159f2.38b600af.js
rename to assets/js/8f4159f2.dac17652.js
index 2aed088e8..b12dff08f 100644
--- a/assets/js/8f4159f2.38b600af.js
+++ b/assets/js/8f4159f2.dac17652.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4719],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4719],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8fb00c63.ac957133.js b/assets/js/8fb00c63.97e47a67.js
similarity index 84%
rename from assets/js/8fb00c63.ac957133.js
rename to assets/js/8fb00c63.97e47a67.js
index 0d069595f..1a7280a44 100644
--- a/assets/js/8fb00c63.ac957133.js
+++ b/assets/js/8fb00c63.97e47a67.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4600],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4600],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/939f74f6.980acb43.js b/assets/js/939f74f6.123208dd.js
similarity index 86%
rename from assets/js/939f74f6.980acb43.js
rename to assets/js/939f74f6.123208dd.js
index 250cb76ef..cce4b9bb4 100644
--- a/assets/js/939f74f6.980acb43.js
+++ b/assets/js/939f74f6.123208dd.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4277],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4277],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/a0405932.ca0f3be9.js b/assets/js/a0405932.fa5c96a3.js
similarity index 84%
rename from assets/js/a0405932.ca0f3be9.js
rename to assets/js/a0405932.fa5c96a3.js
index 6dc2653bc..0b01cd63f 100644
--- a/assets/js/a0405932.ca0f3be9.js
+++ b/assets/js/a0405932.fa5c96a3.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/b114cefa.f0f164e5.js b/assets/js/b114cefa.3b9ddf3b.js
similarity index 84%
rename from assets/js/b114cefa.f0f164e5.js
rename to assets/js/b114cefa.3b9ddf3b.js
index c60e14725..251ae1c7b 100644
--- a/assets/js/b114cefa.f0f164e5.js
+++ b/assets/js/b114cefa.3b9ddf3b.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2161],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,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 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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2161],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,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 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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/b56f9725.2e6bbe57.js b/assets/js/b56f9725.0e6f8155.js
similarity index 84%
rename from assets/js/b56f9725.2e6bbe57.js
rename to assets/js/b56f9725.0e6f8155.js
index 04b28352e..4f021f1ec 100644
--- a/assets/js/b56f9725.2e6bbe57.js
+++ b/assets/js/b56f9725.0e6f8155.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.83883374.js b/assets/js/bb5b2057.7e1f51ab.js
similarity index 83%
rename from assets/js/bb5b2057.83883374.js
rename to assets/js/bb5b2057.7e1f51ab.js
index ab0b5a11f..4105b9487 100644
--- a/assets/js/bb5b2057.83883374.js
+++ b/assets/js/bb5b2057.7e1f51ab.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5214],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5214],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/c0600a1b.d429c1aa.js b/assets/js/c0600a1b.f9d9828d.js
similarity index 82%
rename from assets/js/c0600a1b.d429c1aa.js
rename to assets/js/c0600a1b.f9d9828d.js
index 0709d4d8c..46fe204e1 100644
--- a/assets/js/c0600a1b.d429c1aa.js
+++ b/assets/js/c0600a1b.f9d9828d.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8874],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8874],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/c46c6b55.96222456.js b/assets/js/c46c6b55.37c69eaa.js
similarity index 83%
rename from assets/js/c46c6b55.96222456.js
rename to assets/js/c46c6b55.37c69eaa.js
index 9ae49d688..4a141c5b0 100644
--- a/assets/js/c46c6b55.96222456.js
+++ b/assets/js/c46c6b55.37c69eaa.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5927],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5927],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/c6ab695b.38741998.js b/assets/js/c6ab695b.d8b4ae0d.js
similarity index 85%
rename from assets/js/c6ab695b.38741998.js
rename to assets/js/c6ab695b.d8b4ae0d.js
index fe372dce2..0839667e2 100644
--- a/assets/js/c6ab695b.38741998.js
+++ b/assets/js/c6ab695b.d8b4ae0d.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7289],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7289],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/cc62039a.8a089a20.js b/assets/js/cc62039a.74013e6a.js
similarity index 90%
rename from assets/js/cc62039a.8a089a20.js
rename to assets/js/cc62039a.74013e6a.js
index 0fe08cf13..902daf475 100644
--- a/assets/js/cc62039a.8a089a20.js
+++ b/assets/js/cc62039a.74013e6a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1011],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1011],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/d3c0d8d5.186b2f9f.js b/assets/js/d3c0d8d5.5f600dee.js
similarity index 73%
rename from assets/js/d3c0d8d5.186b2f9f.js
rename to assets/js/d3c0d8d5.5f600dee.js
index ab69688f8..08406fe9b 100644
--- a/assets/js/d3c0d8d5.186b2f9f.js
+++ b/assets/js/d3c0d8d5.5f600dee.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4790],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4790],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/ddccef4c.e5b31b6b.js b/assets/js/ddccef4c.2cfc49d8.js
similarity index 86%
rename from assets/js/ddccef4c.e5b31b6b.js
rename to assets/js/ddccef4c.2cfc49d8.js
index 55a2cc6dc..84961592b 100644
--- a/assets/js/ddccef4c.e5b31b6b.js
+++ b/assets/js/ddccef4c.2cfc49d8.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[9826],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[9826],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/e892cec6.212ed703.js b/assets/js/e892cec6.43843724.js
similarity index 86%
rename from assets/js/e892cec6.212ed703.js
rename to assets/js/e892cec6.43843724.js
index a238b5b9c..9c39f568b 100644
--- a/assets/js/e892cec6.212ed703.js
+++ b/assets/js/e892cec6.43843724.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3845],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3845],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/f1ca5a39.88562af1.js b/assets/js/f1ca5a39.6d6d0123.js
similarity index 87%
rename from assets/js/f1ca5a39.88562af1.js
rename to assets/js/f1ca5a39.6d6d0123.js
index c4b72129f..6733e33a8 100644
--- a/assets/js/f1ca5a39.88562af1.js
+++ b/assets/js/f1ca5a39.6d6d0123.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4538],{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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4538],{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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/f9145722.9a24151a.js b/assets/js/f9145722.9010c11b.js
similarity index 86%
rename from assets/js/f9145722.9a24151a.js
rename to assets/js/f9145722.9010c11b.js
index eb4b7de76..f73022b24 100644
--- a/assets/js/f9145722.9a24151a.js
+++ b/assets/js/f9145722.9010c11b.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6529],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});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 l(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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6529],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});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 l(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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/fde7cc64.6b9ff7f2.js b/assets/js/fde7cc64.cf4f3395.js
similarity index 85%
rename from assets/js/fde7cc64.6b9ff7f2.js
rename to assets/js/fde7cc64.cf4f3395.js
index 28c64eefe..746b734ee 100644
--- a/assets/js/fde7cc64.6b9ff7f2.js
+++ b/assets/js/fde7cc64.cf4f3395.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3454],{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 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)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3454],{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 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)}retu [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.72d71391.js b/assets/js/runtime~main.c5993162.js
similarity index 81%
rename from assets/js/runtime~main.72d71391.js
rename to assets/js/runtime~main.c5993162.js
index d559055e2..f446463c3 100644
--- a/assets/js/runtime~main.72d71391.js
+++ b/assets/js/runtime~main.c5993162.js
@@ -1 +1 @@
-(()=>{"use strict";var e,c,a,f,b,d={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,b)=>{if(!a){var d=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,c,a,f,b,d={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,b)=>{if(!a){var d=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 84749499c..ce0633d34 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/how-opendal-read-data/index.html b/blog/how-opendal-read-data/index.html
index bc8f8cf5c..700ee38e8 100644
--- a/blog/how-opendal-read-data/index.html
+++ b/blog/how-opendal-read-data/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">OpenDAL Internal: Data Reading | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/how-opendal-read-data"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:la [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index f2ca71969..019843154 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/opendal-access-data-freely/index.html b/blog/opendal-access-data-freely/index.html
index 08773c236..46f02e926 100644
--- a/blog/opendal-access-data-freely/index.html
+++ b/blog/opendal-access-data-freely/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Apache OpenDAL(Incubating): Access Data Freely | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/opendal-access-data-freely"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="tru [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 0730af6f0..df2a7fd94 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/owo-1/index.html b/blog/owo-1/index.html
index a314e4a2d..cbe2bb1bd 100644
--- a/blog/owo-1/index.html
+++ b/blog/owo-1/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">OwO #1: The v0.40 Release | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/owo-1"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"> [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 eeeb95189..ad495dc17 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">2 posts tagged with &quot;announcement&quot; | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/announcement"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 88c6ff576..4876accf2 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/internal/index.html b/blog/tags/internal/index.html
index e4e518868..92dd0cef9 100644
--- a/blog/tags/internal/index.html
+++ b/blog/tags/internal/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">One post tagged with &quot;internal&quot; | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/internal"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:tit [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/owo/index.html b/blog/tags/owo/index.html
index 658d52e4a..743908aeb 100644
--- a/blog/tags/owo/index.html
+++ b/blog/tags/owo/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">One post tagged with &quot;owo&quot; | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/owo"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" conten [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/category/committers/index.html b/community/category/committers/index.html
index 6df30cc50..ace1f57b3 100644
--- a/community/category/committers/index.html
+++ b/community/category/committers/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Committers | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/committers"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="c [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/category/reference/index.html b/community/category/reference/index.html
index 772c740b2..fa879e700 100644
--- a/community/category/reference/index.html
+++ b/community/category/reference/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Reference | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/reference"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="cur [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/committers/committer/index.html b/community/committers/committer/index.html
index 457d7b527..ea908ff2d 100644
--- a/community/committers/committer/index.html
+++ b/community/committers/committer/index.html
@@ -5,14 +5,14 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Committer onboarding | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/committer"><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" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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 [...]
 If they decide in favor, they should select &quot;Reply All&quot; and express their decision.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="submit-cla">Submit CLA<a href="#submit-cla" class="hash-link" aria-label="Direct link to Submit CLA" title="Direct link to Submit CLA">​</a></h2><ol><li>Download the ICLA from <a href="https://www.apache.org/licenses/contributor-agreements.html#clas" target="_blank" rel="noopener noreferrer">https://www.apache.org/licenses/contributor-agreeme [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/committers/podling-report/index.html b/community/committers/podling-report/index.html
index ac7762962..7c438dfc7 100644
--- a/community/committers/podling-report/index.html
+++ b/community/committers/podling-report/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Podling status reports | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/podling-report"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_v [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/committers/reference/generate_release_note/index.html b/community/committers/reference/generate_release_note/index.html
index 581fb0129..a24b66147 100644
--- a/community/committers/reference/generate_release_note/index.html
+++ b/community/committers/reference/generate_release_note/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Generate release note | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/reference/generate_release_note"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" na [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/committers/reference/setup_gpg/index.html b/community/committers/reference/setup_gpg/index.html
index 03b5107ea..fcfdfcec0 100644
--- a/community/committers/reference/setup_gpg/index.html
+++ b/community/committers/reference/setup_gpg/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Setup GPG key | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/reference/setup_gpg"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_versi [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/committers/release/index.html b/community/committers/release/index.html
index fc567a917..d76063c8c 100644
--- a/community/committers/release/index.html
+++ b/community/committers/release/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Create a OpenDAL Release | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/release"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_versio [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -19,7 +19,7 @@ please cancel the release for the current <code>release_version</code>,
 <em>increase th RC counting</em> and re-initiate a release with the new <code>release_version</code>.
 And remember to delete the wrong artifacts from the SVN dist repo.
 Additionally, you should also drop the staging Maven artifacts on <a href="https://repository.apache.org" target="_blank" rel="noopener noreferrer">https://repository.apache.org</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="voting">Voting<a href="#voting" class="hash-link" aria-label="Direct link to Voting" title="Direct link to Voting">​</a></h2><p>As an incubating project, OpenDAL requires votes from both the OpenDAL Community and Incubator Community.</p><h3 class="anchor  [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/committers/verify/index.html b/community/committers/verify/index.html
index 6b39ce210..b6763c064 100644
--- a/community/committers/verify/index.html
+++ b/community/committers/verify/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Verify a release candidate | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/verify"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_versi [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -13,7 +13,7 @@
 <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 [...]
 You can download it directly from <a href="https://raw.githubusercontent.com/apache/incubator-opendal/main/scripts/check.sh" target="_blank" rel="noopener noreferrer">here</a>
 or check it out from the repository:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone git@github.com:apache/incuba [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index c66002bd0..e553da83e 100644
--- a/community/index.html
+++ b/community/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Community | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/"><meta data-rh="true" 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-r [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -14,7 +14,7 @@
 in making this project more comprehensive and valuable.
 We sincerely appreciate your support and efforts!</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="committers">Committers<a href="#committers" class="hash-link" aria-label="Direct link to Committers" title="Direct link to Committers">​</a></h3><p>The list below could be outdated. Please find the most up-to-date list <a href="https://people.apache.org/phonebook.html?podling=opendal" target="_blank" rel="noopener noreferrer">here</a>.</p><p>This list of committers is sorted alphabetic [...]
 And bolded names are PPMC members.</p><table><thead><tr><th><b>Avatar</b></th><th><b>Name</b></th><th><b>Apache ID</b></th><th><b>GitHub ID</b></th></tr></thead><tbody><tr><td><img width="64" class="contributorAvatar_VEGy" src="https://github.com/ClSlaid.png" alt="Cai Lue"></td><td><b>Cai Lue</b></td><td><a target="_blank" href="https://people.apache.org/phonebook.html?uid=cailue">cailue</a></td><td><a target="_blank" href="https://github.com/ClSlaid">ClSlaid</a></td></tr><tr><td><img wi [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/maturity/index.html b/community/maturity/index.html
index 43621b291..1442e9ba2 100644
--- a/community/maturity/index.html
+++ b/community/maturity/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Maturity | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/maturity"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/security/index.html b/community/security/index.html
index fd80a22f9..c9a257a90 100644
--- a/community/security/index.html
+++ b/community/security/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Security | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/security"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -13,7 +13,7 @@
 <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 [...]
 or you discover a vulnerability or potential threat,
 please do not hesitate to get in touch with the Apache Security Team by dropping an email at <a href="mailto:private@opendal.apache.org" target="_blank" rel="noopener noreferrer">private@opendal.apache.org</a>.</p><p>Please specify the project name as &quot;OpenDAL&quot; in the email, and provide a description of the relevant problem or potential threat. You are also urged to recommend how to reproduce and replicate the issue.</p><p>The Apache Security Team and the OpenDAL community will [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/c/functions.html b/docs/c/functions.html
index b2b84a523..a76f5ceb3 100644
--- a/docs/c/functions.html
+++ b/docs/c/functions.html
@@ -153,9 +153,6 @@ $(function() {
 <li>list_with_start_after
 : <a class="el" href="structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff">opendal_capability</a>
 </li>
-<li>list_without_recursive
-: <a class="el" href="structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">opendal_capability</a>
-</li>
 <li>lister
 : <a class="el" href="structopendal__result__list.html#a54b9b09c29f8d867da187c32e362398a">opendal_result_list</a>
 </li>
diff --git a/docs/c/functions_vars.html b/docs/c/functions_vars.html
index 1b2fff7de..576c170e1 100644
--- a/docs/c/functions_vars.html
+++ b/docs/c/functions_vars.html
@@ -153,9 +153,6 @@ $(function() {
 <li>list_with_start_after
 : <a class="el" href="structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff">opendal_capability</a>
 </li>
-<li>list_without_recursive
-: <a class="el" href="structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">opendal_capability</a>
-</li>
 <li>lister
 : <a class="el" href="structopendal__result__list.html#a54b9b09c29f8d867da187c32e362398a">opendal_result_list</a>
 </li>
diff --git a/docs/c/opendal_8h_source.html b/docs/c/opendal_8h_source.html
index 010f227a1..e0b9caf81 100644
--- a/docs/c/opendal_8h_source.html
+++ b/docs/c/opendal_8h_source.html
@@ -229,121 +229,120 @@ $(function() {
 <div class="line"><a name="l00629"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a9df67d06090f43e325cd502231acf667">  629</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a9df67d06090f43e325cd502231acf667">list</a>;</div>
 <div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="structopendal__capability.html#afa301fcf85901fb6905305d91411aafb">  633</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#afa301fcf85901fb6905305d91411aafb">list_with_limit</a>;</div>
 <div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff">  637</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff">list_with_start_after</a>;</div>
-<div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">  641</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">list_without_recursive</a>;</div>
-<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">  645</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">list_with_recursive</a>;</div>
-<div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">  649</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">presign</a>;</div>
-<div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">  653</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">presign_read</a>;</div>
-<div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">  657</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">presign_stat</a>;</div>
-<div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">  661</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">presign_write</a>;</div>
-<div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a">  665</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a">batch</a>;</div>
-<div class="line"><a name="l00669"></a><span class="lineno"><a class="line" href="structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca">  669</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca">batch_delete</a>;</div>
-<div class="line"><a name="l00675"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29">  675</a></span>&#160;  uintptr_t <a class="code" href="structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29">batch_max_operations</a>;</div>
-<div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133">  679</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133">blocking</a>;</div>
-<div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3">  680</a></span>&#160;} <a class="code" href="opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3">opendal_capability</a>;</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160; </div>
-<div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="structopendal__result__reader__read.html">  687</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structopendal__result__reader__read.html">opendal_result_reader_read</a> {</div>
-<div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810">  691</a></span>&#160;  uintptr_t <a class="code" href="structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810">size</a>;</div>
-<div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="structopendal__result__reader__read.html#a1279e7b3cb6beaf63da0f6ee9370ba36">  695</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="structopendal__result__reader__read.html#a1279e7b3cb6beaf63da0f6ee9370ba36">error</a>;</div>
-<div class="line"><a name="l00696"></a><span class="lineno"><a class="line" href="opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff">  696</a></span>&#160;} <a class="code" href="opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff">opendal_result_reader_read</a>;</div>
+<div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">  641</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">list_with_recursive</a>;</div>
+<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">  645</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">presign</a>;</div>
+<div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">  649</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">presign_read</a>;</div>
+<div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">  653</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">presign_stat</a>;</div>
+<div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">  657</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">presign_write</a>;</div>
+<div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a">  661</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a">batch</a>;</div>
+<div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca">  665</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca">batch_delete</a>;</div>
+<div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29">  671</a></span>&#160;  uintptr_t <a class="code" href="structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29">batch_max_operations</a>;</div>
+<div class="line"><a name="l00675"></a><span class="lineno"><a class="line" href="structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133">  675</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133">blocking</a>;</div>
+<div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3">  676</a></span>&#160;} <a class="code" href="opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3">opendal_capability</a>;</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160; </div>
+<div class="line"><a name="l00683"></a><span class="lineno"><a class="line" href="structopendal__result__reader__read.html">  683</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structopendal__result__reader__read.html">opendal_result_reader_read</a> {</div>
+<div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810">  687</a></span>&#160;  uintptr_t <a class="code" href="structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810">size</a>;</div>
+<div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="structopendal__result__reader__read.html#a1279e7b3cb6beaf63da0f6ee9370ba36">  691</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="structopendal__result__reader__read.html#a1279e7b3cb6beaf63da0f6ee9370ba36">error</a>;</div>
+<div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff">  692</a></span>&#160;} <a class="code" href="opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff">opendal_result_reader_read</a>;</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160; </div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// __cplusplus</span></div>
 <div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; </div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// __cplusplus</span></div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160; </div>
-<div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="opendal_8h.html#a4a8d92df21f5473762677afd9af5f714">  705</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a4a8d92df21f5473762677afd9af5f714">opendal_error_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__error.html">opendal_error</a> *ptr);</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160; </div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__lister__next.html">opendal_result_lister_next</a> <a class="code" href="opendal_8h.html#a8429a4433316d9bf70cfffbbcb844a3d">opendal_lister_next</a>(const struct <a class="code" href="structopendal__lister.html">opendal_lister</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160; </div>
-<div class="line"><a name="l00721"></a><span class="lineno"><a class="line" href="opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3">  721</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3">opendal_lister_free</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__lister.html">opendal_lister</a> *p);</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160; </div>
-<div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5">  726</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5">opendal_metadata_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *ptr);</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160; </div>
-<div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235">  741</a></span>&#160;uint64_t <a class="code" href="opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235">opendal_metadata_content_length</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160; </div>
-<div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad">  756</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad">opendal_metadata_is_file</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160; </div>
-<div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409">  776</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409">opendal_metadata_is_dir</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160; </div>
-<div class="line"><a name="l00791"></a><span class="lineno"><a class="line" href="opendal_8h.html#af92bde18613cbbae4fe045f9c723022c">  791</a></span>&#160;int64_t <a class="code" href="opendal_8h.html#af92bde18613cbbae4fe045f9c723022c">opendal_metadata_last_modified_ms</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160; </div>
-<div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855">  810</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855">opendal_operator_free</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_operator</a> *op);</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160; </div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__operator__new.html">opendal_result_operator_new</a> <a class="code" href="opendal_8h.html#a3b32f655689a122d2b6feff169fac442">opendal_operator_new</a>(const char *scheme,</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;                                                        <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *options);</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160; </div>
-<div class="line"><a name="l00900"></a><span class="lineno"><a class="line" href="opendal_8h.html#ab1419180b377316e27416b742bcc059f">  900</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#af8b6596a53263101e93b4d73e9eb928c">opendal_operator_write</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_op [...]
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;                                             <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;                                             <span class="keyword">struct</span> <a class="code" href="structopendal__bytes.html">opendal_bytes</a> bytes);</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160; </div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__read.html">opendal_result_read</a> <a class="code" href="opendal_8h.html#ab1419180b377316e27416b742bcc059f">opendal_operator_read</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160; </div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__operator__reader.html">opendal_result_operator_reader</a> <a class="code" href="opendal_8h.html#aca8d6d56223c55277146afe9ca226944">opendal_operator_reader</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;                                                              <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160; </div>
-<div class="line"><a name="l01030"></a><span class="lineno"><a class="line" href="opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc"> 1030</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc">opendal_operator_delete</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_o [...]
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; </div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__is__exist.html">opendal_result_is_exist</a> <a class="code" href="opendal_8h.html#acc6c32aa41963ac67e612dc47f7edb46">opendal_operator_is_exist</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;                                                         <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; </div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__stat.html">opendal_result_stat</a> <a class="code" href="opendal_8h.html#a8d6a3d830761b215c3d03960b6153582">opendal_operator_stat</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; </div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__list.html">opendal_result_list</a> <a class="code" href="opendal_8h.html#af8f2888ef406d9fc81af0015a904af9c">opendal_operator_list</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; </div>
-<div class="line"><a name="l01203"></a><span class="lineno"><a class="line" href="opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26"> 1203</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26">opendal_operator_create_dir</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opend [...]
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; </div>
-<div class="line"><a name="l01249"></a><span class="lineno"><a class="line" href="opendal_8h.html#acf513847d08141631c9c57aa59150014"> 1249</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#acf513847d08141631c9c57aa59150014">opendal_operator_rename</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_o [...]
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span> *src,</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span> *dest);</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; </div>
-<div class="line"><a name="l01296"></a><span class="lineno"><a class="line" href="opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da"> 1296</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da">opendal_operator_copy</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_ope [...]
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span> *src,</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span> *dest);</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; </div>
-<div class="line"><a name="l01318"></a><span class="lineno"><a class="line" href="opendal_8h.html#a902aa057da25635085584f78e1152045"> 1318</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<a class="code" href="opendal_8h.html#a902aa057da25635085584f78e1152045">opendal_operator_info_new</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__opera [...]
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; </div>
-<div class="line"><a name="l01323"></a><span class="lineno"><a class="line" href="opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d"> 1323</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d">opendal_operator_info_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *ptr);</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; </div>
-<div class="line"><a name="l01330"></a><span class="lineno"><a class="line" href="opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48"> 1330</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48">opendal_operator_info_get_scheme</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span [...]
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; </div>
-<div class="line"><a name="l01337"></a><span class="lineno"><a class="line" href="opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e"> 1337</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e">opendal_operator_info_get_root</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; </div>
-<div class="line"><a name="l01345"></a><span class="lineno"><a class="line" href="opendal_8h.html#aa200d3f976b909210bd69038d39fb391"> 1345</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#a9e71eedec5353536ca9796b6d60d2d4c">opendal_operator_info_get_name</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; </div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__capability.html">opendal_capability</a> <a class="code" href="opendal_8h.html#aa200d3f976b909210bd69038d39fb391">opendal_operator_info_get_full_capability</a>(const struct <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; </div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__capability.html">opendal_capability</a> <a class="code" href="opendal_8h.html#a8ab1789c3d4f6538b29063a94df26b56">opendal_operator_info_get_native_capability</a>(const struct <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; </div>
-<div class="line"><a name="l01360"></a><span class="lineno"><a class="line" href="opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a"> 1360</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a">opendal_bytes_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__bytes.html">opendal_bytes</a> *bs);</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; </div>
-<div class="line"><a name="l01370"></a><span class="lineno"><a class="line" href="opendal_8h.html#a67b1457f2b1258551552dc383840f288"> 1370</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *<a class="code" href="opendal_8h.html#a67b1457f2b1258551552dc383840f288">opendal_operator_options_new</a>(<span class="keywordtype">void</span>);</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; </div>
-<div class="line"><a name="l01391"></a><span class="lineno"><a class="line" href="opendal_8h.html#af408af922875eb26c25cef4ddfdede02"> 1391</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#af408af922875eb26c25cef4ddfdede02">opendal_operator_options_set</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *<span class="keyword">self</span>,</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;                                  <span class="keyword">const</span> <span class="keywordtype">char</span> *key,</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;                                  <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; </div>
-<div class="line"><a name="l01398"></a><span class="lineno"><a class="line" href="opendal_8h.html#a1d65b173b087b2abca126de2e951b412"> 1398</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a1d65b173b087b2abca126de2e951b412">opendal_operator_options_free</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *options);</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; </div>
-<div class="line"><a name="l01407"></a><span class="lineno"><a class="line" href="opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9"> 1407</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9">opendal_entry_path</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__entry.html">opendal_entry</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; </div>
-<div class="line"><a name="l01418"></a><span class="lineno"><a class="line" href="opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5"> 1418</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5">opendal_entry_name</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__entry.html">opendal_entry</a> *<span class="keyword">self</span>);</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; </div>
-<div class="line"><a name="l01423"></a><span class="lineno"><a class="line" href="opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf"> 1423</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf">opendal_entry_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__entry.html">opendal_entry</a> *ptr);</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; </div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__reader__read.html">opendal_result_reader_read</a> <a class="code" href="opendal_8h.html#a1a2ea5159526b724de9724dd905d2d3e">opendal_reader_read</a>(const struct <a class="code" href="structopendal__reader.html">opendal_reader</a> *reader,</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;                                                      uint8_t *buf,</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;                                                      uintptr_t len);</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; </div>
-<div class="line"><a name="l01435"></a><span class="lineno"><a class="line" href="opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472"> 1435</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472">opendal_reader_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__reader.html">opendal_reader</a> *ptr);</div>
+<div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="opendal_8h.html#a4a8d92df21f5473762677afd9af5f714">  701</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a4a8d92df21f5473762677afd9af5f714">opendal_error_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__error.html">opendal_error</a> *ptr);</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160; </div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__lister__next.html">opendal_result_lister_next</a> <a class="code" href="opendal_8h.html#a8429a4433316d9bf70cfffbbcb844a3d">opendal_lister_next</a>(const struct <a class="code" href="structopendal__lister.html">opendal_lister</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160; </div>
+<div class="line"><a name="l00717"></a><span class="lineno"><a class="line" href="opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3">  717</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3">opendal_lister_free</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__lister.html">opendal_lister</a> *p);</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160; </div>
+<div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5">  722</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5">opendal_metadata_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *ptr);</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160; </div>
+<div class="line"><a name="l00737"></a><span class="lineno"><a class="line" href="opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235">  737</a></span>&#160;uint64_t <a class="code" href="opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235">opendal_metadata_content_length</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160; </div>
+<div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad">  752</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad">opendal_metadata_is_file</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160; </div>
+<div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409">  772</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409">opendal_metadata_is_dir</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160; </div>
+<div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="opendal_8h.html#af92bde18613cbbae4fe045f9c723022c">  787</a></span>&#160;int64_t <a class="code" href="opendal_8h.html#af92bde18613cbbae4fe045f9c723022c">opendal_metadata_last_modified_ms</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__metadata.html">opendal_metadata</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160; </div>
+<div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855">  806</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855">opendal_operator_free</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_operator</a> *op);</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160; </div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__operator__new.html">opendal_result_operator_new</a> <a class="code" href="opendal_8h.html#a3b32f655689a122d2b6feff169fac442">opendal_operator_new</a>(const char *scheme,</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;                                                        <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *options);</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160; </div>
+<div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="opendal_8h.html#ab1419180b377316e27416b742bcc059f">  896</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#af8b6596a53263101e93b4d73e9eb928c">opendal_operator_write</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_op [...]
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;                                             <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;                                             <span class="keyword">struct</span> <a class="code" href="structopendal__bytes.html">opendal_bytes</a> bytes);</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160; </div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__read.html">opendal_result_read</a> <a class="code" href="opendal_8h.html#ab1419180b377316e27416b742bcc059f">opendal_operator_read</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160; </div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__operator__reader.html">opendal_result_operator_reader</a> <a class="code" href="opendal_8h.html#aca8d6d56223c55277146afe9ca226944">opendal_operator_reader</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;                                                              <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160; </div>
+<div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc"> 1026</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc">opendal_operator_delete</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_o [...]
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; </div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__is__exist.html">opendal_result_is_exist</a> <a class="code" href="opendal_8h.html#acc6c32aa41963ac67e612dc47f7edb46">opendal_operator_is_exist</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;                                                         <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; </div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__stat.html">opendal_result_stat</a> <a class="code" href="opendal_8h.html#a8d6a3d830761b215c3d03960b6153582">opendal_operator_stat</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; </div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__list.html">opendal_result_list</a> <a class="code" href="opendal_8h.html#af8f2888ef406d9fc81af0015a904af9c">opendal_operator_list</a>(const struct <a class="code" href="structopendal__operator.html">opendal_operator</a> *op,</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;                                                 <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; </div>
+<div class="line"><a name="l01199"></a><span class="lineno"><a class="line" href="opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26"> 1199</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26">opendal_operator_create_dir</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opend [...]
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;                                                  <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; </div>
+<div class="line"><a name="l01245"></a><span class="lineno"><a class="line" href="opendal_8h.html#acf513847d08141631c9c57aa59150014"> 1245</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#acf513847d08141631c9c57aa59150014">opendal_operator_rename</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_o [...]
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span> *src,</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;                                              <span class="keyword">const</span> <span class="keywordtype">char</span> *dest);</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; </div>
+<div class="line"><a name="l01292"></a><span class="lineno"><a class="line" href="opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da"> 1292</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__error.html">opendal_error</a> *<a class="code" href="opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da">opendal_operator_copy</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator.html">opendal_ope [...]
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span> *src,</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;                                            <span class="keyword">const</span> <span class="keywordtype">char</span> *dest);</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; </div>
+<div class="line"><a name="l01314"></a><span class="lineno"><a class="line" href="opendal_8h.html#a902aa057da25635085584f78e1152045"> 1314</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<a class="code" href="opendal_8h.html#a902aa057da25635085584f78e1152045">opendal_operator_info_new</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__opera [...]
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; </div>
+<div class="line"><a name="l01319"></a><span class="lineno"><a class="line" href="opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d"> 1319</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d">opendal_operator_info_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *ptr);</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; </div>
+<div class="line"><a name="l01326"></a><span class="lineno"><a class="line" href="opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48"> 1326</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48">opendal_operator_info_get_scheme</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span [...]
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; </div>
+<div class="line"><a name="l01333"></a><span class="lineno"><a class="line" href="opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e"> 1333</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e">opendal_operator_info_get_root</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; </div>
+<div class="line"><a name="l01341"></a><span class="lineno"><a class="line" href="opendal_8h.html#aa200d3f976b909210bd69038d39fb391"> 1341</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#a9e71eedec5353536ca9796b6d60d2d4c">opendal_operator_info_get_name</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; </div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__capability.html">opendal_capability</a> <a class="code" href="opendal_8h.html#aa200d3f976b909210bd69038d39fb391">opendal_operator_info_get_full_capability</a>(const struct <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; </div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__capability.html">opendal_capability</a> <a class="code" href="opendal_8h.html#a8ab1789c3d4f6538b29063a94df26b56">opendal_operator_info_get_native_capability</a>(const struct <a class="code" href="structopendal__operator__info.html">opendal_operator_info</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; </div>
+<div class="line"><a name="l01356"></a><span class="lineno"><a class="line" href="opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a"> 1356</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a">opendal_bytes_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__bytes.html">opendal_bytes</a> *bs);</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; </div>
+<div class="line"><a name="l01366"></a><span class="lineno"><a class="line" href="opendal_8h.html#a67b1457f2b1258551552dc383840f288"> 1366</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *<a class="code" href="opendal_8h.html#a67b1457f2b1258551552dc383840f288">opendal_operator_options_new</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; </div>
+<div class="line"><a name="l01387"></a><span class="lineno"><a class="line" href="opendal_8h.html#af408af922875eb26c25cef4ddfdede02"> 1387</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#af408af922875eb26c25cef4ddfdede02">opendal_operator_options_set</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *<span class="keyword">self</span>,</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;                                  <span class="keyword">const</span> <span class="keywordtype">char</span> *key,</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;                                  <span class="keyword">const</span> <span class="keywordtype">char</span> *value);</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; </div>
+<div class="line"><a name="l01394"></a><span class="lineno"><a class="line" href="opendal_8h.html#a1d65b173b087b2abca126de2e951b412"> 1394</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a1d65b173b087b2abca126de2e951b412">opendal_operator_options_free</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__operator__options.html">opendal_operator_options</a> *options);</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; </div>
+<div class="line"><a name="l01403"></a><span class="lineno"><a class="line" href="opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9"> 1403</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9">opendal_entry_path</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__entry.html">opendal_entry</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; </div>
+<div class="line"><a name="l01414"></a><span class="lineno"><a class="line" href="opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5"> 1414</a></span>&#160;<span class="keywordtype">char</span> *<a class="code" href="opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5">opendal_entry_name</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structopendal__entry.html">opendal_entry</a> *<span class="keyword">self</span>);</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; </div>
+<div class="line"><a name="l01419"></a><span class="lineno"><a class="line" href="opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf"> 1419</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf">opendal_entry_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__entry.html">opendal_entry</a> *ptr);</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; </div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;<span class="keyword">struct </span><a class="code" href="structopendal__result__reader__read.html">opendal_result_reader_read</a> <a class="code" href="opendal_8h.html#a1a2ea5159526b724de9724dd905d2d3e">opendal_reader_read</a>(const struct <a class="code" href="structopendal__reader.html">opendal_reader</a> *reader,</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;                                                      uint8_t *buf,</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;                                                      uintptr_t len);</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; </div>
+<div class="line"><a name="l01431"></a><span class="lineno"><a class="line" href="opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472"> 1431</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472">opendal_reader_free</a>(<span class="keyword">struct</span> <a class="code" href="structopendal__reader.html">opendal_reader</a> *ptr);</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; </div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;} <span class="comment">// extern &quot;C&quot;</span></div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// __cplusplus</span></div>
 <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; </div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;} <span class="comment">// extern &quot;C&quot;</span></div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// __cplusplus</span></div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; </div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _OPENDAL_H */</span><span class="preprocessor"></span></div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _OPENDAL_H */</span><span class="preprocessor"></span></div>
 <div class="ttc" id="aopendal_8h_html_a03ea17a7d09e319825d05a1d9f5d933c"><div class="ttname"><a href="opendal_8h.html#a03ea17a7d09e319825d05a1d9f5d933c">BlockingLister</a></div><div class="ttdeci">struct BlockingLister BlockingLister</div><div class="ttdef"><b>Definition:</b> opendal.h:85</div></div>
 <div class="ttc" id="aopendal_8h_html_a049ac2a69fc02e3ace6afbb18db397ca"><div class="ttname"><a href="opendal_8h.html#a049ac2a69fc02e3ace6afbb18db397ca">OperatorInfo</a></div><div class="ttdeci">struct OperatorInfo OperatorInfo</div><div class="ttdef"><b>Definition:</b> opendal.h:216</div></div>
 <div class="ttc" id="aopendal_8h_html_a04d551eea4b6248d96c9ce9278d27855"><div class="ttname"><a href="opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855">opendal_operator_free</a></div><div class="ttdeci">void opendal_operator_free(const struct opendal_operator *op)</div><div class="ttdoc">Free the heap-allocated operator pointed by opendal_operator.</div></div>
@@ -418,30 +417,29 @@ $(function() {
 <div class="ttc" id="astructopendal__bytes_html_af7a7f99a262f8a3912f4d1cddb798c86"><div class="ttname"><a href="structopendal__bytes.html#af7a7f99a262f8a3912f4d1cddb798c86">opendal_bytes::data</a></div><div class="ttdeci">const uint8_t * data</div><div class="ttdef"><b>Definition:</b> opendal.h:231</div></div>
 <div class="ttc" id="astructopendal__capability_html"><div class="ttname"><a href="structopendal__capability.html">opendal_capability</a></div><div class="ttdoc">Capability is used to describe what operations are supported by current Operator.</div><div class="ttdef"><b>Definition:</b> opendal.h:501</div></div>
 <div class="ttc" id="astructopendal__capability_html_a023d768a2c7cd4e0f72e25adca706cea"><div class="ttname"><a href="structopendal__capability.html#a023d768a2c7cd4e0f72e25adca706cea">opendal_capability::write_can_append</a></div><div class="ttdeci">bool write_can_append</div><div class="ttdef"><b>Definition:</b> opendal.h:565</div></div>
-<div class="ttc" id="astructopendal__capability_html_a0d4697dea4d1c19a5d4d92ad6eb5b7aa"><div class="ttname"><a href="structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">opendal_capability::list_without_recursive</a></div><div class="ttdeci">bool list_without_recursive</div><div class="ttdef"><b>Definition:</b> opendal.h:641</div></div>
 <div class="ttc" id="astructopendal__capability_html_a2c57aae0b02175094e3c5a279ca9a3f7"><div class="ttname"><a href="structopendal__capability.html#a2c57aae0b02175094e3c5a279ca9a3f7">opendal_capability::write_can_multi</a></div><div class="ttdeci">bool write_can_multi</div><div class="ttdef"><b>Definition:</b> opendal.h:557</div></div>
 <div class="ttc" id="astructopendal__capability_html_a42b57246b65b63b2595816253ffb60ff"><div class="ttname"><a href="structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff">opendal_capability::list_with_start_after</a></div><div class="ttdeci">bool list_with_start_after</div><div class="ttdef"><b>Definition:</b> opendal.h:637</div></div>
 <div class="ttc" id="astructopendal__capability_html_a4814e900e75b642b2eeb1fa5803f01e5"><div class="ttname"><a href="structopendal__capability.html#a4814e900e75b642b2eeb1fa5803f01e5">opendal_capability::delete_</a></div><div class="ttdeci">bool delete_</div><div class="ttdef"><b>Definition:</b> opendal.h:617</div></div>
 <div class="ttc" id="astructopendal__capability_html_a486c81c18888b799fd562c4be05c4c3c"><div class="ttname"><a href="structopendal__capability.html#a486c81c18888b799fd562c4be05c4c3c">opendal_capability::create_dir</a></div><div class="ttdeci">bool create_dir</div><div class="ttdef"><b>Definition:</b> opendal.h:613</div></div>
-<div class="ttc" id="astructopendal__capability_html_a49c946f5d49e868f63d9165a90cef133"><div class="ttname"><a href="structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133">opendal_capability::blocking</a></div><div class="ttdeci">bool blocking</div><div class="ttdef"><b>Definition:</b> opendal.h:679</div></div>
+<div class="ttc" id="astructopendal__capability_html_a49c946f5d49e868f63d9165a90cef133"><div class="ttname"><a href="structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133">opendal_capability::blocking</a></div><div class="ttdeci">bool blocking</div><div class="ttdef"><b>Definition:</b> opendal.h:675</div></div>
 <div class="ttc" id="astructopendal__capability_html_a50f46414d464319e7cc5abab842d9a4f"><div class="ttname"><a href="structopendal__capability.html#a50f46414d464319e7cc5abab842d9a4f">opendal_capability::write_multi_min_size</a></div><div class="ttdeci">uintptr_t write_multi_min_size</div><div class="ttdef"><b>Definition:</b> opendal.h:593</div></div>
 <div class="ttc" id="astructopendal__capability_html_a57039859beed1c7586c78fad29aa988b"><div class="ttname"><a href="structopendal__capability.html#a57039859beed1c7586c78fad29aa988b">opendal_capability::stat_with_if_match</a></div><div class="ttdeci">bool stat_with_if_match</div><div class="ttdef"><b>Definition:</b> opendal.h:509</div></div>
 <div class="ttc" id="astructopendal__capability_html_a64c86a926fb979307652c8e418cf4696"><div class="ttname"><a href="structopendal__capability.html#a64c86a926fb979307652c8e418cf4696">opendal_capability::read_with_override_content_type</a></div><div class="ttdeci">bool read_with_override_content_type</div><div class="ttdef"><b>Definition:</b> opendal.h:549</div></div>
-<div class="ttc" id="astructopendal__capability_html_a65b6d18fa83bbee82a00af82ebf06b2a"><div class="ttname"><a href="structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a">opendal_capability::batch</a></div><div class="ttdeci">bool batch</div><div class="ttdef"><b>Definition:</b> opendal.h:665</div></div>
-<div class="ttc" id="astructopendal__capability_html_a6c93f72f188766a4a7f0671a43d28a29"><div class="ttname"><a href="structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29">opendal_capability::batch_max_operations</a></div><div class="ttdeci">uintptr_t batch_max_operations</div><div class="ttdef"><b>Definition:</b> opendal.h:675</div></div>
-<div class="ttc" id="astructopendal__capability_html_a760bd594d038f919b65a50db22259ba2"><div class="ttname"><a href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">opendal_capability::presign_stat</a></div><div class="ttdeci">bool presign_stat</div><div class="ttdef"><b>Definition:</b> opendal.h:657</div></div>
+<div class="ttc" id="astructopendal__capability_html_a65b6d18fa83bbee82a00af82ebf06b2a"><div class="ttname"><a href="structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a">opendal_capability::batch</a></div><div class="ttdeci">bool batch</div><div class="ttdef"><b>Definition:</b> opendal.h:661</div></div>
+<div class="ttc" id="astructopendal__capability_html_a6c93f72f188766a4a7f0671a43d28a29"><div class="ttname"><a href="structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29">opendal_capability::batch_max_operations</a></div><div class="ttdeci">uintptr_t batch_max_operations</div><div class="ttdef"><b>Definition:</b> opendal.h:671</div></div>
+<div class="ttc" id="astructopendal__capability_html_a760bd594d038f919b65a50db22259ba2"><div class="ttname"><a href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">opendal_capability::presign_stat</a></div><div class="ttdeci">bool presign_stat</div><div class="ttdef"><b>Definition:</b> opendal.h:653</div></div>
 <div class="ttc" id="astructopendal__capability_html_a78205c1240745fa53f2fd591d7f2d80b"><div class="ttname"><a href="structopendal__capability.html#a78205c1240745fa53f2fd591d7f2d80b">opendal_capability::read_with_if_match</a></div><div class="ttdeci">bool read_with_if_match</div><div class="ttdef"><b>Definition:</b> opendal.h:533</div></div>
 <div class="ttc" id="astructopendal__capability_html_a7e31abcf955b8e966c71f049b6a04fdb"><div class="ttname"><a href="structopendal__capability.html#a7e31abcf955b8e966c71f049b6a04fdb">opendal_capability::write</a></div><div class="ttdeci">bool write</div><div class="ttdef"><b>Definition:</b> opendal.h:553</div></div>
-<div class="ttc" id="astructopendal__capability_html_a86cb7c49fb41e2662e8f14c74aa60ac9"><div class="ttname"><a href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">opendal_capability::presign_read</a></div><div class="ttdeci">bool presign_read</div><div class="ttdef"><b>Definition:</b> opendal.h:653</div></div>
+<div class="ttc" id="astructopendal__capability_html_a86cb7c49fb41e2662e8f14c74aa60ac9"><div class="ttname"><a href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">opendal_capability::presign_read</a></div><div class="ttdeci">bool presign_read</div><div class="ttdef"><b>Definition:</b> opendal.h:649</div></div>
 <div class="ttc" id="astructopendal__capability_html_a8b8a3426cf390c29e7a3e22cbaa7c761"><div class="ttname"><a href="structopendal__capability.html#a8b8a3426cf390c29e7a3e22cbaa7c761">opendal_capability::write_with_content_type</a></div><div class="ttdeci">bool write_with_content_type</div><div class="ttdef"><b>Definition:</b> opendal.h:569</div></div>
 <div class="ttc" id="astructopendal__capability_html_a8d5e8309fb74dec234667d2bc4e07ac6"><div class="ttname"><a href="structopendal__capability.html#a8d5e8309fb74dec234667d2bc4e07ac6">opendal_capability::write_total_max_size</a></div><div class="ttdeci">uintptr_t write_total_max_size</div><div class="ttdef"><b>Definition:</b> opendal.h:609</div></div>
-<div class="ttc" id="astructopendal__capability_html_a911b77c96405fad2f0caf9bb090ca33e"><div class="ttname"><a href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">opendal_capability::presign</a></div><div class="ttdeci">bool presign</div><div class="ttdef"><b>Definition:</b> opendal.h:649</div></div>
+<div class="ttc" id="astructopendal__capability_html_a911b77c96405fad2f0caf9bb090ca33e"><div class="ttname"><a href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">opendal_capability::presign</a></div><div class="ttdeci">bool presign</div><div class="ttdef"><b>Definition:</b> opendal.h:645</div></div>
 <div class="ttc" id="astructopendal__capability_html_a917769617a33340debf3a1e5219441f7"><div class="ttname"><a href="structopendal__capability.html#a917769617a33340debf3a1e5219441f7">opendal_capability::read</a></div><div class="ttdeci">bool read</div><div class="ttdef"><b>Definition:</b> opendal.h:517</div></div>
 <div class="ttc" id="astructopendal__capability_html_a9cc207e7258d202f56883a4318c995fa"><div class="ttname"><a href="structopendal__capability.html#a9cc207e7258d202f56883a4318c995fa">opendal_capability::rename</a></div><div class="ttdeci">bool rename</div><div class="ttdef"><b>Definition:</b> opendal.h:625</div></div>
 <div class="ttc" id="astructopendal__capability_html_a9df67d06090f43e325cd502231acf667"><div class="ttname"><a href="structopendal__capability.html#a9df67d06090f43e325cd502231acf667">opendal_capability::list</a></div><div class="ttdeci">bool list</div><div class="ttdef"><b>Definition:</b> opendal.h:629</div></div>
 <div class="ttc" id="astructopendal__capability_html_aa1e24b711d3da051223c8439fb2d0021"><div class="ttname"><a href="structopendal__capability.html#aa1e24b711d3da051223c8439fb2d0021">opendal_capability::write_with_cache_control</a></div><div class="ttdeci">bool write_with_cache_control</div><div class="ttdef"><b>Definition:</b> opendal.h:577</div></div>
 <div class="ttc" id="astructopendal__capability_html_aa6a539d0f1f7cc13a6ec9e086369eff4"><div class="ttname"><a href="structopendal__capability.html#aa6a539d0f1f7cc13a6ec9e086369eff4">opendal_capability::stat_with_if_none_match</a></div><div class="ttdeci">bool stat_with_if_none_match</div><div class="ttdef"><b>Definition:</b> opendal.h:513</div></div>
-<div class="ttc" id="astructopendal__capability_html_ab8482b65de875ce8b0953917d19e2fca"><div class="ttname"><a href="structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca">opendal_capability::batch_delete</a></div><div class="ttdeci">bool batch_delete</div><div class="ttdef"><b>Definition:</b> opendal.h:669</div></div>
+<div class="ttc" id="astructopendal__capability_html_ab8482b65de875ce8b0953917d19e2fca"><div class="ttname"><a href="structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca">opendal_capability::batch_delete</a></div><div class="ttdeci">bool batch_delete</div><div class="ttdef"><b>Definition:</b> opendal.h:665</div></div>
 <div class="ttc" id="astructopendal__capability_html_ab9eb0746a111632656ac8f8de6b59c43"><div class="ttname"><a href="structopendal__capability.html#ab9eb0746a111632656ac8f8de6b59c43">opendal_capability::write_multi_max_size</a></div><div class="ttdeci">uintptr_t write_multi_max_size</div><div class="ttdef"><b>Definition:</b> opendal.h:585</div></div>
 <div class="ttc" id="astructopendal__capability_html_abe93920ff673cd3e64c7d493a4d0f291"><div class="ttname"><a href="structopendal__capability.html#abe93920ff673cd3e64c7d493a4d0f291">opendal_capability::read_can_next</a></div><div class="ttdeci">bool read_can_next</div><div class="ttdef"><b>Definition:</b> opendal.h:525</div></div>
 <div class="ttc" id="astructopendal__capability_html_acadd4a62755f7572e0a52d77f548b1bb"><div class="ttname"><a href="structopendal__capability.html#acadd4a62755f7572e0a52d77f548b1bb">opendal_capability::write_can_empty</a></div><div class="ttdeci">bool write_can_empty</div><div class="ttdef"><b>Definition:</b> opendal.h:561</div></div>
@@ -451,10 +449,10 @@ $(function() {
 <div class="ttc" id="astructopendal__capability_html_ad521c9c12d88e39d88e912cf529f5b1f"><div class="ttname"><a href="structopendal__capability.html#ad521c9c12d88e39d88e912cf529f5b1f">opendal_capability::read_with_override_content_disposition</a></div><div class="ttdeci">bool read_with_override_content_disposition</div><div class="ttdef"><b>Definition:</b> opendal.h:545</div></div>
 <div class="ttc" id="astructopendal__capability_html_ad616a0d276048d3cd062a09ad5ed6d6c"><div class="ttname"><a href="structopendal__capability.html#ad616a0d276048d3cd062a09ad5ed6d6c">opendal_capability::read_can_seek</a></div><div class="ttdeci">bool read_can_seek</div><div class="ttdef"><b>Definition:</b> opendal.h:521</div></div>
 <div class="ttc" id="astructopendal__capability_html_ad9cb4596863cde6476ff608c7a2af91e"><div class="ttname"><a href="structopendal__capability.html#ad9cb4596863cde6476ff608c7a2af91e">opendal_capability::read_with_if_none_match</a></div><div class="ttdeci">bool read_with_if_none_match</div><div class="ttdef"><b>Definition:</b> opendal.h:537</div></div>
-<div class="ttc" id="astructopendal__capability_html_aeaa15613dad6228904b8b8150cd28a6e"><div class="ttname"><a href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">opendal_capability::list_with_recursive</a></div><div class="ttdeci">bool list_with_recursive</div><div class="ttdef"><b>Definition:</b> opendal.h:645</div></div>
+<div class="ttc" id="astructopendal__capability_html_aeaa15613dad6228904b8b8150cd28a6e"><div class="ttname"><a href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">opendal_capability::list_with_recursive</a></div><div class="ttdeci">bool list_with_recursive</div><div class="ttdef"><b>Definition:</b> opendal.h:641</div></div>
 <div class="ttc" id="astructopendal__capability_html_aebb9626bde1fe46e67fd450219aef99c"><div class="ttname"><a href="structopendal__capability.html#aebb9626bde1fe46e67fd450219aef99c">opendal_capability::write_with_content_disposition</a></div><div class="ttdeci">bool write_with_content_disposition</div><div class="ttdef"><b>Definition:</b> opendal.h:573</div></div>
 <div class="ttc" id="astructopendal__capability_html_af44b22da5be7e0a0c9a35304c3dfa1f3"><div class="ttname"><a href="structopendal__capability.html#af44b22da5be7e0a0c9a35304c3dfa1f3">opendal_capability::read_with_range</a></div><div class="ttdeci">bool read_with_range</div><div class="ttdef"><b>Definition:</b> opendal.h:529</div></div>
-<div class="ttc" id="astructopendal__capability_html_af5f42471b12692f9f0510c5e500e41fa"><div class="ttname"><a href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">opendal_capability::presign_write</a></div><div class="ttdeci">bool presign_write</div><div class="ttdef"><b>Definition:</b> opendal.h:661</div></div>
+<div class="ttc" id="astructopendal__capability_html_af5f42471b12692f9f0510c5e500e41fa"><div class="ttname"><a href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">opendal_capability::presign_write</a></div><div class="ttdeci">bool presign_write</div><div class="ttdef"><b>Definition:</b> opendal.h:657</div></div>
 <div class="ttc" id="astructopendal__capability_html_afa301fcf85901fb6905305d91411aafb"><div class="ttname"><a href="structopendal__capability.html#afa301fcf85901fb6905305d91411aafb">opendal_capability::list_with_limit</a></div><div class="ttdeci">bool list_with_limit</div><div class="ttdef"><b>Definition:</b> opendal.h:633</div></div>
 <div class="ttc" id="astructopendal__capability_html_affbad0c42bd7c506f902ab72282c67df"><div class="ttname"><a href="structopendal__capability.html#affbad0c42bd7c506f902ab72282c67df">opendal_capability::read_with_override_cache_control</a></div><div class="ttdeci">bool read_with_override_cache_control</div><div class="ttdef"><b>Definition:</b> opendal.h:541</div></div>
 <div class="ttc" id="astructopendal__entry_html"><div class="ttname"><a href="structopendal__entry.html">opendal_entry</a></div><div class="ttdoc">opendal_list_entry is the entry under a path, which is listed from the opendal_lister</div><div class="ttdef"><b>Definition:</b> opendal.h:270</div></div>
@@ -492,9 +490,9 @@ $(function() {
 <div class="ttc" id="astructopendal__result__read_html"><div class="ttname"><a href="structopendal__result__read.html">opendal_result_read</a></div><div class="ttdoc">The result type returned by opendal's read operation.</div><div class="ttdef"><b>Definition:</b> opendal.h:394</div></div>
 <div class="ttc" id="astructopendal__result__read_html_a6cd0e4e83ed4509856de0d1e6b83e2f2"><div class="ttname"><a href="structopendal__result__read.html#a6cd0e4e83ed4509856de0d1e6b83e2f2">opendal_result_read::error</a></div><div class="ttdeci">struct opendal_error * error</div><div class="ttdef"><b>Definition:</b> opendal.h:402</div></div>
 <div class="ttc" id="astructopendal__result__read_html_ad8ca467bcbe6d1768e15fcf64fe78e9f"><div class="ttname"><a href="structopendal__result__read.html#ad8ca467bcbe6d1768e15fcf64fe78e9f">opendal_result_read::data</a></div><div class="ttdeci">struct opendal_bytes * data</div><div class="ttdef"><b>Definition:</b> opendal.h:398</div></div>
-<div class="ttc" id="astructopendal__result__reader__read_html"><div class="ttname"><a href="structopendal__result__reader__read.html">opendal_result_reader_read</a></div><div class="ttdoc">The is the result type returned by opendal_reader_read(). The result type contains a size field,...</div><div class="ttdef"><b>Definition:</b> opendal.h:687</div></div>
-<div class="ttc" id="astructopendal__result__reader__read_html_a1279e7b3cb6beaf63da0f6ee9370ba36"><div class="ttname"><a href="structopendal__result__reader__read.html#a1279e7b3cb6beaf63da0f6ee9370ba36">opendal_result_reader_read::error</a></div><div class="ttdeci">struct opendal_error * error</div><div class="ttdef"><b>Definition:</b> opendal.h:695</div></div>
-<div class="ttc" id="astructopendal__result__reader__read_html_a5a513cafeacebef13f74fd50c30e9810"><div class="ttname"><a href="structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810">opendal_result_reader_read::size</a></div><div class="ttdeci">uintptr_t size</div><div class="ttdef"><b>Definition:</b> opendal.h:691</div></div>
+<div class="ttc" id="astructopendal__result__reader__read_html"><div class="ttname"><a href="structopendal__result__reader__read.html">opendal_result_reader_read</a></div><div class="ttdoc">The is the result type returned by opendal_reader_read(). The result type contains a size field,...</div><div class="ttdef"><b>Definition:</b> opendal.h:683</div></div>
+<div class="ttc" id="astructopendal__result__reader__read_html_a1279e7b3cb6beaf63da0f6ee9370ba36"><div class="ttname"><a href="structopendal__result__reader__read.html#a1279e7b3cb6beaf63da0f6ee9370ba36">opendal_result_reader_read::error</a></div><div class="ttdeci">struct opendal_error * error</div><div class="ttdef"><b>Definition:</b> opendal.h:691</div></div>
+<div class="ttc" id="astructopendal__result__reader__read_html_a5a513cafeacebef13f74fd50c30e9810"><div class="ttname"><a href="structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810">opendal_result_reader_read::size</a></div><div class="ttdeci">uintptr_t size</div><div class="ttdef"><b>Definition:</b> opendal.h:687</div></div>
 <div class="ttc" id="astructopendal__result__stat_html"><div class="ttname"><a href="structopendal__result__stat.html">opendal_result_stat</a></div><div class="ttdoc">The result type returned by opendal_operator_stat().</div><div class="ttdef"><b>Definition:</b> opendal.h:460</div></div>
 <div class="ttc" id="astructopendal__result__stat_html_a1d4d484d7bf50bc8e5d65dea5f6f2425"><div class="ttname"><a href="structopendal__result__stat.html#a1d4d484d7bf50bc8e5d65dea5f6f2425">opendal_result_stat::meta</a></div><div class="ttdeci">struct opendal_metadata * meta</div><div class="ttdef"><b>Definition:</b> opendal.h:464</div></div>
 <div class="ttc" id="astructopendal__result__stat_html_a657eee3bfdf805036f169d94ee70dce9"><div class="ttname"><a href="structopendal__result__stat.html#a657eee3bfdf805036f169d94ee70dce9">opendal_result_stat::error</a></div><div class="ttdeci">struct opendal_error * error</div><div class="ttdef"><b>Definition:</b> opendal.h:468</div></div>
diff --git a/docs/c/search/all_5.js b/docs/c/search/all_5.js
index e936b4779..3aa2310d0 100644
--- a/docs/c/search/all_5.js
+++ b/docs/c/search/all_5.js
@@ -5,6 +5,5 @@ var searchData=
   ['list_5fwith_5flimit_18',['list_with_limit',['../structopendal__capability.html#afa301fcf85901fb6905305d91411aafb',1,'opendal_capability']]],
   ['list_5fwith_5frecursive_19',['list_with_recursive',['../structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e',1,'opendal_capability']]],
   ['list_5fwith_5fstart_5fafter_20',['list_with_start_after',['../structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff',1,'opendal_capability']]],
-  ['list_5fwithout_5frecursive_21',['list_without_recursive',['../structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa',1,'opendal_capability']]],
-  ['lister_22',['lister',['../structopendal__result__list.html#a54b9b09c29f8d867da187c32e362398a',1,'opendal_result_list']]]
+  ['lister_21',['lister',['../structopendal__result__list.html#a54b9b09c29f8d867da187c32e362398a',1,'opendal_result_list']]]
 ];
diff --git a/docs/c/search/all_6.js b/docs/c/search/all_6.js
index 4ceb28fe8..b2d3984e8 100644
--- a/docs/c/search/all_6.js
+++ b/docs/c/search/all_6.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['message_23',['message',['../structopendal__error.html#a64095efcf3588a1871b14eab3041d0d4',1,'opendal_error']]],
-  ['meta_24',['meta',['../structopendal__result__stat.html#a1d4d484d7bf50bc8e5d65dea5f6f2425',1,'opendal_result_stat']]]
+  ['message_22',['message',['../structopendal__error.html#a64095efcf3588a1871b14eab3041d0d4',1,'opendal_error']]],
+  ['meta_23',['meta',['../structopendal__result__stat.html#a1d4d484d7bf50bc8e5d65dea5f6f2425',1,'opendal_result_stat']]]
 ];
diff --git a/docs/c/search/all_7.js b/docs/c/search/all_7.js
index 650ebb6e3..6c08e2bdd 100644
--- a/docs/c/search/all_7.js
+++ b/docs/c/search/all_7.js
@@ -1,72 +1,72 @@
 var searchData=
 [
-  ['op_25',['op',['../structopendal__result__operator__new.html#a4e358aad13b4c71dc7a9a812191371c6',1,'opendal_result_operator_new']]],
-  ['opendal_20c_20binding_20_28wip_29_26',['OpenDAL C Binding (WIP)',['../index.html',1,'']]],
-  ['opendal_2eh_27',['opendal.h',['../opendal_8h.html',1,'']]],
-  ['opendal_5falready_5fexists_28',['OPENDAL_ALREADY_EXISTS',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a8f0a65852b0b02a0a3c73f7382607d67',1,'opendal.h']]],
-  ['opendal_5fbytes_29',['opendal_bytes',['../structopendal__bytes.html',1,'opendal_bytes'],['../opendal_8h.html#a4117acdec0983ce12962491960847381',1,'opendal_bytes():&#160;opendal.h']]],
-  ['opendal_5fbytes_5ffree_30',['opendal_bytes_free',['../opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a',1,'opendal.h']]],
-  ['opendal_5fcapability_31',['opendal_capability',['../structopendal__capability.html',1,'opendal_capability'],['../opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3',1,'opendal_capability():&#160;opendal.h']]],
-  ['opendal_5fcode_32',['opendal_code',['../opendal_8h.html#a333cc71b98ca4ce17183c1b4263ddd1f',1,'opendal_code():&#160;opendal.h'],['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2',1,'opendal_code():&#160;opendal.h']]],
-  ['opendal_5fconfig_5finvalid_33',['OPENDAL_CONFIG_INVALID',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2af0fb62173ba6973b328c3342a95f53b5',1,'opendal.h']]],
-  ['opendal_5fentry_34',['opendal_entry',['../structopendal__entry.html',1,'opendal_entry'],['../opendal_8h.html#af70798853b9dbd5712006b5f9de831c9',1,'opendal_entry():&#160;opendal.h']]],
-  ['opendal_5fentry_5ffree_35',['opendal_entry_free',['../opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf',1,'opendal.h']]],
-  ['opendal_5fentry_5fname_36',['opendal_entry_name',['../opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5',1,'opendal.h']]],
-  ['opendal_5fentry_5fpath_37',['opendal_entry_path',['../opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9',1,'opendal.h']]],
-  ['opendal_5ferror_38',['opendal_error',['../opendal_8h.html#aba7687efb3e2f74800e93aee4eede6cc',1,'opendal_error():&#160;opendal.h'],['../structopendal__error.html',1,'opendal_error']]],
-  ['opendal_5ferror_5ffree_39',['opendal_error_free',['../opendal_8h.html#a4a8d92df21f5473762677afd9af5f714',1,'opendal.h']]],
-  ['opendal_5fis_5fa_5fdirectory_40',['OPENDAL_IS_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a74508dd984ae3f13a700a8952ca03361',1,'opendal.h']]],
-  ['opendal_5fis_5fsame_5ffile_41',['OPENDAL_IS_SAME_FILE',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2aa2ade9f6ea9d1ad5a6f328a73217e536',1,'opendal.h']]],
-  ['opendal_5flister_42',['opendal_lister',['../structopendal__lister.html',1,'opendal_lister'],['../opendal_8h.html#a581e3ab221c9b3ed82e0a2eb0ba37f68',1,'opendal_lister():&#160;opendal.h']]],
-  ['opendal_5flister_5ffree_43',['opendal_lister_free',['../opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3',1,'opendal.h']]],
-  ['opendal_5flister_5fnext_44',['opendal_lister_next',['../opendal_8h.html#a8429a4433316d9bf70cfffbbcb844a3d',1,'opendal.h']]],
-  ['opendal_5fmetadata_45',['opendal_metadata',['../structopendal__metadata.html',1,'opendal_metadata'],['../opendal_8h.html#af0acf7956915881ccd1f0874f309c682',1,'opendal_metadata():&#160;opendal.h']]],
-  ['opendal_5fmetadata_5fcontent_5flength_46',['opendal_metadata_content_length',['../opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235',1,'opendal.h']]],
-  ['opendal_5fmetadata_5ffree_47',['opendal_metadata_free',['../opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5',1,'opendal.h']]],
-  ['opendal_5fmetadata_5fis_5fdir_48',['opendal_metadata_is_dir',['../opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409',1,'opendal.h']]],
-  ['opendal_5fmetadata_5fis_5ffile_49',['opendal_metadata_is_file',['../opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad',1,'opendal.h']]],
-  ['opendal_5fmetadata_5flast_5fmodified_5fms_50',['opendal_metadata_last_modified_ms',['../opendal_8h.html#af92bde18613cbbae4fe045f9c723022c',1,'opendal.h']]],
-  ['opendal_5fnot_5fa_5fdirectory_51',['OPENDAL_NOT_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ad8f1a6410599cec2a213685324560555',1,'opendal.h']]],
-  ['opendal_5fnot_5ffound_52',['OPENDAL_NOT_FOUND',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a549e63735c8104369fd9230b441ebbf1',1,'opendal.h']]],
-  ['opendal_5foperator_53',['opendal_operator',['../opendal_8h.html#a07642e228c04606083f49cbe02a626ca',1,'opendal_operator():&#160;opendal.h'],['../structopendal__operator.html',1,'opendal_operator']]],
-  ['opendal_5foperator_5fcopy_54',['opendal_operator_copy',['../opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da',1,'opendal.h']]],
-  ['opendal_5foperator_5fcreate_5fdir_55',['opendal_operator_create_dir',['../opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26',1,'opendal.h']]],
-  ['opendal_5foperator_5fdelete_56',['opendal_operator_delete',['../opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc',1,'opendal.h']]],
-  ['opendal_5foperator_5ffree_57',['opendal_operator_free',['../opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_58',['opendal_operator_info',['../structopendal__operator__info.html',1,'opendal_operator_info'],['../opendal_8h.html#abd7fdc73c230284dd37ce9d1f54ea915',1,'opendal_operator_info():&#160;opendal.h']]],
-  ['opendal_5foperator_5finfo_5ffree_59',['opendal_operator_info_free',['../opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5ffull_5fcapability_60',['opendal_operator_info_get_full_capability',['../opendal_8h.html#aa200d3f976b909210bd69038d39fb391',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5fname_61',['opendal_operator_info_get_name',['../opendal_8h.html#a9e71eedec5353536ca9796b6d60d2d4c',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5fnative_5fcapability_62',['opendal_operator_info_get_native_capability',['../opendal_8h.html#a8ab1789c3d4f6538b29063a94df26b56',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5froot_63',['opendal_operator_info_get_root',['../opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5fscheme_64',['opendal_operator_info_get_scheme',['../opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fnew_65',['opendal_operator_info_new',['../opendal_8h.html#a902aa057da25635085584f78e1152045',1,'opendal.h']]],
-  ['opendal_5foperator_5fis_5fexist_66',['opendal_operator_is_exist',['../opendal_8h.html#acc6c32aa41963ac67e612dc47f7edb46',1,'opendal.h']]],
-  ['opendal_5foperator_5flist_67',['opendal_operator_list',['../opendal_8h.html#af8f2888ef406d9fc81af0015a904af9c',1,'opendal.h']]],
-  ['opendal_5foperator_5fnew_68',['opendal_operator_new',['../opendal_8h.html#a3b32f655689a122d2b6feff169fac442',1,'opendal.h']]],
-  ['opendal_5foperator_5foptions_69',['opendal_operator_options',['../opendal_8h.html#a76d4f0935961d0e49befd7719728fd16',1,'opendal_operator_options():&#160;opendal.h'],['../structopendal__operator__options.html',1,'opendal_operator_options']]],
-  ['opendal_5foperator_5foptions_5ffree_70',['opendal_operator_options_free',['../opendal_8h.html#a1d65b173b087b2abca126de2e951b412',1,'opendal.h']]],
-  ['opendal_5foperator_5foptions_5fnew_71',['opendal_operator_options_new',['../opendal_8h.html#a67b1457f2b1258551552dc383840f288',1,'opendal.h']]],
-  ['opendal_5foperator_5foptions_5fset_72',['opendal_operator_options_set',['../opendal_8h.html#af408af922875eb26c25cef4ddfdede02',1,'opendal.h']]],
-  ['opendal_5foperator_5fread_73',['opendal_operator_read',['../opendal_8h.html#ab1419180b377316e27416b742bcc059f',1,'opendal.h']]],
-  ['opendal_5foperator_5freader_74',['opendal_operator_reader',['../opendal_8h.html#aca8d6d56223c55277146afe9ca226944',1,'opendal.h']]],
-  ['opendal_5foperator_5frename_75',['opendal_operator_rename',['../opendal_8h.html#acf513847d08141631c9c57aa59150014',1,'opendal.h']]],
-  ['opendal_5foperator_5fstat_76',['opendal_operator_stat',['../opendal_8h.html#a8d6a3d830761b215c3d03960b6153582',1,'opendal.h']]],
-  ['opendal_5foperator_5fwrite_77',['opendal_operator_write',['../opendal_8h.html#af8b6596a53263101e93b4d73e9eb928c',1,'opendal.h']]],
-  ['opendal_5fpermission_5fdenied_78',['OPENDAL_PERMISSION_DENIED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7d8ddf01b6fc55e87b7a89e04e5b3681',1,'opendal.h']]],
-  ['opendal_5frate_5flimited_79',['OPENDAL_RATE_LIMITED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ae78f8c2cde8d2a3888e12e3894ae5d71',1,'opendal.h']]],
-  ['opendal_5freader_80',['opendal_reader',['../structopendal__reader.html',1,'opendal_reader'],['../opendal_8h.html#a1f2a071a20d13757ba9cd5fde09c1100',1,'opendal_reader():&#160;opendal.h']]],
-  ['opendal_5freader_5ffree_81',['opendal_reader_free',['../opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472',1,'opendal.h']]],
-  ['opendal_5freader_5fread_82',['opendal_reader_read',['../opendal_8h.html#a1a2ea5159526b724de9724dd905d2d3e',1,'opendal.h']]],
-  ['opendal_5fresult_5fis_5fexist_83',['opendal_result_is_exist',['../structopendal__result__is__exist.html',1,'opendal_result_is_exist'],['../opendal_8h.html#afbd6b36f0b084ca5fa251ebd5e317abf',1,'opendal_result_is_exist():&#160;opendal.h']]],
-  ['opendal_5fresult_5flist_84',['opendal_result_list',['../structopendal__result__list.html',1,'opendal_result_list'],['../opendal_8h.html#a606c20c489cac143082dc3870102f43a',1,'opendal_result_list():&#160;opendal.h']]],
-  ['opendal_5fresult_5flister_5fnext_85',['opendal_result_lister_next',['../opendal_8h.html#a590096ddcd0245b474880bae76c2137d',1,'opendal_result_lister_next():&#160;opendal.h'],['../structopendal__result__lister__next.html',1,'opendal_result_lister_next']]],
-  ['opendal_5fresult_5foperator_5fnew_86',['opendal_result_operator_new',['../opendal_8h.html#a1c2ddf5212cda7243c1138f55b9cdbc5',1,'opendal_result_operator_new():&#160;opendal.h'],['../structopendal__result__operator__new.html',1,'opendal_result_operator_new']]],
-  ['opendal_5fresult_5foperator_5freader_87',['opendal_result_operator_reader',['../structopendal__result__operator__reader.html',1,'opendal_result_operator_reader'],['../opendal_8h.html#ae16e33ed9b7d8a3791f38a4fd5d877c8',1,'opendal_result_operator_reader():&#160;opendal.h']]],
-  ['opendal_5fresult_5fread_88',['opendal_result_read',['../structopendal__result__read.html',1,'opendal_result_read'],['../opendal_8h.html#a68a7b0ae2b453dd9ba31ba0d572a4d5d',1,'opendal_result_read():&#160;opendal.h']]],
-  ['opendal_5fresult_5freader_5fread_89',['opendal_result_reader_read',['../opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff',1,'opendal_result_reader_read():&#160;opendal.h'],['../structopendal__result__reader__read.html',1,'opendal_result_reader_read']]],
-  ['opendal_5fresult_5fstat_90',['opendal_result_stat',['../structopendal__result__stat.html',1,'opendal_result_stat'],['../opendal_8h.html#a07f3f83aa0b650a09986291e47a8ddb0',1,'opendal_result_stat():&#160;opendal.h']]],
-  ['opendal_5funexpected_91',['OPENDAL_UNEXPECTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7b638bc0d885a22a64305563add5c535',1,'opendal.h']]],
-  ['opendal_5funsupported_92',['OPENDAL_UNSUPPORTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a0dba9d7c18383f0eabb4801319becb6b',1,'opendal.h']]],
-  ['operatorinfo_93',['OperatorInfo',['../opendal_8h.html#a049ac2a69fc02e3ace6afbb18db397ca',1,'opendal.h']]]
+  ['op_24',['op',['../structopendal__result__operator__new.html#a4e358aad13b4c71dc7a9a812191371c6',1,'opendal_result_operator_new']]],
+  ['opendal_20c_20binding_20_28wip_29_25',['OpenDAL C Binding (WIP)',['../index.html',1,'']]],
+  ['opendal_2eh_26',['opendal.h',['../opendal_8h.html',1,'']]],
+  ['opendal_5falready_5fexists_27',['OPENDAL_ALREADY_EXISTS',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a8f0a65852b0b02a0a3c73f7382607d67',1,'opendal.h']]],
+  ['opendal_5fbytes_28',['opendal_bytes',['../structopendal__bytes.html',1,'opendal_bytes'],['../opendal_8h.html#a4117acdec0983ce12962491960847381',1,'opendal_bytes():&#160;opendal.h']]],
+  ['opendal_5fbytes_5ffree_29',['opendal_bytes_free',['../opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a',1,'opendal.h']]],
+  ['opendal_5fcapability_30',['opendal_capability',['../structopendal__capability.html',1,'opendal_capability'],['../opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3',1,'opendal_capability():&#160;opendal.h']]],
+  ['opendal_5fcode_31',['opendal_code',['../opendal_8h.html#a333cc71b98ca4ce17183c1b4263ddd1f',1,'opendal_code():&#160;opendal.h'],['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2',1,'opendal_code():&#160;opendal.h']]],
+  ['opendal_5fconfig_5finvalid_32',['OPENDAL_CONFIG_INVALID',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2af0fb62173ba6973b328c3342a95f53b5',1,'opendal.h']]],
+  ['opendal_5fentry_33',['opendal_entry',['../structopendal__entry.html',1,'opendal_entry'],['../opendal_8h.html#af70798853b9dbd5712006b5f9de831c9',1,'opendal_entry():&#160;opendal.h']]],
+  ['opendal_5fentry_5ffree_34',['opendal_entry_free',['../opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf',1,'opendal.h']]],
+  ['opendal_5fentry_5fname_35',['opendal_entry_name',['../opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5',1,'opendal.h']]],
+  ['opendal_5fentry_5fpath_36',['opendal_entry_path',['../opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9',1,'opendal.h']]],
+  ['opendal_5ferror_37',['opendal_error',['../opendal_8h.html#aba7687efb3e2f74800e93aee4eede6cc',1,'opendal_error():&#160;opendal.h'],['../structopendal__error.html',1,'opendal_error']]],
+  ['opendal_5ferror_5ffree_38',['opendal_error_free',['../opendal_8h.html#a4a8d92df21f5473762677afd9af5f714',1,'opendal.h']]],
+  ['opendal_5fis_5fa_5fdirectory_39',['OPENDAL_IS_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a74508dd984ae3f13a700a8952ca03361',1,'opendal.h']]],
+  ['opendal_5fis_5fsame_5ffile_40',['OPENDAL_IS_SAME_FILE',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2aa2ade9f6ea9d1ad5a6f328a73217e536',1,'opendal.h']]],
+  ['opendal_5flister_41',['opendal_lister',['../structopendal__lister.html',1,'opendal_lister'],['../opendal_8h.html#a581e3ab221c9b3ed82e0a2eb0ba37f68',1,'opendal_lister():&#160;opendal.h']]],
+  ['opendal_5flister_5ffree_42',['opendal_lister_free',['../opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3',1,'opendal.h']]],
+  ['opendal_5flister_5fnext_43',['opendal_lister_next',['../opendal_8h.html#a8429a4433316d9bf70cfffbbcb844a3d',1,'opendal.h']]],
+  ['opendal_5fmetadata_44',['opendal_metadata',['../structopendal__metadata.html',1,'opendal_metadata'],['../opendal_8h.html#af0acf7956915881ccd1f0874f309c682',1,'opendal_metadata():&#160;opendal.h']]],
+  ['opendal_5fmetadata_5fcontent_5flength_45',['opendal_metadata_content_length',['../opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235',1,'opendal.h']]],
+  ['opendal_5fmetadata_5ffree_46',['opendal_metadata_free',['../opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5',1,'opendal.h']]],
+  ['opendal_5fmetadata_5fis_5fdir_47',['opendal_metadata_is_dir',['../opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409',1,'opendal.h']]],
+  ['opendal_5fmetadata_5fis_5ffile_48',['opendal_metadata_is_file',['../opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad',1,'opendal.h']]],
+  ['opendal_5fmetadata_5flast_5fmodified_5fms_49',['opendal_metadata_last_modified_ms',['../opendal_8h.html#af92bde18613cbbae4fe045f9c723022c',1,'opendal.h']]],
+  ['opendal_5fnot_5fa_5fdirectory_50',['OPENDAL_NOT_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ad8f1a6410599cec2a213685324560555',1,'opendal.h']]],
+  ['opendal_5fnot_5ffound_51',['OPENDAL_NOT_FOUND',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a549e63735c8104369fd9230b441ebbf1',1,'opendal.h']]],
+  ['opendal_5foperator_52',['opendal_operator',['../opendal_8h.html#a07642e228c04606083f49cbe02a626ca',1,'opendal_operator():&#160;opendal.h'],['../structopendal__operator.html',1,'opendal_operator']]],
+  ['opendal_5foperator_5fcopy_53',['opendal_operator_copy',['../opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da',1,'opendal.h']]],
+  ['opendal_5foperator_5fcreate_5fdir_54',['opendal_operator_create_dir',['../opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26',1,'opendal.h']]],
+  ['opendal_5foperator_5fdelete_55',['opendal_operator_delete',['../opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc',1,'opendal.h']]],
+  ['opendal_5foperator_5ffree_56',['opendal_operator_free',['../opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_57',['opendal_operator_info',['../structopendal__operator__info.html',1,'opendal_operator_info'],['../opendal_8h.html#abd7fdc73c230284dd37ce9d1f54ea915',1,'opendal_operator_info():&#160;opendal.h']]],
+  ['opendal_5foperator_5finfo_5ffree_58',['opendal_operator_info_free',['../opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5ffull_5fcapability_59',['opendal_operator_info_get_full_capability',['../opendal_8h.html#aa200d3f976b909210bd69038d39fb391',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5fname_60',['opendal_operator_info_get_name',['../opendal_8h.html#a9e71eedec5353536ca9796b6d60d2d4c',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5fnative_5fcapability_61',['opendal_operator_info_get_native_capability',['../opendal_8h.html#a8ab1789c3d4f6538b29063a94df26b56',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5froot_62',['opendal_operator_info_get_root',['../opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5fscheme_63',['opendal_operator_info_get_scheme',['../opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fnew_64',['opendal_operator_info_new',['../opendal_8h.html#a902aa057da25635085584f78e1152045',1,'opendal.h']]],
+  ['opendal_5foperator_5fis_5fexist_65',['opendal_operator_is_exist',['../opendal_8h.html#acc6c32aa41963ac67e612dc47f7edb46',1,'opendal.h']]],
+  ['opendal_5foperator_5flist_66',['opendal_operator_list',['../opendal_8h.html#af8f2888ef406d9fc81af0015a904af9c',1,'opendal.h']]],
+  ['opendal_5foperator_5fnew_67',['opendal_operator_new',['../opendal_8h.html#a3b32f655689a122d2b6feff169fac442',1,'opendal.h']]],
+  ['opendal_5foperator_5foptions_68',['opendal_operator_options',['../opendal_8h.html#a76d4f0935961d0e49befd7719728fd16',1,'opendal_operator_options():&#160;opendal.h'],['../structopendal__operator__options.html',1,'opendal_operator_options']]],
+  ['opendal_5foperator_5foptions_5ffree_69',['opendal_operator_options_free',['../opendal_8h.html#a1d65b173b087b2abca126de2e951b412',1,'opendal.h']]],
+  ['opendal_5foperator_5foptions_5fnew_70',['opendal_operator_options_new',['../opendal_8h.html#a67b1457f2b1258551552dc383840f288',1,'opendal.h']]],
+  ['opendal_5foperator_5foptions_5fset_71',['opendal_operator_options_set',['../opendal_8h.html#af408af922875eb26c25cef4ddfdede02',1,'opendal.h']]],
+  ['opendal_5foperator_5fread_72',['opendal_operator_read',['../opendal_8h.html#ab1419180b377316e27416b742bcc059f',1,'opendal.h']]],
+  ['opendal_5foperator_5freader_73',['opendal_operator_reader',['../opendal_8h.html#aca8d6d56223c55277146afe9ca226944',1,'opendal.h']]],
+  ['opendal_5foperator_5frename_74',['opendal_operator_rename',['../opendal_8h.html#acf513847d08141631c9c57aa59150014',1,'opendal.h']]],
+  ['opendal_5foperator_5fstat_75',['opendal_operator_stat',['../opendal_8h.html#a8d6a3d830761b215c3d03960b6153582',1,'opendal.h']]],
+  ['opendal_5foperator_5fwrite_76',['opendal_operator_write',['../opendal_8h.html#af8b6596a53263101e93b4d73e9eb928c',1,'opendal.h']]],
+  ['opendal_5fpermission_5fdenied_77',['OPENDAL_PERMISSION_DENIED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7d8ddf01b6fc55e87b7a89e04e5b3681',1,'opendal.h']]],
+  ['opendal_5frate_5flimited_78',['OPENDAL_RATE_LIMITED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ae78f8c2cde8d2a3888e12e3894ae5d71',1,'opendal.h']]],
+  ['opendal_5freader_79',['opendal_reader',['../structopendal__reader.html',1,'opendal_reader'],['../opendal_8h.html#a1f2a071a20d13757ba9cd5fde09c1100',1,'opendal_reader():&#160;opendal.h']]],
+  ['opendal_5freader_5ffree_80',['opendal_reader_free',['../opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472',1,'opendal.h']]],
+  ['opendal_5freader_5fread_81',['opendal_reader_read',['../opendal_8h.html#a1a2ea5159526b724de9724dd905d2d3e',1,'opendal.h']]],
+  ['opendal_5fresult_5fis_5fexist_82',['opendal_result_is_exist',['../structopendal__result__is__exist.html',1,'opendal_result_is_exist'],['../opendal_8h.html#afbd6b36f0b084ca5fa251ebd5e317abf',1,'opendal_result_is_exist():&#160;opendal.h']]],
+  ['opendal_5fresult_5flist_83',['opendal_result_list',['../structopendal__result__list.html',1,'opendal_result_list'],['../opendal_8h.html#a606c20c489cac143082dc3870102f43a',1,'opendal_result_list():&#160;opendal.h']]],
+  ['opendal_5fresult_5flister_5fnext_84',['opendal_result_lister_next',['../opendal_8h.html#a590096ddcd0245b474880bae76c2137d',1,'opendal_result_lister_next():&#160;opendal.h'],['../structopendal__result__lister__next.html',1,'opendal_result_lister_next']]],
+  ['opendal_5fresult_5foperator_5fnew_85',['opendal_result_operator_new',['../opendal_8h.html#a1c2ddf5212cda7243c1138f55b9cdbc5',1,'opendal_result_operator_new():&#160;opendal.h'],['../structopendal__result__operator__new.html',1,'opendal_result_operator_new']]],
+  ['opendal_5fresult_5foperator_5freader_86',['opendal_result_operator_reader',['../structopendal__result__operator__reader.html',1,'opendal_result_operator_reader'],['../opendal_8h.html#ae16e33ed9b7d8a3791f38a4fd5d877c8',1,'opendal_result_operator_reader():&#160;opendal.h']]],
+  ['opendal_5fresult_5fread_87',['opendal_result_read',['../structopendal__result__read.html',1,'opendal_result_read'],['../opendal_8h.html#a68a7b0ae2b453dd9ba31ba0d572a4d5d',1,'opendal_result_read():&#160;opendal.h']]],
+  ['opendal_5fresult_5freader_5fread_88',['opendal_result_reader_read',['../opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff',1,'opendal_result_reader_read():&#160;opendal.h'],['../structopendal__result__reader__read.html',1,'opendal_result_reader_read']]],
+  ['opendal_5fresult_5fstat_89',['opendal_result_stat',['../structopendal__result__stat.html',1,'opendal_result_stat'],['../opendal_8h.html#a07f3f83aa0b650a09986291e47a8ddb0',1,'opendal_result_stat():&#160;opendal.h']]],
+  ['opendal_5funexpected_90',['OPENDAL_UNEXPECTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7b638bc0d885a22a64305563add5c535',1,'opendal.h']]],
+  ['opendal_5funsupported_91',['OPENDAL_UNSUPPORTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a0dba9d7c18383f0eabb4801319becb6b',1,'opendal.h']]],
+  ['operatorinfo_92',['OperatorInfo',['../opendal_8h.html#a049ac2a69fc02e3ace6afbb18db397ca',1,'opendal.h']]]
 ];
diff --git a/docs/c/search/all_8.js b/docs/c/search/all_8.js
index 9bbaf04e6..e77fd692c 100644
--- a/docs/c/search/all_8.js
+++ b/docs/c/search/all_8.js
@@ -1,8 +1,8 @@
 var searchData=
 [
-  ['presign_94',['presign',['../structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e',1,'opendal_capability']]],
-  ['presign_5fread_95',['presign_read',['../structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9',1,'opendal_capability']]],
-  ['presign_5fstat_96',['presign_stat',['../structopendal__capability.html#a760bd594d038f919b65a50db22259ba2',1,'opendal_capability']]],
-  ['presign_5fwrite_97',['presign_write',['../structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa',1,'opendal_capability']]],
-  ['ptr_98',['ptr',['../structopendal__operator.html#a81ea292736bd2733dd8e2b0d149305fe',1,'opendal_operator']]]
+  ['presign_93',['presign',['../structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e',1,'opendal_capability']]],
+  ['presign_5fread_94',['presign_read',['../structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9',1,'opendal_capability']]],
+  ['presign_5fstat_95',['presign_stat',['../structopendal__capability.html#a760bd594d038f919b65a50db22259ba2',1,'opendal_capability']]],
+  ['presign_5fwrite_96',['presign_write',['../structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa',1,'opendal_capability']]],
+  ['ptr_97',['ptr',['../structopendal__operator.html#a81ea292736bd2733dd8e2b0d149305fe',1,'opendal_operator']]]
 ];
diff --git a/docs/c/search/all_9.js b/docs/c/search/all_9.js
index 1328136d7..a4a9df57d 100644
--- a/docs/c/search/all_9.js
+++ b/docs/c/search/all_9.js
@@ -1,15 +1,15 @@
 var searchData=
 [
-  ['read_99',['read',['../structopendal__capability.html#a917769617a33340debf3a1e5219441f7',1,'opendal_capability']]],
-  ['read_5fcan_5fnext_100',['read_can_next',['../structopendal__capability.html#abe93920ff673cd3e64c7d493a4d0f291',1,'opendal_capability']]],
-  ['read_5fcan_5fseek_101',['read_can_seek',['../structopendal__capability.html#ad616a0d276048d3cd062a09ad5ed6d6c',1,'opendal_capability']]],
-  ['read_5fwith_5fif_5fmatch_102',['read_with_if_match',['../structopendal__capability.html#a78205c1240745fa53f2fd591d7f2d80b',1,'opendal_capability']]],
-  ['read_5fwith_5fif_5fnone_5fmatch_103',['read_with_if_none_match',['../structopendal__capability.html#ad9cb4596863cde6476ff608c7a2af91e',1,'opendal_capability']]],
-  ['read_5fwith_5foverride_5fcache_5fcontrol_104',['read_with_override_cache_control',['../structopendal__capability.html#affbad0c42bd7c506f902ab72282c67df',1,'opendal_capability']]],
-  ['read_5fwith_5foverride_5fcontent_5fdisposition_105',['read_with_override_content_disposition',['../structopendal__capability.html#ad521c9c12d88e39d88e912cf529f5b1f',1,'opendal_capability']]],
-  ['read_5fwith_5foverride_5fcontent_5ftype_106',['read_with_override_content_type',['../structopendal__capability.html#a64c86a926fb979307652c8e418cf4696',1,'opendal_capability']]],
-  ['read_5fwith_5frange_107',['read_with_range',['../structopendal__capability.html#af44b22da5be7e0a0c9a35304c3dfa1f3',1,'opendal_capability']]],
-  ['reader_108',['reader',['../structopendal__result__operator__reader.html#a9ed8dec94126ab5b74dc63a87ca5839d',1,'opendal_result_operator_reader']]],
-  ['readme_2emd_109',['README.md',['../README_8md.html',1,'']]],
-  ['rename_110',['rename',['../structopendal__capability.html#a9cc207e7258d202f56883a4318c995fa',1,'opendal_capability']]]
+  ['read_98',['read',['../structopendal__capability.html#a917769617a33340debf3a1e5219441f7',1,'opendal_capability']]],
+  ['read_5fcan_5fnext_99',['read_can_next',['../structopendal__capability.html#abe93920ff673cd3e64c7d493a4d0f291',1,'opendal_capability']]],
+  ['read_5fcan_5fseek_100',['read_can_seek',['../structopendal__capability.html#ad616a0d276048d3cd062a09ad5ed6d6c',1,'opendal_capability']]],
+  ['read_5fwith_5fif_5fmatch_101',['read_with_if_match',['../structopendal__capability.html#a78205c1240745fa53f2fd591d7f2d80b',1,'opendal_capability']]],
+  ['read_5fwith_5fif_5fnone_5fmatch_102',['read_with_if_none_match',['../structopendal__capability.html#ad9cb4596863cde6476ff608c7a2af91e',1,'opendal_capability']]],
+  ['read_5fwith_5foverride_5fcache_5fcontrol_103',['read_with_override_cache_control',['../structopendal__capability.html#affbad0c42bd7c506f902ab72282c67df',1,'opendal_capability']]],
+  ['read_5fwith_5foverride_5fcontent_5fdisposition_104',['read_with_override_content_disposition',['../structopendal__capability.html#ad521c9c12d88e39d88e912cf529f5b1f',1,'opendal_capability']]],
+  ['read_5fwith_5foverride_5fcontent_5ftype_105',['read_with_override_content_type',['../structopendal__capability.html#a64c86a926fb979307652c8e418cf4696',1,'opendal_capability']]],
+  ['read_5fwith_5frange_106',['read_with_range',['../structopendal__capability.html#af44b22da5be7e0a0c9a35304c3dfa1f3',1,'opendal_capability']]],
+  ['reader_107',['reader',['../structopendal__result__operator__reader.html#a9ed8dec94126ab5b74dc63a87ca5839d',1,'opendal_result_operator_reader']]],
+  ['readme_2emd_108',['README.md',['../README_8md.html',1,'']]],
+  ['rename_109',['rename',['../structopendal__capability.html#a9cc207e7258d202f56883a4318c995fa',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/all_a.js b/docs/c/search/all_a.js
index e0ece6448..16d1ea79b 100644
--- a/docs/c/search/all_a.js
+++ b/docs/c/search/all_a.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['size_111',['size',['../structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810',1,'opendal_result_reader_read']]],
-  ['stat_112',['stat',['../structopendal__capability.html#ad1f93798b5ded45142ffd6b3acb8c38e',1,'opendal_capability']]],
-  ['stat_5fwith_5fif_5fmatch_113',['stat_with_if_match',['../structopendal__capability.html#a57039859beed1c7586c78fad29aa988b',1,'opendal_capability']]],
-  ['stat_5fwith_5fif_5fnone_5fmatch_114',['stat_with_if_none_match',['../structopendal__capability.html#aa6a539d0f1f7cc13a6ec9e086369eff4',1,'opendal_capability']]]
+  ['size_110',['size',['../structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810',1,'opendal_result_reader_read']]],
+  ['stat_111',['stat',['../structopendal__capability.html#ad1f93798b5ded45142ffd6b3acb8c38e',1,'opendal_capability']]],
+  ['stat_5fwith_5fif_5fmatch_112',['stat_with_if_match',['../structopendal__capability.html#a57039859beed1c7586c78fad29aa988b',1,'opendal_capability']]],
+  ['stat_5fwith_5fif_5fnone_5fmatch_113',['stat_with_if_none_match',['../structopendal__capability.html#aa6a539d0f1f7cc13a6ec9e086369eff4',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/all_b.js b/docs/c/search/all_b.js
index fa4298332..062be9f13 100644
--- a/docs/c/search/all_b.js
+++ b/docs/c/search/all_b.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['todo_20list_115',['Todo List',['../todo.html',1,'']]]
+  ['todo_20list_114',['Todo List',['../todo.html',1,'']]]
 ];
diff --git a/docs/c/search/all_c.js b/docs/c/search/all_c.js
index 45606d6ce..e09f2cc0f 100644
--- a/docs/c/search/all_c.js
+++ b/docs/c/search/all_c.js
@@ -1,14 +1,14 @@
 var searchData=
 [
-  ['write_116',['write',['../structopendal__capability.html#a7e31abcf955b8e966c71f049b6a04fdb',1,'opendal_capability']]],
-  ['write_5fcan_5fappend_117',['write_can_append',['../structopendal__capability.html#a023d768a2c7cd4e0f72e25adca706cea',1,'opendal_capability']]],
-  ['write_5fcan_5fempty_118',['write_can_empty',['../structopendal__capability.html#acadd4a62755f7572e0a52d77f548b1bb',1,'opendal_capability']]],
-  ['write_5fcan_5fmulti_119',['write_can_multi',['../structopendal__capability.html#a2c57aae0b02175094e3c5a279ca9a3f7',1,'opendal_capability']]],
-  ['write_5fmulti_5falign_5fsize_120',['write_multi_align_size',['../structopendal__capability.html#ad4843253b81da1f5528a36c1c0378cb8',1,'opendal_capability']]],
-  ['write_5fmulti_5fmax_5fsize_121',['write_multi_max_size',['../structopendal__capability.html#ab9eb0746a111632656ac8f8de6b59c43',1,'opendal_capability']]],
-  ['write_5fmulti_5fmin_5fsize_122',['write_multi_min_size',['../structopendal__capability.html#a50f46414d464319e7cc5abab842d9a4f',1,'opendal_capability']]],
-  ['write_5ftotal_5fmax_5fsize_123',['write_total_max_size',['../structopendal__capability.html#a8d5e8309fb74dec234667d2bc4e07ac6',1,'opendal_capability']]],
-  ['write_5fwith_5fcache_5fcontrol_124',['write_with_cache_control',['../structopendal__capability.html#aa1e24b711d3da051223c8439fb2d0021',1,'opendal_capability']]],
-  ['write_5fwith_5fcontent_5fdisposition_125',['write_with_content_disposition',['../structopendal__capability.html#aebb9626bde1fe46e67fd450219aef99c',1,'opendal_capability']]],
-  ['write_5fwith_5fcontent_5ftype_126',['write_with_content_type',['../structopendal__capability.html#a8b8a3426cf390c29e7a3e22cbaa7c761',1,'opendal_capability']]]
+  ['write_115',['write',['../structopendal__capability.html#a7e31abcf955b8e966c71f049b6a04fdb',1,'opendal_capability']]],
+  ['write_5fcan_5fappend_116',['write_can_append',['../structopendal__capability.html#a023d768a2c7cd4e0f72e25adca706cea',1,'opendal_capability']]],
+  ['write_5fcan_5fempty_117',['write_can_empty',['../structopendal__capability.html#acadd4a62755f7572e0a52d77f548b1bb',1,'opendal_capability']]],
+  ['write_5fcan_5fmulti_118',['write_can_multi',['../structopendal__capability.html#a2c57aae0b02175094e3c5a279ca9a3f7',1,'opendal_capability']]],
+  ['write_5fmulti_5falign_5fsize_119',['write_multi_align_size',['../structopendal__capability.html#ad4843253b81da1f5528a36c1c0378cb8',1,'opendal_capability']]],
+  ['write_5fmulti_5fmax_5fsize_120',['write_multi_max_size',['../structopendal__capability.html#ab9eb0746a111632656ac8f8de6b59c43',1,'opendal_capability']]],
+  ['write_5fmulti_5fmin_5fsize_121',['write_multi_min_size',['../structopendal__capability.html#a50f46414d464319e7cc5abab842d9a4f',1,'opendal_capability']]],
+  ['write_5ftotal_5fmax_5fsize_122',['write_total_max_size',['../structopendal__capability.html#a8d5e8309fb74dec234667d2bc4e07ac6',1,'opendal_capability']]],
+  ['write_5fwith_5fcache_5fcontrol_123',['write_with_cache_control',['../structopendal__capability.html#aa1e24b711d3da051223c8439fb2d0021',1,'opendal_capability']]],
+  ['write_5fwith_5fcontent_5fdisposition_124',['write_with_content_disposition',['../structopendal__capability.html#aebb9626bde1fe46e67fd450219aef99c',1,'opendal_capability']]],
+  ['write_5fwith_5fcontent_5ftype_125',['write_with_content_type',['../structopendal__capability.html#a8b8a3426cf390c29e7a3e22cbaa7c761',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/classes_0.js b/docs/c/search/classes_0.js
index 07473a23c..e353c4dc9 100644
--- a/docs/c/search/classes_0.js
+++ b/docs/c/search/classes_0.js
@@ -1,21 +1,21 @@
 var searchData=
 [
-  ['opendal_5fbytes_127',['opendal_bytes',['../structopendal__bytes.html',1,'']]],
-  ['opendal_5fcapability_128',['opendal_capability',['../structopendal__capability.html',1,'']]],
-  ['opendal_5fentry_129',['opendal_entry',['../structopendal__entry.html',1,'']]],
-  ['opendal_5ferror_130',['opendal_error',['../structopendal__error.html',1,'']]],
-  ['opendal_5flister_131',['opendal_lister',['../structopendal__lister.html',1,'']]],
-  ['opendal_5fmetadata_132',['opendal_metadata',['../structopendal__metadata.html',1,'']]],
-  ['opendal_5foperator_133',['opendal_operator',['../structopendal__operator.html',1,'']]],
-  ['opendal_5foperator_5finfo_134',['opendal_operator_info',['../structopendal__operator__info.html',1,'']]],
-  ['opendal_5foperator_5foptions_135',['opendal_operator_options',['../structopendal__operator__options.html',1,'']]],
-  ['opendal_5freader_136',['opendal_reader',['../structopendal__reader.html',1,'']]],
-  ['opendal_5fresult_5fis_5fexist_137',['opendal_result_is_exist',['../structopendal__result__is__exist.html',1,'']]],
-  ['opendal_5fresult_5flist_138',['opendal_result_list',['../structopendal__result__list.html',1,'']]],
-  ['opendal_5fresult_5flister_5fnext_139',['opendal_result_lister_next',['../structopendal__result__lister__next.html',1,'']]],
-  ['opendal_5fresult_5foperator_5fnew_140',['opendal_result_operator_new',['../structopendal__result__operator__new.html',1,'']]],
-  ['opendal_5fresult_5foperator_5freader_141',['opendal_result_operator_reader',['../structopendal__result__operator__reader.html',1,'']]],
-  ['opendal_5fresult_5fread_142',['opendal_result_read',['../structopendal__result__read.html',1,'']]],
-  ['opendal_5fresult_5freader_5fread_143',['opendal_result_reader_read',['../structopendal__result__reader__read.html',1,'']]],
-  ['opendal_5fresult_5fstat_144',['opendal_result_stat',['../structopendal__result__stat.html',1,'']]]
+  ['opendal_5fbytes_126',['opendal_bytes',['../structopendal__bytes.html',1,'']]],
+  ['opendal_5fcapability_127',['opendal_capability',['../structopendal__capability.html',1,'']]],
+  ['opendal_5fentry_128',['opendal_entry',['../structopendal__entry.html',1,'']]],
+  ['opendal_5ferror_129',['opendal_error',['../structopendal__error.html',1,'']]],
+  ['opendal_5flister_130',['opendal_lister',['../structopendal__lister.html',1,'']]],
+  ['opendal_5fmetadata_131',['opendal_metadata',['../structopendal__metadata.html',1,'']]],
+  ['opendal_5foperator_132',['opendal_operator',['../structopendal__operator.html',1,'']]],
+  ['opendal_5foperator_5finfo_133',['opendal_operator_info',['../structopendal__operator__info.html',1,'']]],
+  ['opendal_5foperator_5foptions_134',['opendal_operator_options',['../structopendal__operator__options.html',1,'']]],
+  ['opendal_5freader_135',['opendal_reader',['../structopendal__reader.html',1,'']]],
+  ['opendal_5fresult_5fis_5fexist_136',['opendal_result_is_exist',['../structopendal__result__is__exist.html',1,'']]],
+  ['opendal_5fresult_5flist_137',['opendal_result_list',['../structopendal__result__list.html',1,'']]],
+  ['opendal_5fresult_5flister_5fnext_138',['opendal_result_lister_next',['../structopendal__result__lister__next.html',1,'']]],
+  ['opendal_5fresult_5foperator_5fnew_139',['opendal_result_operator_new',['../structopendal__result__operator__new.html',1,'']]],
+  ['opendal_5fresult_5foperator_5freader_140',['opendal_result_operator_reader',['../structopendal__result__operator__reader.html',1,'']]],
+  ['opendal_5fresult_5fread_141',['opendal_result_read',['../structopendal__result__read.html',1,'']]],
+  ['opendal_5fresult_5freader_5fread_142',['opendal_result_reader_read',['../structopendal__result__reader__read.html',1,'']]],
+  ['opendal_5fresult_5fstat_143',['opendal_result_stat',['../structopendal__result__stat.html',1,'']]]
 ];
diff --git a/docs/c/search/enums_0.js b/docs/c/search/enums_0.js
index b9aeab10e..73695bf1c 100644
--- a/docs/c/search/enums_0.js
+++ b/docs/c/search/enums_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['opendal_5fcode_260',['opendal_code',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2',1,'opendal.h']]]
+  ['opendal_5fcode_258',['opendal_code',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2',1,'opendal.h']]]
 ];
diff --git a/docs/c/search/enumvalues_0.js b/docs/c/search/enumvalues_0.js
index d383df47c..eaccb0f89 100644
--- a/docs/c/search/enumvalues_0.js
+++ b/docs/c/search/enumvalues_0.js
@@ -1,13 +1,13 @@
 var searchData=
 [
-  ['opendal_5falready_5fexists_261',['OPENDAL_ALREADY_EXISTS',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a8f0a65852b0b02a0a3c73f7382607d67',1,'opendal.h']]],
-  ['opendal_5fconfig_5finvalid_262',['OPENDAL_CONFIG_INVALID',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2af0fb62173ba6973b328c3342a95f53b5',1,'opendal.h']]],
-  ['opendal_5fis_5fa_5fdirectory_263',['OPENDAL_IS_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a74508dd984ae3f13a700a8952ca03361',1,'opendal.h']]],
-  ['opendal_5fis_5fsame_5ffile_264',['OPENDAL_IS_SAME_FILE',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2aa2ade9f6ea9d1ad5a6f328a73217e536',1,'opendal.h']]],
-  ['opendal_5fnot_5fa_5fdirectory_265',['OPENDAL_NOT_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ad8f1a6410599cec2a213685324560555',1,'opendal.h']]],
-  ['opendal_5fnot_5ffound_266',['OPENDAL_NOT_FOUND',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a549e63735c8104369fd9230b441ebbf1',1,'opendal.h']]],
-  ['opendal_5fpermission_5fdenied_267',['OPENDAL_PERMISSION_DENIED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7d8ddf01b6fc55e87b7a89e04e5b3681',1,'opendal.h']]],
-  ['opendal_5frate_5flimited_268',['OPENDAL_RATE_LIMITED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ae78f8c2cde8d2a3888e12e3894ae5d71',1,'opendal.h']]],
-  ['opendal_5funexpected_269',['OPENDAL_UNEXPECTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7b638bc0d885a22a64305563add5c535',1,'opendal.h']]],
-  ['opendal_5funsupported_270',['OPENDAL_UNSUPPORTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a0dba9d7c18383f0eabb4801319becb6b',1,'opendal.h']]]
+  ['opendal_5falready_5fexists_259',['OPENDAL_ALREADY_EXISTS',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a8f0a65852b0b02a0a3c73f7382607d67',1,'opendal.h']]],
+  ['opendal_5fconfig_5finvalid_260',['OPENDAL_CONFIG_INVALID',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2af0fb62173ba6973b328c3342a95f53b5',1,'opendal.h']]],
+  ['opendal_5fis_5fa_5fdirectory_261',['OPENDAL_IS_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a74508dd984ae3f13a700a8952ca03361',1,'opendal.h']]],
+  ['opendal_5fis_5fsame_5ffile_262',['OPENDAL_IS_SAME_FILE',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2aa2ade9f6ea9d1ad5a6f328a73217e536',1,'opendal.h']]],
+  ['opendal_5fnot_5fa_5fdirectory_263',['OPENDAL_NOT_A_DIRECTORY',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ad8f1a6410599cec2a213685324560555',1,'opendal.h']]],
+  ['opendal_5fnot_5ffound_264',['OPENDAL_NOT_FOUND',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a549e63735c8104369fd9230b441ebbf1',1,'opendal.h']]],
+  ['opendal_5fpermission_5fdenied_265',['OPENDAL_PERMISSION_DENIED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7d8ddf01b6fc55e87b7a89e04e5b3681',1,'opendal.h']]],
+  ['opendal_5frate_5flimited_266',['OPENDAL_RATE_LIMITED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2ae78f8c2cde8d2a3888e12e3894ae5d71',1,'opendal.h']]],
+  ['opendal_5funexpected_267',['OPENDAL_UNEXPECTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a7b638bc0d885a22a64305563add5c535',1,'opendal.h']]],
+  ['opendal_5funsupported_268',['OPENDAL_UNSUPPORTED',['../opendal_8h.html#a6715be152766e5b8f840ce10cf9442c2a0dba9d7c18383f0eabb4801319becb6b',1,'opendal.h']]]
 ];
diff --git a/docs/c/search/files_0.js b/docs/c/search/files_0.js
index 65a0feb90..6632db72a 100644
--- a/docs/c/search/files_0.js
+++ b/docs/c/search/files_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['opendal_2eh_145',['opendal.h',['../opendal_8h.html',1,'']]]
+  ['opendal_2eh_144',['opendal.h',['../opendal_8h.html',1,'']]]
 ];
diff --git a/docs/c/search/files_1.js b/docs/c/search/files_1.js
index d9d078046..c54c08de4 100644
--- a/docs/c/search/files_1.js
+++ b/docs/c/search/files_1.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['readme_2emd_146',['README.md',['../README_8md.html',1,'']]]
+  ['readme_2emd_145',['README.md',['../README_8md.html',1,'']]]
 ];
diff --git a/docs/c/search/functions_0.js b/docs/c/search/functions_0.js
index 9ce2cfef0..3acef5b1f 100644
--- a/docs/c/search/functions_0.js
+++ b/docs/c/search/functions_0.js
@@ -1,39 +1,39 @@
 var searchData=
 [
-  ['opendal_5fbytes_5ffree_147',['opendal_bytes_free',['../opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a',1,'opendal.h']]],
-  ['opendal_5fentry_5ffree_148',['opendal_entry_free',['../opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf',1,'opendal.h']]],
-  ['opendal_5fentry_5fname_149',['opendal_entry_name',['../opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5',1,'opendal.h']]],
-  ['opendal_5fentry_5fpath_150',['opendal_entry_path',['../opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9',1,'opendal.h']]],
-  ['opendal_5ferror_5ffree_151',['opendal_error_free',['../opendal_8h.html#a4a8d92df21f5473762677afd9af5f714',1,'opendal.h']]],
-  ['opendal_5flister_5ffree_152',['opendal_lister_free',['../opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3',1,'opendal.h']]],
-  ['opendal_5flister_5fnext_153',['opendal_lister_next',['../opendal_8h.html#a8429a4433316d9bf70cfffbbcb844a3d',1,'opendal.h']]],
-  ['opendal_5fmetadata_5fcontent_5flength_154',['opendal_metadata_content_length',['../opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235',1,'opendal.h']]],
-  ['opendal_5fmetadata_5ffree_155',['opendal_metadata_free',['../opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5',1,'opendal.h']]],
-  ['opendal_5fmetadata_5fis_5fdir_156',['opendal_metadata_is_dir',['../opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409',1,'opendal.h']]],
-  ['opendal_5fmetadata_5fis_5ffile_157',['opendal_metadata_is_file',['../opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad',1,'opendal.h']]],
-  ['opendal_5fmetadata_5flast_5fmodified_5fms_158',['opendal_metadata_last_modified_ms',['../opendal_8h.html#af92bde18613cbbae4fe045f9c723022c',1,'opendal.h']]],
-  ['opendal_5foperator_5fcopy_159',['opendal_operator_copy',['../opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da',1,'opendal.h']]],
-  ['opendal_5foperator_5fcreate_5fdir_160',['opendal_operator_create_dir',['../opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26',1,'opendal.h']]],
-  ['opendal_5foperator_5fdelete_161',['opendal_operator_delete',['../opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc',1,'opendal.h']]],
-  ['opendal_5foperator_5ffree_162',['opendal_operator_free',['../opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5ffree_163',['opendal_operator_info_free',['../opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5ffull_5fcapability_164',['opendal_operator_info_get_full_capability',['../opendal_8h.html#aa200d3f976b909210bd69038d39fb391',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5fname_165',['opendal_operator_info_get_name',['../opendal_8h.html#a9e71eedec5353536ca9796b6d60d2d4c',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5fnative_5fcapability_166',['opendal_operator_info_get_native_capability',['../opendal_8h.html#a8ab1789c3d4f6538b29063a94df26b56',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5froot_167',['opendal_operator_info_get_root',['../opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fget_5fscheme_168',['opendal_operator_info_get_scheme',['../opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_5fnew_169',['opendal_operator_info_new',['../opendal_8h.html#a902aa057da25635085584f78e1152045',1,'opendal.h']]],
-  ['opendal_5foperator_5fis_5fexist_170',['opendal_operator_is_exist',['../opendal_8h.html#acc6c32aa41963ac67e612dc47f7edb46',1,'opendal.h']]],
-  ['opendal_5foperator_5flist_171',['opendal_operator_list',['../opendal_8h.html#af8f2888ef406d9fc81af0015a904af9c',1,'opendal.h']]],
-  ['opendal_5foperator_5fnew_172',['opendal_operator_new',['../opendal_8h.html#a3b32f655689a122d2b6feff169fac442',1,'opendal.h']]],
-  ['opendal_5foperator_5foptions_5ffree_173',['opendal_operator_options_free',['../opendal_8h.html#a1d65b173b087b2abca126de2e951b412',1,'opendal.h']]],
-  ['opendal_5foperator_5foptions_5fnew_174',['opendal_operator_options_new',['../opendal_8h.html#a67b1457f2b1258551552dc383840f288',1,'opendal.h']]],
-  ['opendal_5foperator_5foptions_5fset_175',['opendal_operator_options_set',['../opendal_8h.html#af408af922875eb26c25cef4ddfdede02',1,'opendal.h']]],
-  ['opendal_5foperator_5fread_176',['opendal_operator_read',['../opendal_8h.html#ab1419180b377316e27416b742bcc059f',1,'opendal.h']]],
-  ['opendal_5foperator_5freader_177',['opendal_operator_reader',['../opendal_8h.html#aca8d6d56223c55277146afe9ca226944',1,'opendal.h']]],
-  ['opendal_5foperator_5frename_178',['opendal_operator_rename',['../opendal_8h.html#acf513847d08141631c9c57aa59150014',1,'opendal.h']]],
-  ['opendal_5foperator_5fstat_179',['opendal_operator_stat',['../opendal_8h.html#a8d6a3d830761b215c3d03960b6153582',1,'opendal.h']]],
-  ['opendal_5foperator_5fwrite_180',['opendal_operator_write',['../opendal_8h.html#af8b6596a53263101e93b4d73e9eb928c',1,'opendal.h']]],
-  ['opendal_5freader_5ffree_181',['opendal_reader_free',['../opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472',1,'opendal.h']]],
-  ['opendal_5freader_5fread_182',['opendal_reader_read',['../opendal_8h.html#a1a2ea5159526b724de9724dd905d2d3e',1,'opendal.h']]]
+  ['opendal_5fbytes_5ffree_146',['opendal_bytes_free',['../opendal_8h.html#adba027eb1460c828ff32e87f0ceb338a',1,'opendal.h']]],
+  ['opendal_5fentry_5ffree_147',['opendal_entry_free',['../opendal_8h.html#af9238bb47d83d4b8d98981122f3824bf',1,'opendal.h']]],
+  ['opendal_5fentry_5fname_148',['opendal_entry_name',['../opendal_8h.html#aaa2109178eeaabde28bf8ba7e3110ed5',1,'opendal.h']]],
+  ['opendal_5fentry_5fpath_149',['opendal_entry_path',['../opendal_8h.html#ae712985c1de6bc0bb35c85b3cadefab9',1,'opendal.h']]],
+  ['opendal_5ferror_5ffree_150',['opendal_error_free',['../opendal_8h.html#a4a8d92df21f5473762677afd9af5f714',1,'opendal.h']]],
+  ['opendal_5flister_5ffree_151',['opendal_lister_free',['../opendal_8h.html#aee248f8b3afbb982fd0ad0baaa1159e3',1,'opendal.h']]],
+  ['opendal_5flister_5fnext_152',['opendal_lister_next',['../opendal_8h.html#a8429a4433316d9bf70cfffbbcb844a3d',1,'opendal.h']]],
+  ['opendal_5fmetadata_5fcontent_5flength_153',['opendal_metadata_content_length',['../opendal_8h.html#ac8e9a9da0f04cb80848e7e42c3b90235',1,'opendal.h']]],
+  ['opendal_5fmetadata_5ffree_154',['opendal_metadata_free',['../opendal_8h.html#a8ff66345b1c45c66920ef0ddfef739c5',1,'opendal.h']]],
+  ['opendal_5fmetadata_5fis_5fdir_155',['opendal_metadata_is_dir',['../opendal_8h.html#ac8cb949fb37f83dfcbe78976eaa29409',1,'opendal.h']]],
+  ['opendal_5fmetadata_5fis_5ffile_156',['opendal_metadata_is_file',['../opendal_8h.html#a8900dddbbce980c3323cedd4f30c33ad',1,'opendal.h']]],
+  ['opendal_5fmetadata_5flast_5fmodified_5fms_157',['opendal_metadata_last_modified_ms',['../opendal_8h.html#af92bde18613cbbae4fe045f9c723022c',1,'opendal.h']]],
+  ['opendal_5foperator_5fcopy_158',['opendal_operator_copy',['../opendal_8h.html#a5d9b1d855b30fa8bd56d1399293b85da',1,'opendal.h']]],
+  ['opendal_5foperator_5fcreate_5fdir_159',['opendal_operator_create_dir',['../opendal_8h.html#aa13f840e6fd4fa75d0cd0482db7e4b26',1,'opendal.h']]],
+  ['opendal_5foperator_5fdelete_160',['opendal_operator_delete',['../opendal_8h.html#ad21a0a160ee32cfa90e2e0ca1e1da0dc',1,'opendal.h']]],
+  ['opendal_5foperator_5ffree_161',['opendal_operator_free',['../opendal_8h.html#a04d551eea4b6248d96c9ce9278d27855',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5ffree_162',['opendal_operator_info_free',['../opendal_8h.html#a4b9c51df68246236ceefb051bb10c20d',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5ffull_5fcapability_163',['opendal_operator_info_get_full_capability',['../opendal_8h.html#aa200d3f976b909210bd69038d39fb391',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5fname_164',['opendal_operator_info_get_name',['../opendal_8h.html#a9e71eedec5353536ca9796b6d60d2d4c',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5fnative_5fcapability_165',['opendal_operator_info_get_native_capability',['../opendal_8h.html#a8ab1789c3d4f6538b29063a94df26b56',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5froot_166',['opendal_operator_info_get_root',['../opendal_8h.html#aae50fdd0d0eb2cfff176f53132c4552e',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fget_5fscheme_167',['opendal_operator_info_get_scheme',['../opendal_8h.html#a2b3ee8d084fac74ad0cea4be61c7be48',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_5fnew_168',['opendal_operator_info_new',['../opendal_8h.html#a902aa057da25635085584f78e1152045',1,'opendal.h']]],
+  ['opendal_5foperator_5fis_5fexist_169',['opendal_operator_is_exist',['../opendal_8h.html#acc6c32aa41963ac67e612dc47f7edb46',1,'opendal.h']]],
+  ['opendal_5foperator_5flist_170',['opendal_operator_list',['../opendal_8h.html#af8f2888ef406d9fc81af0015a904af9c',1,'opendal.h']]],
+  ['opendal_5foperator_5fnew_171',['opendal_operator_new',['../opendal_8h.html#a3b32f655689a122d2b6feff169fac442',1,'opendal.h']]],
+  ['opendal_5foperator_5foptions_5ffree_172',['opendal_operator_options_free',['../opendal_8h.html#a1d65b173b087b2abca126de2e951b412',1,'opendal.h']]],
+  ['opendal_5foperator_5foptions_5fnew_173',['opendal_operator_options_new',['../opendal_8h.html#a67b1457f2b1258551552dc383840f288',1,'opendal.h']]],
+  ['opendal_5foperator_5foptions_5fset_174',['opendal_operator_options_set',['../opendal_8h.html#af408af922875eb26c25cef4ddfdede02',1,'opendal.h']]],
+  ['opendal_5foperator_5fread_175',['opendal_operator_read',['../opendal_8h.html#ab1419180b377316e27416b742bcc059f',1,'opendal.h']]],
+  ['opendal_5foperator_5freader_176',['opendal_operator_reader',['../opendal_8h.html#aca8d6d56223c55277146afe9ca226944',1,'opendal.h']]],
+  ['opendal_5foperator_5frename_177',['opendal_operator_rename',['../opendal_8h.html#acf513847d08141631c9c57aa59150014',1,'opendal.h']]],
+  ['opendal_5foperator_5fstat_178',['opendal_operator_stat',['../opendal_8h.html#a8d6a3d830761b215c3d03960b6153582',1,'opendal.h']]],
+  ['opendal_5foperator_5fwrite_179',['opendal_operator_write',['../opendal_8h.html#af8b6596a53263101e93b4d73e9eb928c',1,'opendal.h']]],
+  ['opendal_5freader_5ffree_180',['opendal_reader_free',['../opendal_8h.html#a7ef708841e8d9a0cebb64a983ef4d472',1,'opendal.h']]],
+  ['opendal_5freader_5fread_181',['opendal_reader_read',['../opendal_8h.html#a1a2ea5159526b724de9724dd905d2d3e',1,'opendal.h']]]
 ];
diff --git a/docs/c/search/pages_0.js b/docs/c/search/pages_0.js
index 09e9a36a6..ed3b9a37b 100644
--- a/docs/c/search/pages_0.js
+++ b/docs/c/search/pages_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['opendal_20c_20binding_20_28wip_29_271',['OpenDAL C Binding (WIP)',['../index.html',1,'']]]
+  ['opendal_20c_20binding_20_28wip_29_269',['OpenDAL C Binding (WIP)',['../index.html',1,'']]]
 ];
diff --git a/docs/c/search/pages_1.js b/docs/c/search/pages_1.js
index 45d6d2cc9..bd6affec3 100644
--- a/docs/c/search/pages_1.js
+++ b/docs/c/search/pages_1.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['todo_20list_272',['Todo List',['../todo.html',1,'']]]
+  ['todo_20list_270',['Todo List',['../todo.html',1,'']]]
 ];
diff --git a/docs/c/search/typedefs_0.js b/docs/c/search/typedefs_0.js
index 7b6e1c176..ff5971eee 100644
--- a/docs/c/search/typedefs_0.js
+++ b/docs/c/search/typedefs_0.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['blockinglister_237',['BlockingLister',['../opendal_8h.html#a03ea17a7d09e319825d05a1d9f5d933c',1,'opendal.h']]],
-  ['blockingreader_238',['BlockingReader',['../opendal_8h.html#a8c11fb124aac4911b663122dbfa7d1fa',1,'opendal.h']]]
+  ['blockinglister_235',['BlockingLister',['../opendal_8h.html#a03ea17a7d09e319825d05a1d9f5d933c',1,'opendal.h']]],
+  ['blockingreader_236',['BlockingReader',['../opendal_8h.html#a8c11fb124aac4911b663122dbfa7d1fa',1,'opendal.h']]]
 ];
diff --git a/docs/c/search/typedefs_1.js b/docs/c/search/typedefs_1.js
index 903383d83..d5838d553 100644
--- a/docs/c/search/typedefs_1.js
+++ b/docs/c/search/typedefs_1.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['entry_239',['Entry',['../opendal_8h.html#a65b0d0252adaf76f9ce2004299344de8',1,'opendal.h']]]
+  ['entry_237',['Entry',['../opendal_8h.html#a65b0d0252adaf76f9ce2004299344de8',1,'opendal.h']]]
 ];
diff --git a/docs/c/search/typedefs_2.js b/docs/c/search/typedefs_2.js
index bd284187d..7f11ad0c8 100644
--- a/docs/c/search/typedefs_2.js
+++ b/docs/c/search/typedefs_2.js
@@ -1,23 +1,23 @@
 var searchData=
 [
-  ['opendal_5fbytes_240',['opendal_bytes',['../opendal_8h.html#a4117acdec0983ce12962491960847381',1,'opendal.h']]],
-  ['opendal_5fcapability_241',['opendal_capability',['../opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3',1,'opendal.h']]],
-  ['opendal_5fcode_242',['opendal_code',['../opendal_8h.html#a333cc71b98ca4ce17183c1b4263ddd1f',1,'opendal.h']]],
-  ['opendal_5fentry_243',['opendal_entry',['../opendal_8h.html#af70798853b9dbd5712006b5f9de831c9',1,'opendal.h']]],
-  ['opendal_5ferror_244',['opendal_error',['../opendal_8h.html#aba7687efb3e2f74800e93aee4eede6cc',1,'opendal.h']]],
-  ['opendal_5flister_245',['opendal_lister',['../opendal_8h.html#a581e3ab221c9b3ed82e0a2eb0ba37f68',1,'opendal.h']]],
-  ['opendal_5fmetadata_246',['opendal_metadata',['../opendal_8h.html#af0acf7956915881ccd1f0874f309c682',1,'opendal.h']]],
-  ['opendal_5foperator_247',['opendal_operator',['../opendal_8h.html#a07642e228c04606083f49cbe02a626ca',1,'opendal.h']]],
-  ['opendal_5foperator_5finfo_248',['opendal_operator_info',['../opendal_8h.html#abd7fdc73c230284dd37ce9d1f54ea915',1,'opendal.h']]],
-  ['opendal_5foperator_5foptions_249',['opendal_operator_options',['../opendal_8h.html#a76d4f0935961d0e49befd7719728fd16',1,'opendal.h']]],
-  ['opendal_5freader_250',['opendal_reader',['../opendal_8h.html#a1f2a071a20d13757ba9cd5fde09c1100',1,'opendal.h']]],
-  ['opendal_5fresult_5fis_5fexist_251',['opendal_result_is_exist',['../opendal_8h.html#afbd6b36f0b084ca5fa251ebd5e317abf',1,'opendal.h']]],
-  ['opendal_5fresult_5flist_252',['opendal_result_list',['../opendal_8h.html#a606c20c489cac143082dc3870102f43a',1,'opendal.h']]],
-  ['opendal_5fresult_5flister_5fnext_253',['opendal_result_lister_next',['../opendal_8h.html#a590096ddcd0245b474880bae76c2137d',1,'opendal.h']]],
-  ['opendal_5fresult_5foperator_5fnew_254',['opendal_result_operator_new',['../opendal_8h.html#a1c2ddf5212cda7243c1138f55b9cdbc5',1,'opendal.h']]],
-  ['opendal_5fresult_5foperator_5freader_255',['opendal_result_operator_reader',['../opendal_8h.html#ae16e33ed9b7d8a3791f38a4fd5d877c8',1,'opendal.h']]],
-  ['opendal_5fresult_5fread_256',['opendal_result_read',['../opendal_8h.html#a68a7b0ae2b453dd9ba31ba0d572a4d5d',1,'opendal.h']]],
-  ['opendal_5fresult_5freader_5fread_257',['opendal_result_reader_read',['../opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff',1,'opendal.h']]],
-  ['opendal_5fresult_5fstat_258',['opendal_result_stat',['../opendal_8h.html#a07f3f83aa0b650a09986291e47a8ddb0',1,'opendal.h']]],
-  ['operatorinfo_259',['OperatorInfo',['../opendal_8h.html#a049ac2a69fc02e3ace6afbb18db397ca',1,'opendal.h']]]
+  ['opendal_5fbytes_238',['opendal_bytes',['../opendal_8h.html#a4117acdec0983ce12962491960847381',1,'opendal.h']]],
+  ['opendal_5fcapability_239',['opendal_capability',['../opendal_8h.html#ab011e9fbcb61c8d3bf66d6c5d89227e3',1,'opendal.h']]],
+  ['opendal_5fcode_240',['opendal_code',['../opendal_8h.html#a333cc71b98ca4ce17183c1b4263ddd1f',1,'opendal.h']]],
+  ['opendal_5fentry_241',['opendal_entry',['../opendal_8h.html#af70798853b9dbd5712006b5f9de831c9',1,'opendal.h']]],
+  ['opendal_5ferror_242',['opendal_error',['../opendal_8h.html#aba7687efb3e2f74800e93aee4eede6cc',1,'opendal.h']]],
+  ['opendal_5flister_243',['opendal_lister',['../opendal_8h.html#a581e3ab221c9b3ed82e0a2eb0ba37f68',1,'opendal.h']]],
+  ['opendal_5fmetadata_244',['opendal_metadata',['../opendal_8h.html#af0acf7956915881ccd1f0874f309c682',1,'opendal.h']]],
+  ['opendal_5foperator_245',['opendal_operator',['../opendal_8h.html#a07642e228c04606083f49cbe02a626ca',1,'opendal.h']]],
+  ['opendal_5foperator_5finfo_246',['opendal_operator_info',['../opendal_8h.html#abd7fdc73c230284dd37ce9d1f54ea915',1,'opendal.h']]],
+  ['opendal_5foperator_5foptions_247',['opendal_operator_options',['../opendal_8h.html#a76d4f0935961d0e49befd7719728fd16',1,'opendal.h']]],
+  ['opendal_5freader_248',['opendal_reader',['../opendal_8h.html#a1f2a071a20d13757ba9cd5fde09c1100',1,'opendal.h']]],
+  ['opendal_5fresult_5fis_5fexist_249',['opendal_result_is_exist',['../opendal_8h.html#afbd6b36f0b084ca5fa251ebd5e317abf',1,'opendal.h']]],
+  ['opendal_5fresult_5flist_250',['opendal_result_list',['../opendal_8h.html#a606c20c489cac143082dc3870102f43a',1,'opendal.h']]],
+  ['opendal_5fresult_5flister_5fnext_251',['opendal_result_lister_next',['../opendal_8h.html#a590096ddcd0245b474880bae76c2137d',1,'opendal.h']]],
+  ['opendal_5fresult_5foperator_5fnew_252',['opendal_result_operator_new',['../opendal_8h.html#a1c2ddf5212cda7243c1138f55b9cdbc5',1,'opendal.h']]],
+  ['opendal_5fresult_5foperator_5freader_253',['opendal_result_operator_reader',['../opendal_8h.html#ae16e33ed9b7d8a3791f38a4fd5d877c8',1,'opendal.h']]],
+  ['opendal_5fresult_5fread_254',['opendal_result_read',['../opendal_8h.html#a68a7b0ae2b453dd9ba31ba0d572a4d5d',1,'opendal.h']]],
+  ['opendal_5fresult_5freader_5fread_255',['opendal_result_reader_read',['../opendal_8h.html#a1fc707d831b5e91edd1a34c0f08805ff',1,'opendal.h']]],
+  ['opendal_5fresult_5fstat_256',['opendal_result_stat',['../opendal_8h.html#a07f3f83aa0b650a09986291e47a8ddb0',1,'opendal.h']]],
+  ['operatorinfo_257',['OperatorInfo',['../opendal_8h.html#a049ac2a69fc02e3ace6afbb18db397ca',1,'opendal.h']]]
 ];
diff --git a/docs/c/search/variables_0.js b/docs/c/search/variables_0.js
index 2fa55fdfb..b6fed365c 100644
--- a/docs/c/search/variables_0.js
+++ b/docs/c/search/variables_0.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['batch_183',['batch',['../structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a',1,'opendal_capability']]],
-  ['batch_5fdelete_184',['batch_delete',['../structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca',1,'opendal_capability']]],
-  ['batch_5fmax_5foperations_185',['batch_max_operations',['../structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29',1,'opendal_capability']]],
-  ['blocking_186',['blocking',['../structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133',1,'opendal_capability']]]
+  ['batch_182',['batch',['../structopendal__capability.html#a65b6d18fa83bbee82a00af82ebf06b2a',1,'opendal_capability']]],
+  ['batch_5fdelete_183',['batch_delete',['../structopendal__capability.html#ab8482b65de875ce8b0953917d19e2fca',1,'opendal_capability']]],
+  ['batch_5fmax_5foperations_184',['batch_max_operations',['../structopendal__capability.html#a6c93f72f188766a4a7f0671a43d28a29',1,'opendal_capability']]],
+  ['blocking_185',['blocking',['../structopendal__capability.html#a49c946f5d49e868f63d9165a90cef133',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/variables_1.js b/docs/c/search/variables_1.js
index 446af692a..71b5eaf8f 100644
--- a/docs/c/search/variables_1.js
+++ b/docs/c/search/variables_1.js
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['code_187',['code',['../structopendal__error.html#ac5ac4b16d49b767afdb29cf9b8115e53',1,'opendal_error']]],
-  ['copy_188',['copy',['../structopendal__capability.html#acbcd08c593f558964f5bec06e2b50b69',1,'opendal_capability']]],
-  ['create_5fdir_189',['create_dir',['../structopendal__capability.html#a486c81c18888b799fd562c4be05c4c3c',1,'opendal_capability']]]
+  ['code_186',['code',['../structopendal__error.html#ac5ac4b16d49b767afdb29cf9b8115e53',1,'opendal_error']]],
+  ['copy_187',['copy',['../structopendal__capability.html#acbcd08c593f558964f5bec06e2b50b69',1,'opendal_capability']]],
+  ['create_5fdir_188',['create_dir',['../structopendal__capability.html#a486c81c18888b799fd562c4be05c4c3c',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/variables_2.js b/docs/c/search/variables_2.js
index e80af24db..3a22e1c3d 100644
--- a/docs/c/search/variables_2.js
+++ b/docs/c/search/variables_2.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['data_190',['data',['../structopendal__bytes.html#af7a7f99a262f8a3912f4d1cddb798c86',1,'opendal_bytes::data()'],['../structopendal__result__read.html#ad8ca467bcbe6d1768e15fcf64fe78e9f',1,'opendal_result_read::data()']]],
-  ['delete_5f_191',['delete_',['../structopendal__capability.html#a4814e900e75b642b2eeb1fa5803f01e5',1,'opendal_capability']]]
+  ['data_189',['data',['../structopendal__bytes.html#af7a7f99a262f8a3912f4d1cddb798c86',1,'opendal_bytes::data()'],['../structopendal__result__read.html#ad8ca467bcbe6d1768e15fcf64fe78e9f',1,'opendal_result_read::data()']]],
+  ['delete_5f_190',['delete_',['../structopendal__capability.html#a4814e900e75b642b2eeb1fa5803f01e5',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/variables_3.js b/docs/c/search/variables_3.js
index ce0045d0a..c568eed18 100644
--- a/docs/c/search/variables_3.js
+++ b/docs/c/search/variables_3.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['entry_192',['entry',['../structopendal__result__lister__next.html#a24546e0cde0fa8ca5c5da488769d79ea',1,'opendal_result_lister_next']]],
-  ['error_193',['error',['../structopendal__result__lister__next.html#ac92e3fafbc77789c19a6ec03e8e53a10',1,'opendal_result_lister_next::error()'],['../structopendal__result__operator__new.html#a5ee50d6c74038806e57d12d1880ac520',1,'opendal_result_operator_new::error()'],['../structopendal__result__read.html#a6cd0e4e83ed4509856de0d1e6b83e2f2',1,'opendal_result_read::error()'],['../structopendal__result__operator__reader.html#a9bd6c401ef87b4b6456423fa11079b91',1,'opendal_result_operator_rea [...]
+  ['entry_191',['entry',['../structopendal__result__lister__next.html#a24546e0cde0fa8ca5c5da488769d79ea',1,'opendal_result_lister_next']]],
+  ['error_192',['error',['../structopendal__result__lister__next.html#ac92e3fafbc77789c19a6ec03e8e53a10',1,'opendal_result_lister_next::error()'],['../structopendal__result__operator__new.html#a5ee50d6c74038806e57d12d1880ac520',1,'opendal_result_operator_new::error()'],['../structopendal__result__read.html#a6cd0e4e83ed4509856de0d1e6b83e2f2',1,'opendal_result_read::error()'],['../structopendal__result__operator__reader.html#a9bd6c401ef87b4b6456423fa11079b91',1,'opendal_result_operator_rea [...]
 ];
diff --git a/docs/c/search/variables_4.js b/docs/c/search/variables_4.js
index 59ab480b9..70229c971 100644
--- a/docs/c/search/variables_4.js
+++ b/docs/c/search/variables_4.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['inner_194',['inner',['../structopendal__entry.html#aa26d5cb8f16b95ee2f3b91f22254e597',1,'opendal_entry::inner()'],['../structopendal__lister.html#a50387dc1691da04cd020cc67df2c4295',1,'opendal_lister::inner()'],['../structopendal__metadata.html#afadf4e2bbfa3ee699d3c3d9c0a96a404',1,'opendal_metadata::inner()'],['../structopendal__operator__options.html#a0b4a1a2cd9074140b04836b822a04645',1,'opendal_operator_options::inner()'],['../structopendal__reader.html#a25070270d288274fc2fcb1e38d38 [...]
-  ['is_5fexist_195',['is_exist',['../structopendal__result__is__exist.html#abe145d68333ea78b438ef92a12d9d295',1,'opendal_result_is_exist']]]
+  ['inner_193',['inner',['../structopendal__entry.html#aa26d5cb8f16b95ee2f3b91f22254e597',1,'opendal_entry::inner()'],['../structopendal__lister.html#a50387dc1691da04cd020cc67df2c4295',1,'opendal_lister::inner()'],['../structopendal__metadata.html#afadf4e2bbfa3ee699d3c3d9c0a96a404',1,'opendal_metadata::inner()'],['../structopendal__operator__options.html#a0b4a1a2cd9074140b04836b822a04645',1,'opendal_operator_options::inner()'],['../structopendal__reader.html#a25070270d288274fc2fcb1e38d38 [...]
+  ['is_5fexist_194',['is_exist',['../structopendal__result__is__exist.html#abe145d68333ea78b438ef92a12d9d295',1,'opendal_result_is_exist']]]
 ];
diff --git a/docs/c/search/variables_5.js b/docs/c/search/variables_5.js
index a917d719f..3ec464f1e 100644
--- a/docs/c/search/variables_5.js
+++ b/docs/c/search/variables_5.js
@@ -1,10 +1,9 @@
 var searchData=
 [
-  ['len_196',['len',['../structopendal__bytes.html#a16abed2ad211c076650d1ea81772b851',1,'opendal_bytes']]],
-  ['list_197',['list',['../structopendal__capability.html#a9df67d06090f43e325cd502231acf667',1,'opendal_capability']]],
-  ['list_5fwith_5flimit_198',['list_with_limit',['../structopendal__capability.html#afa301fcf85901fb6905305d91411aafb',1,'opendal_capability']]],
-  ['list_5fwith_5frecursive_199',['list_with_recursive',['../structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e',1,'opendal_capability']]],
-  ['list_5fwith_5fstart_5fafter_200',['list_with_start_after',['../structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff',1,'opendal_capability']]],
-  ['list_5fwithout_5frecursive_201',['list_without_recursive',['../structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa',1,'opendal_capability']]],
-  ['lister_202',['lister',['../structopendal__result__list.html#a54b9b09c29f8d867da187c32e362398a',1,'opendal_result_list']]]
+  ['len_195',['len',['../structopendal__bytes.html#a16abed2ad211c076650d1ea81772b851',1,'opendal_bytes']]],
+  ['list_196',['list',['../structopendal__capability.html#a9df67d06090f43e325cd502231acf667',1,'opendal_capability']]],
+  ['list_5fwith_5flimit_197',['list_with_limit',['../structopendal__capability.html#afa301fcf85901fb6905305d91411aafb',1,'opendal_capability']]],
+  ['list_5fwith_5frecursive_198',['list_with_recursive',['../structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e',1,'opendal_capability']]],
+  ['list_5fwith_5fstart_5fafter_199',['list_with_start_after',['../structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff',1,'opendal_capability']]],
+  ['lister_200',['lister',['../structopendal__result__list.html#a54b9b09c29f8d867da187c32e362398a',1,'opendal_result_list']]]
 ];
diff --git a/docs/c/search/variables_6.js b/docs/c/search/variables_6.js
index a6a450cdf..b0eee650e 100644
--- a/docs/c/search/variables_6.js
+++ b/docs/c/search/variables_6.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['message_203',['message',['../structopendal__error.html#a64095efcf3588a1871b14eab3041d0d4',1,'opendal_error']]],
-  ['meta_204',['meta',['../structopendal__result__stat.html#a1d4d484d7bf50bc8e5d65dea5f6f2425',1,'opendal_result_stat']]]
+  ['message_201',['message',['../structopendal__error.html#a64095efcf3588a1871b14eab3041d0d4',1,'opendal_error']]],
+  ['meta_202',['meta',['../structopendal__result__stat.html#a1d4d484d7bf50bc8e5d65dea5f6f2425',1,'opendal_result_stat']]]
 ];
diff --git a/docs/c/search/variables_7.js b/docs/c/search/variables_7.js
index c985c463a..785812925 100644
--- a/docs/c/search/variables_7.js
+++ b/docs/c/search/variables_7.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['op_205',['op',['../structopendal__result__operator__new.html#a4e358aad13b4c71dc7a9a812191371c6',1,'opendal_result_operator_new']]]
+  ['op_203',['op',['../structopendal__result__operator__new.html#a4e358aad13b4c71dc7a9a812191371c6',1,'opendal_result_operator_new']]]
 ];
diff --git a/docs/c/search/variables_8.js b/docs/c/search/variables_8.js
index 1cd536e7e..fdc2bfeb6 100644
--- a/docs/c/search/variables_8.js
+++ b/docs/c/search/variables_8.js
@@ -1,8 +1,8 @@
 var searchData=
 [
-  ['presign_206',['presign',['../structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e',1,'opendal_capability']]],
-  ['presign_5fread_207',['presign_read',['../structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9',1,'opendal_capability']]],
-  ['presign_5fstat_208',['presign_stat',['../structopendal__capability.html#a760bd594d038f919b65a50db22259ba2',1,'opendal_capability']]],
-  ['presign_5fwrite_209',['presign_write',['../structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa',1,'opendal_capability']]],
-  ['ptr_210',['ptr',['../structopendal__operator.html#a81ea292736bd2733dd8e2b0d149305fe',1,'opendal_operator']]]
+  ['presign_204',['presign',['../structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e',1,'opendal_capability']]],
+  ['presign_5fread_205',['presign_read',['../structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9',1,'opendal_capability']]],
+  ['presign_5fstat_206',['presign_stat',['../structopendal__capability.html#a760bd594d038f919b65a50db22259ba2',1,'opendal_capability']]],
+  ['presign_5fwrite_207',['presign_write',['../structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa',1,'opendal_capability']]],
+  ['ptr_208',['ptr',['../structopendal__operator.html#a81ea292736bd2733dd8e2b0d149305fe',1,'opendal_operator']]]
 ];
diff --git a/docs/c/search/variables_9.js b/docs/c/search/variables_9.js
index 0f8f128a5..88cf70da9 100644
--- a/docs/c/search/variables_9.js
+++ b/docs/c/search/variables_9.js
@@ -1,14 +1,14 @@
 var searchData=
 [
-  ['read_211',['read',['../structopendal__capability.html#a917769617a33340debf3a1e5219441f7',1,'opendal_capability']]],
-  ['read_5fcan_5fnext_212',['read_can_next',['../structopendal__capability.html#abe93920ff673cd3e64c7d493a4d0f291',1,'opendal_capability']]],
-  ['read_5fcan_5fseek_213',['read_can_seek',['../structopendal__capability.html#ad616a0d276048d3cd062a09ad5ed6d6c',1,'opendal_capability']]],
-  ['read_5fwith_5fif_5fmatch_214',['read_with_if_match',['../structopendal__capability.html#a78205c1240745fa53f2fd591d7f2d80b',1,'opendal_capability']]],
-  ['read_5fwith_5fif_5fnone_5fmatch_215',['read_with_if_none_match',['../structopendal__capability.html#ad9cb4596863cde6476ff608c7a2af91e',1,'opendal_capability']]],
-  ['read_5fwith_5foverride_5fcache_5fcontrol_216',['read_with_override_cache_control',['../structopendal__capability.html#affbad0c42bd7c506f902ab72282c67df',1,'opendal_capability']]],
-  ['read_5fwith_5foverride_5fcontent_5fdisposition_217',['read_with_override_content_disposition',['../structopendal__capability.html#ad521c9c12d88e39d88e912cf529f5b1f',1,'opendal_capability']]],
-  ['read_5fwith_5foverride_5fcontent_5ftype_218',['read_with_override_content_type',['../structopendal__capability.html#a64c86a926fb979307652c8e418cf4696',1,'opendal_capability']]],
-  ['read_5fwith_5frange_219',['read_with_range',['../structopendal__capability.html#af44b22da5be7e0a0c9a35304c3dfa1f3',1,'opendal_capability']]],
-  ['reader_220',['reader',['../structopendal__result__operator__reader.html#a9ed8dec94126ab5b74dc63a87ca5839d',1,'opendal_result_operator_reader']]],
-  ['rename_221',['rename',['../structopendal__capability.html#a9cc207e7258d202f56883a4318c995fa',1,'opendal_capability']]]
+  ['read_209',['read',['../structopendal__capability.html#a917769617a33340debf3a1e5219441f7',1,'opendal_capability']]],
+  ['read_5fcan_5fnext_210',['read_can_next',['../structopendal__capability.html#abe93920ff673cd3e64c7d493a4d0f291',1,'opendal_capability']]],
+  ['read_5fcan_5fseek_211',['read_can_seek',['../structopendal__capability.html#ad616a0d276048d3cd062a09ad5ed6d6c',1,'opendal_capability']]],
+  ['read_5fwith_5fif_5fmatch_212',['read_with_if_match',['../structopendal__capability.html#a78205c1240745fa53f2fd591d7f2d80b',1,'opendal_capability']]],
+  ['read_5fwith_5fif_5fnone_5fmatch_213',['read_with_if_none_match',['../structopendal__capability.html#ad9cb4596863cde6476ff608c7a2af91e',1,'opendal_capability']]],
+  ['read_5fwith_5foverride_5fcache_5fcontrol_214',['read_with_override_cache_control',['../structopendal__capability.html#affbad0c42bd7c506f902ab72282c67df',1,'opendal_capability']]],
+  ['read_5fwith_5foverride_5fcontent_5fdisposition_215',['read_with_override_content_disposition',['../structopendal__capability.html#ad521c9c12d88e39d88e912cf529f5b1f',1,'opendal_capability']]],
+  ['read_5fwith_5foverride_5fcontent_5ftype_216',['read_with_override_content_type',['../structopendal__capability.html#a64c86a926fb979307652c8e418cf4696',1,'opendal_capability']]],
+  ['read_5fwith_5frange_217',['read_with_range',['../structopendal__capability.html#af44b22da5be7e0a0c9a35304c3dfa1f3',1,'opendal_capability']]],
+  ['reader_218',['reader',['../structopendal__result__operator__reader.html#a9ed8dec94126ab5b74dc63a87ca5839d',1,'opendal_result_operator_reader']]],
+  ['rename_219',['rename',['../structopendal__capability.html#a9cc207e7258d202f56883a4318c995fa',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/variables_a.js b/docs/c/search/variables_a.js
index d8b789433..8d85a035a 100644
--- a/docs/c/search/variables_a.js
+++ b/docs/c/search/variables_a.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['size_222',['size',['../structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810',1,'opendal_result_reader_read']]],
-  ['stat_223',['stat',['../structopendal__capability.html#ad1f93798b5ded45142ffd6b3acb8c38e',1,'opendal_capability']]],
-  ['stat_5fwith_5fif_5fmatch_224',['stat_with_if_match',['../structopendal__capability.html#a57039859beed1c7586c78fad29aa988b',1,'opendal_capability']]],
-  ['stat_5fwith_5fif_5fnone_5fmatch_225',['stat_with_if_none_match',['../structopendal__capability.html#aa6a539d0f1f7cc13a6ec9e086369eff4',1,'opendal_capability']]]
+  ['size_220',['size',['../structopendal__result__reader__read.html#a5a513cafeacebef13f74fd50c30e9810',1,'opendal_result_reader_read']]],
+  ['stat_221',['stat',['../structopendal__capability.html#ad1f93798b5ded45142ffd6b3acb8c38e',1,'opendal_capability']]],
+  ['stat_5fwith_5fif_5fmatch_222',['stat_with_if_match',['../structopendal__capability.html#a57039859beed1c7586c78fad29aa988b',1,'opendal_capability']]],
+  ['stat_5fwith_5fif_5fnone_5fmatch_223',['stat_with_if_none_match',['../structopendal__capability.html#aa6a539d0f1f7cc13a6ec9e086369eff4',1,'opendal_capability']]]
 ];
diff --git a/docs/c/search/variables_b.js b/docs/c/search/variables_b.js
index 1e999d1cb..30b351088 100644
--- a/docs/c/search/variables_b.js
+++ b/docs/c/search/variables_b.js
@@ -1,14 +1,14 @@
 var searchData=
 [
-  ['write_226',['write',['../structopendal__capability.html#a7e31abcf955b8e966c71f049b6a04fdb',1,'opendal_capability']]],
-  ['write_5fcan_5fappend_227',['write_can_append',['../structopendal__capability.html#a023d768a2c7cd4e0f72e25adca706cea',1,'opendal_capability']]],
-  ['write_5fcan_5fempty_228',['write_can_empty',['../structopendal__capability.html#acadd4a62755f7572e0a52d77f548b1bb',1,'opendal_capability']]],
-  ['write_5fcan_5fmulti_229',['write_can_multi',['../structopendal__capability.html#a2c57aae0b02175094e3c5a279ca9a3f7',1,'opendal_capability']]],
-  ['write_5fmulti_5falign_5fsize_230',['write_multi_align_size',['../structopendal__capability.html#ad4843253b81da1f5528a36c1c0378cb8',1,'opendal_capability']]],
-  ['write_5fmulti_5fmax_5fsize_231',['write_multi_max_size',['../structopendal__capability.html#ab9eb0746a111632656ac8f8de6b59c43',1,'opendal_capability']]],
-  ['write_5fmulti_5fmin_5fsize_232',['write_multi_min_size',['../structopendal__capability.html#a50f46414d464319e7cc5abab842d9a4f',1,'opendal_capability']]],
-  ['write_5ftotal_5fmax_5fsize_233',['write_total_max_size',['../structopendal__capability.html#a8d5e8309fb74dec234667d2bc4e07ac6',1,'opendal_capability']]],
-  ['write_5fwith_5fcache_5fcontrol_234',['write_with_cache_control',['../structopendal__capability.html#aa1e24b711d3da051223c8439fb2d0021',1,'opendal_capability']]],
-  ['write_5fwith_5fcontent_5fdisposition_235',['write_with_content_disposition',['../structopendal__capability.html#aebb9626bde1fe46e67fd450219aef99c',1,'opendal_capability']]],
-  ['write_5fwith_5fcontent_5ftype_236',['write_with_content_type',['../structopendal__capability.html#a8b8a3426cf390c29e7a3e22cbaa7c761',1,'opendal_capability']]]
+  ['write_224',['write',['../structopendal__capability.html#a7e31abcf955b8e966c71f049b6a04fdb',1,'opendal_capability']]],
+  ['write_5fcan_5fappend_225',['write_can_append',['../structopendal__capability.html#a023d768a2c7cd4e0f72e25adca706cea',1,'opendal_capability']]],
+  ['write_5fcan_5fempty_226',['write_can_empty',['../structopendal__capability.html#acadd4a62755f7572e0a52d77f548b1bb',1,'opendal_capability']]],
+  ['write_5fcan_5fmulti_227',['write_can_multi',['../structopendal__capability.html#a2c57aae0b02175094e3c5a279ca9a3f7',1,'opendal_capability']]],
+  ['write_5fmulti_5falign_5fsize_228',['write_multi_align_size',['../structopendal__capability.html#ad4843253b81da1f5528a36c1c0378cb8',1,'opendal_capability']]],
+  ['write_5fmulti_5fmax_5fsize_229',['write_multi_max_size',['../structopendal__capability.html#ab9eb0746a111632656ac8f8de6b59c43',1,'opendal_capability']]],
+  ['write_5fmulti_5fmin_5fsize_230',['write_multi_min_size',['../structopendal__capability.html#a50f46414d464319e7cc5abab842d9a4f',1,'opendal_capability']]],
+  ['write_5ftotal_5fmax_5fsize_231',['write_total_max_size',['../structopendal__capability.html#a8d5e8309fb74dec234667d2bc4e07ac6',1,'opendal_capability']]],
+  ['write_5fwith_5fcache_5fcontrol_232',['write_with_cache_control',['../structopendal__capability.html#aa1e24b711d3da051223c8439fb2d0021',1,'opendal_capability']]],
+  ['write_5fwith_5fcontent_5fdisposition_233',['write_with_content_disposition',['../structopendal__capability.html#aebb9626bde1fe46e67fd450219aef99c',1,'opendal_capability']]],
+  ['write_5fwith_5fcontent_5ftype_234',['write_with_content_type',['../structopendal__capability.html#a8b8a3426cf390c29e7a3e22cbaa7c761',1,'opendal_capability']]]
 ];
diff --git a/docs/c/structopendal__capability-members.html b/docs/c/structopendal__capability-members.html
index e2ad5c784..5cb9efc2b 100644
--- a/docs/c/structopendal__capability-members.html
+++ b/docs/c/structopendal__capability-members.html
@@ -81,35 +81,34 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#afa301fcf85901fb6905305d91411aafb">list_with_limit</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">list_with_recursive</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff">list_with_start_after</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">list_without_recursive</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">presign</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">presign_read</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">presign_stat</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">presign_write</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a917769617a33340debf3a1e5219441f7">read</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#abe93920ff673cd3e64c7d493a4d0f291">read_can_next</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#ad616a0d276048d3cd062a09ad5ed6d6c">read_can_seek</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a78205c1240745fa53f2fd591d7f2d80b">read_with_if_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#ad9cb4596863cde6476ff608c7a2af91e">read_with_if_none_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#affbad0c42bd7c506f902ab72282c67df">read_with_override_cache_control</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#ad521c9c12d88e39d88e912cf529f5b1f">read_with_override_content_disposition</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a64c86a926fb979307652c8e418cf4696">read_with_override_content_type</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#af44b22da5be7e0a0c9a35304c3dfa1f3">read_with_range</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a9cc207e7258d202f56883a4318c995fa">rename</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#ad1f93798b5ded45142ffd6b3acb8c38e">stat</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a57039859beed1c7586c78fad29aa988b">stat_with_if_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#aa6a539d0f1f7cc13a6ec9e086369eff4">stat_with_if_none_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a7e31abcf955b8e966c71f049b6a04fdb">write</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a023d768a2c7cd4e0f72e25adca706cea">write_can_append</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#acadd4a62755f7572e0a52d77f548b1bb">write_can_empty</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a2c57aae0b02175094e3c5a279ca9a3f7">write_can_multi</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#ad4843253b81da1f5528a36c1c0378cb8">write_multi_align_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#ab9eb0746a111632656ac8f8de6b59c43">write_multi_max_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a50f46414d464319e7cc5abab842d9a4f">write_multi_min_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a8d5e8309fb74dec234667d2bc4e07ac6">write_total_max_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#aa1e24b711d3da051223c8439fb2d0021">write_with_cache_control</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#aebb9626bde1fe46e67fd450219aef99c">write_with_content_disposition</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a8b8a3426cf390c29e7a3e22cbaa7c761">write_with_content_type</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">presign</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a86cb7c49fb41e2662e8f14c74aa60ac9">presign_read</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a760bd594d038f919b65a50db22259ba2">presign_stat</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#af5f42471b12692f9f0510c5e500e41fa">presign_write</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a917769617a33340debf3a1e5219441f7">read</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#abe93920ff673cd3e64c7d493a4d0f291">read_can_next</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#ad616a0d276048d3cd062a09ad5ed6d6c">read_can_seek</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a78205c1240745fa53f2fd591d7f2d80b">read_with_if_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#ad9cb4596863cde6476ff608c7a2af91e">read_with_if_none_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#affbad0c42bd7c506f902ab72282c67df">read_with_override_cache_control</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#ad521c9c12d88e39d88e912cf529f5b1f">read_with_override_content_disposition</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a64c86a926fb979307652c8e418cf4696">read_with_override_content_type</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#af44b22da5be7e0a0c9a35304c3dfa1f3">read_with_range</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a9cc207e7258d202f56883a4318c995fa">rename</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#ad1f93798b5ded45142ffd6b3acb8c38e">stat</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a57039859beed1c7586c78fad29aa988b">stat_with_if_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#aa6a539d0f1f7cc13a6ec9e086369eff4">stat_with_if_none_match</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a7e31abcf955b8e966c71f049b6a04fdb">write</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a023d768a2c7cd4e0f72e25adca706cea">write_can_append</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#acadd4a62755f7572e0a52d77f548b1bb">write_can_empty</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a2c57aae0b02175094e3c5a279ca9a3f7">write_can_multi</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#ad4843253b81da1f5528a36c1c0378cb8">write_multi_align_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#ab9eb0746a111632656ac8f8de6b59c43">write_multi_max_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a50f46414d464319e7cc5abab842d9a4f">write_multi_min_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#a8d5e8309fb74dec234667d2bc4e07ac6">write_total_max_size</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#aa1e24b711d3da051223c8439fb2d0021">write_with_cache_control</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="structopendal__capability.html#aebb9626bde1fe46e67fd450219aef99c">write_with_content_disposition</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structopendal__capability.html#a8b8a3426cf390c29e7a3e22cbaa7c761">write_with_content_type</a></td><td class="entry"><a class="el" href="structopendal__capability.html">opendal_capability</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/c/structopendal__capability.html b/docs/c/structopendal__capability.html
index f3932401f..dd1667516 100644
--- a/docs/c/structopendal__capability.html
+++ b/docs/c/structopendal__capability.html
@@ -138,8 +138,6 @@ Public Attributes</h2></td></tr>
 <tr class="separator:afa301fcf85901fb6905305d91411aafb"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a42b57246b65b63b2595816253ffb60ff"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopendal__capability.html#a42b57246b65b63b2595816253ffb60ff">list_with_start_after</a></td></tr>
 <tr class="separator:a42b57246b65b63b2595816253ffb60ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0d4697dea4d1c19a5d4d92ad6eb5b7aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopendal__capability.html#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">list_without_recursive</a></td></tr>
-<tr class="separator:a0d4697dea4d1c19a5d4d92ad6eb5b7aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aeaa15613dad6228904b8b8150cd28a6e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopendal__capability.html#aeaa15613dad6228904b8b8150cd28a6e">list_with_recursive</a></td></tr>
 <tr class="separator:aeaa15613dad6228904b8b8150cd28a6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a911b77c96405fad2f0caf9bb090ca33e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structopendal__capability.html#a911b77c96405fad2f0caf9bb090ca33e">presign</a></td></tr>
@@ -326,21 +324,6 @@ Public Attributes</h2></td></tr>
 </div><div class="memdoc">
 <p>If backend supports list with start after. </p>
 
-</div>
-</div>
-<a id="a0d4697dea4d1c19a5d4d92ad6eb5b7aa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0d4697dea4d1c19a5d4d92ad6eb5b7aa">&#9670;&nbsp;</a></span>list_without_recursive</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool opendal_capability::list_without_recursive</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>If backend support list with using slash as delimiter. </p>
-
 </div>
 </div>
 <a id="a911b77c96405fad2f0caf9bb090ca33e"></a>
diff --git a/docs/category/services/index.html b/docs/category/services/index.html
index 58b600083..79cef52ba 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/java/index-all.html b/docs/java/index-all.html
index 2aca3bfd5..3c9dd7f4d 100644
--- a/docs/java/index-all.html
+++ b/docs/java/index-all.html
@@ -94,7 +94,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="org/apache/opendal/Capability.html" class="type-name-link" title="class in org.apache.opendal">Capability</a> - Class in <a href="org/apache/opendal/package-summary.html">org.apache.opendal</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/opendal/Capability.html#%3Cinit%3E(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,long,long,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,boolean)" class="member-name-link">Capability(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, bool [...]
+<dt><a href="org/apache/opendal/Capability.html#%3Cinit%3E(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,long,long,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,boolean)" class="member-name-link">Capability(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boo [...]
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/opendal/NativeObject.html#close()" class="member-name-link">close()</a> - Method in class org.apache.opendal.<a href="org/apache/opendal/NativeObject.html" title="class in org.apache.opendal">NativeObject</a></dt>
 <dd>&nbsp;</dd>
@@ -252,17 +252,13 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/opendal/Operator.html#list(java.lang.String)" class="member-name-link">list(String)</a> - Method in class org.apache.opendal.<a href="org/apache/opendal/Operator.html" title="class in org.apache.opendal">Operator</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/opendal/Capability.html#listWithDelimiterSlash" class="member-name-link">listWithDelimiterSlash</a> - Variable in class org.apache.opendal.<a href="org/apache/opendal/Capability.html" title="class in org.apache.opendal">Capability</a></dt>
-<dd>
-<div class="block">If backend support list with using slash as delimiter.</div>
-</dd>
 <dt><a href="org/apache/opendal/Capability.html#listWithLimit" class="member-name-link">listWithLimit</a> - Variable in class org.apache.opendal.<a href="org/apache/opendal/Capability.html" title="class in org.apache.opendal">Capability</a></dt>
 <dd>
 <div class="block">If backend supports list with limit.</div>
 </dd>
-<dt><a href="org/apache/opendal/Capability.html#listWithoutDelimiter" class="member-name-link">listWithoutDelimiter</a> - Variable in class org.apache.opendal.<a href="org/apache/opendal/Capability.html" title="class in org.apache.opendal">Capability</a></dt>
+<dt><a href="org/apache/opendal/Capability.html#listWithRecursive" class="member-name-link">listWithRecursive</a> - Variable in class org.apache.opendal.<a href="org/apache/opendal/Capability.html" title="class in org.apache.opendal">Capability</a></dt>
 <dd>
-<div class="block">If backend supports list without delimiter.</div>
+<div class="block">If backend support list with recursive.</div>
 </dd>
 <dt><a href="org/apache/opendal/Capability.html#listWithStartAfter" class="member-name-link">listWithStartAfter</a> - Variable in class org.apache.opendal.<a href="org/apache/opendal/Capability.html" title="class in org.apache.opendal">Capability</a></dt>
 <dd>
diff --git a/docs/java/member-search-index.js b/docs/java/member-search-index.js
index 1d5d4735b..c75bfd99e 100644
--- a/docs/java/member-search-index.js
+++ b/docs/java/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.opendal","c":"OpenDALException.Code","l":"AlreadyExists"},{"p":"org.apache.opendal","c":"Operator","l":"append(String, byte[])","u":"append(java.lang.String,byte[])"},{"p":"org.apache.opendal","c":"Operator","l":"append(String, String)","u":"append(java.lang.String,java.lang.String)"},{"p":"org.apache.opendal","c":"Capability","l":"batch"},{"p":"org.apache.opendal","c":"Capability","l":"batchDelete"},{"p":"org.apache.opendal","c":"Capability","l":"ba [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.opendal","c":"OpenDALException.Code","l":"AlreadyExists"},{"p":"org.apache.opendal","c":"Operator","l":"append(String, byte[])","u":"append(java.lang.String,byte[])"},{"p":"org.apache.opendal","c":"Operator","l":"append(String, String)","u":"append(java.lang.String,java.lang.String)"},{"p":"org.apache.opendal","c":"Capability","l":"batch"},{"p":"org.apache.opendal","c":"Capability","l":"batchDelete"},{"p":"org.apache.opendal","c":"Capability","l":"ba [...]
\ No newline at end of file
diff --git a/docs/java/org/apache/opendal/Capability.html b/docs/java/org/apache/opendal/Capability.html
index a43e91ab7..532dcd66a 100644
--- a/docs/java/org/apache/opendal/Capability.html
+++ b/docs/java/org/apache/opendal/Capability.html
@@ -127,153 +127,148 @@ loadScripts(document, 'script');</script>
 <div class="block">If operator supports list.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#listWithDelimiterSlash" class="member-name-link">listWithDelimiterSlash</a></code></div>
+<div class="col-second even-row-color"><code><a href="#listWithLimit" class="member-name-link">listWithLimit</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If backend support list with using slash as delimiter.</div>
+<div class="block">If backend supports list with limit.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#listWithLimit" class="member-name-link">listWithLimit</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#listWithRecursive" class="member-name-link">listWithRecursive</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If backend supports list with limit.</div>
+<div class="block">If backend support list with recursive.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#listWithoutDelimiter" class="member-name-link">listWithoutDelimiter</a></code></div>
+<div class="col-second even-row-color"><code><a href="#listWithStartAfter" class="member-name-link">listWithStartAfter</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If backend supports list without delimiter.</div>
+<div class="block">If backend supports list with start after.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#listWithStartAfter" class="member-name-link">listWithStartAfter</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#presign" class="member-name-link">presign</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If backend supports list with start after.</div>
+<div class="block">If operator supports presign.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#presign" class="member-name-link">presign</a></code></div>
+<div class="col-second even-row-color"><code><a href="#presignRead" class="member-name-link">presignRead</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports presign.</div>
+<div class="block">If operator supports presign read.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#presignRead" class="member-name-link">presignRead</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#presignStat" class="member-name-link">presignStat</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports presign read.</div>
+<div class="block">If operator supports presign stat.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#presignStat" class="member-name-link">presignStat</a></code></div>
+<div class="col-second even-row-color"><code><a href="#presignWrite" class="member-name-link">presignWrite</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports presign stat.</div>
+<div class="block">If operator supports presign write.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#presignWrite" class="member-name-link">presignWrite</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#read" class="member-name-link">read</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports presign write.</div>
+<div class="block">If operator supports read.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#read" class="member-name-link">read</a></code></div>
+<div class="col-second even-row-color"><code><a href="#readCanNext" class="member-name-link">readCanNext</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports read.</div>
+<div class="block">If operator supports next on returning reader.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#readCanNext" class="member-name-link">readCanNext</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#readCanSeek" class="member-name-link">readCanSeek</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports next on returning reader.</div>
+<div class="block">If operator supports seek on returning reader.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#readCanSeek" class="member-name-link">readCanSeek</a></code></div>
+<div class="col-second even-row-color"><code><a href="#readWithIfMatch" class="member-name-link">readWithIfMatch</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports seek on returning reader.</div>
+<div class="block">If operator supports read with if matched.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#readWithIfMatch" class="member-name-link">readWithIfMatch</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#readWithIfNoneMatch" class="member-name-link">readWithIfNoneMatch</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports read with if matched.</div>
+<div class="block">If operator supports read with if none match.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#readWithIfNoneMatch" class="member-name-link">readWithIfNoneMatch</a></code></div>
+<div class="col-second even-row-color"><code><a href="#readWithOverrideCacheControl" class="member-name-link">readWithOverrideCacheControl</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports read with if none match.</div>
+<div class="block">If operator supports read with override cache control.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#readWithOverrideCacheControl" class="member-name-link">readWithOverrideCacheControl</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#readWithOverrideContentDisposition" class="member-name-link">readWithOverrideContentDisposition</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports read with override cache control.</div>
+<div class="block">if operator supports read with override content disposition.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#readWithOverrideContentDisposition" class="member-name-link">readWithOverrideContentDisposition</a></code></div>
+<div class="col-second even-row-color"><code><a href="#readWithOverrideContentType" class="member-name-link">readWithOverrideContentType</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">if operator supports read with override content disposition.</div>
+<div class="block">if operator supports read with override content type.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#readWithOverrideContentType" class="member-name-link">readWithOverrideContentType</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#readWithRange" class="member-name-link">readWithRange</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">if operator supports read with override content type.</div>
+<div class="block">If operator supports read with range.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#readWithRange" class="member-name-link">readWithRange</a></code></div>
+<div class="col-second even-row-color"><code><a href="#rename" class="member-name-link">rename</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports read with range.</div>
+<div class="block">If operator supports rename.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#rename" class="member-name-link">rename</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#stat" class="member-name-link">stat</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports rename.</div>
+<div class="block">If operator supports stat.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#stat" class="member-name-link">stat</a></code></div>
+<div class="col-second even-row-color"><code><a href="#statWithIfMatch" class="member-name-link">statWithIfMatch</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports stat.</div>
+<div class="block">If operator supports stat with if matched.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#statWithIfMatch" class="member-name-link">statWithIfMatch</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#statWithIfNoneMatch" class="member-name-link">statWithIfNoneMatch</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports stat with if matched.</div>
+<div class="block">If operator supports stat with if none match.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#statWithIfNoneMatch" class="member-name-link">statWithIfNoneMatch</a></code></div>
+<div class="col-second even-row-color"><code><a href="#write" class="member-name-link">write</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports stat with if none match.</div>
+<div class="block">If operator supports write.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#write" class="member-name-link">write</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#writeCanAppend" class="member-name-link">writeCanAppend</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports write.</div>
+<div class="block">If operator supports write by append.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#writeCanAppend" class="member-name-link">writeCanAppend</a></code></div>
+<div class="col-second even-row-color"><code><a href="#writeCanMulti" class="member-name-link">writeCanMulti</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports write by append.</div>
+<div class="block">If operator supports write can be called in multi times.</div>
 </div>
-<div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#writeCanMulti" class="member-name-link">writeCanMulti</a></code></div>
+<div class="col-first odd-row-color"><code>final long</code></div>
+<div class="col-second odd-row-color"><code><a href="#writeMultiAlignSize" class="member-name-link">writeMultiAlignSize</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports write can be called in multi times.</div>
+<div class="block">write_multi_align_size is the align size that services required in write_multi.</div>
 </div>
 <div class="col-first even-row-color"><code>final long</code></div>
-<div class="col-second even-row-color"><code><a href="#writeMultiAlignSize" class="member-name-link">writeMultiAlignSize</a></code></div>
+<div class="col-second even-row-color"><code><a href="#writeMultiMaxSize" class="member-name-link">writeMultiMaxSize</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">write_multi_align_size is the align size that services required in write_multi.</div>
+<div class="block">write_multi_max_size is the max size that services support in write_multi.</div>
 </div>
 <div class="col-first odd-row-color"><code>final long</code></div>
-<div class="col-second odd-row-color"><code><a href="#writeMultiMaxSize" class="member-name-link">writeMultiMaxSize</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#writeMultiMinSize" class="member-name-link">writeMultiMinSize</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">write_multi_max_size is the max size that services support in write_multi.</div>
+<div class="block">write_multi_min_size is the min size that services support in write_multi.</div>
 </div>
-<div class="col-first even-row-color"><code>final long</code></div>
-<div class="col-second even-row-color"><code><a href="#writeMultiMinSize" class="member-name-link">writeMultiMinSize</a></code></div>
+<div class="col-first even-row-color"><code>final boolean</code></div>
+<div class="col-second even-row-color"><code><a href="#writeWithCacheControl" class="member-name-link">writeWithCacheControl</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">write_multi_min_size is the min size that services support in write_multi.</div>
+<div class="block">If operator supports write with cache control.</div>
 </div>
 <div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#writeWithCacheControl" class="member-name-link">writeWithCacheControl</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#writeWithContentDisposition" class="member-name-link">writeWithContentDisposition</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">If operator supports write with cache control.</div>
+<div class="block">If operator supports write with content disposition.</div>
 </div>
 <div class="col-first even-row-color"><code>final boolean</code></div>
-<div class="col-second even-row-color"><code><a href="#writeWithContentDisposition" class="member-name-link">writeWithContentDisposition</a></code></div>
+<div class="col-second even-row-color"><code><a href="#writeWithContentType" class="member-name-link">writeWithContentType</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">If operator supports write with content disposition.</div>
-</div>
-<div class="col-first odd-row-color"><code>final boolean</code></div>
-<div class="col-second odd-row-color"><code><a href="#writeWithContentType" class="member-name-link">writeWithContentType</a></code></div>
-<div class="col-last odd-row-color">
 <div class="block">If operator supports write with content type.</div>
 </div>
 </div>
@@ -287,7 +282,7 @@ loadScripts(document, 'script');</script>
 <div class="summary-table two-column-summary">
 <div class="table-header col-first">Constructor</div>
 <div class="table-header col-last">Description</div>
-<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,long,long,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,boolean)" class="member-name-link">Capability</a><wbr>(boolean&nbsp;stat,
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,long,long,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,boolean)" class="member-name-link">Capability</a><wbr>(boolean&nbsp;stat,
  boolean&nbsp;statWithIfMatch,
  boolean&nbsp;statWithIfNoneMatch,
  boolean&nbsp;read,
@@ -315,8 +310,7 @@ loadScripts(document, 'script');</script>
  boolean&nbsp;list,
  boolean&nbsp;listWithLimit,
  boolean&nbsp;listWithStartAfter,
- boolean&nbsp;listWithDelimiterSlash,
- boolean&nbsp;listWithoutDelimiter,
+ boolean&nbsp;listWithRecursive,
  boolean&nbsp;presign,
  boolean&nbsp;presignRead,
  boolean&nbsp;presignStat,
@@ -547,17 +541,10 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
-<section class="detail" id="listWithDelimiterSlash">
-<h3>listWithDelimiterSlash</h3>
-<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">listWithDelimiterSlash</span></div>
-<div class="block">If backend support list with using slash as delimiter.</div>
-</section>
-</li>
-<li>
-<section class="detail" id="listWithoutDelimiter">
-<h3>listWithoutDelimiter</h3>
-<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">listWithoutDelimiter</span></div>
-<div class="block">If backend supports list without delimiter.</div>
+<section class="detail" id="listWithRecursive">
+<h3>listWithRecursive</h3>
+<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">listWithRecursive</span></div>
+<div class="block">If backend support list with recursive.</div>
 </section>
 </li>
 <li>
@@ -625,7 +612,7 @@ loadScripts(document, 'script');</script>
 <h2>Constructor Details</h2>
 <ul class="member-list">
 <li>
-<section class="detail" id="&lt;init&gt;(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,long,long,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,boolean)">
+<section class="detail" id="&lt;init&gt;(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,long,long,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,long,boolean)">
 <h3>Capability</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Capability</span><wbr><span class="parameters">(boolean&nbsp;stat,
  boolean&nbsp;statWithIfMatch,
@@ -655,8 +642,7 @@ loadScripts(document, 'script');</script>
  boolean&nbsp;list,
  boolean&nbsp;listWithLimit,
  boolean&nbsp;listWithStartAfter,
- boolean&nbsp;listWithDelimiterSlash,
- boolean&nbsp;listWithoutDelimiter,
+ boolean&nbsp;listWithRecursive,
  boolean&nbsp;presign,
  boolean&nbsp;presignRead,
  boolean&nbsp;presignStat,
diff --git a/docs/lua/classes/opendal.metadata.html b/docs/lua/classes/opendal.metadata.html
index 8fab932ca..de70d6b7d 100644
--- a/docs/lua/classes/opendal.metadata.html
+++ b/docs/lua/classes/opendal.metadata.html
@@ -138,7 +138,7 @@
 </div> <!-- id="main" -->
 <div id="about">
 <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2023-12-07 00:11:59 </i>
+<i style="float:right;">Last updated 2023-12-07 08:45:01 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/lua/classes/opendal.operator.html b/docs/lua/classes/opendal.operator.html
index 908b4278b..810b09aef 100644
--- a/docs/lua/classes/opendal.operator.html
+++ b/docs/lua/classes/opendal.operator.html
@@ -321,7 +321,7 @@
 </div> <!-- id="main" -->
 <div id="about">
 <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2023-12-07 00:11:59 </i>
+<i style="float:right;">Last updated 2023-12-07 08:45:01 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/lua/index.html b/docs/lua/index.html
index 61a6b86d0..569519ae7 100644
--- a/docs/lua/index.html
+++ b/docs/lua/index.html
@@ -57,7 +57,7 @@
 </div> <!-- id="main" -->
 <div id="about">
 <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2023-12-07 00:11:59 </i>
+<i style="float:right;">Last updated 2023-12-07 08:45:01 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/nodejs/assets/search.js b/docs/nodejs/assets/search.js
index 8688544c2..43acd8758 100644
--- a/docs/nodejs/assets/search.js
+++ b/docs/nodejs/assets/search.js
@@ -1 +1 @@
-window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA61c25LbOA79F+fV22OSkijlLZtkq6YqPdlKpzYPXamUYqvTmpEva6sznU3l31ekbgAFyLTkl6RtATggDgiSsKSfi+P+79Pi5f3PxV/5brN4KWS8XOzSbbZ4uXj7XGbHXVq8//pnti4Xy8XTsai+Xhfp6ZSdfsOXbx7LbVHJNFcrucWvZWs1FLKzut7vTuXxaV3ujz4mX2B5YH65OKTHbFcOPe2BozBUUQf95Uv545B5oR6zh6L6kO93/whvOj0f9BsAL8Me/N/H7JR/22WbD9l/n7JTH898V6k/pOvKE1dmNKhiJYPO+jYrH/cbb5svOnl6SANnGViD5o1ZC88DfMzSTXY8+YP2CpcDg7nwOj2kX/MiL38M0qe/dJU54Jjzyn/gHUi+SIqgj9ypTIdz2AVrhOahfMrLx98fbt [...]
\ No newline at end of file
+window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA61c25LbRg79F+VVO1F3k03Sb147W5WqONmyXeuHqSkXLXE8TKjLirQzXpf/fdnNG9AEqBapF3skAjhoHKAvEMnvq/Px73L14v776q/8sFu9EDJerw7pPlu9WP3yXGXnQ1r88enPbFut1qsv56L+elukZZmVP+PLd0/Vvqhl2qu13OrHurMaCtlb3R4PZXX+sq2OZx+TP2F5YH69OqXn7FCNPR2AdRgq3UN//Fh9O2VeqOfssag/5MfDP8K7Xs8H/Q7Ay3AA//c5K/PPh2z3Nvvvl6wc4pkfavXHdFt74spMBlVsZNBb32fV03HnbfOnXp4e0shZBtageWM2wssAn7J0l51Lf9BB4XpgUAuv0lP6KS/y6tsofYZLN6kBx5xX/gPvQPJpKYIhcmWVjmvYBWuFlqF8yKunXx/fpN [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index 5a3611f05..deda5ab7e 100644
--- a/docs/nodejs/classes/BlockingLister.html
+++ b/docs/nodejs/classes/BlockingLister.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingLister | Apache OpenDAL - v0.43.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 [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L684">generated.d.ts:684</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L682">generated.d.ts:682</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingLister.html#next" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>next</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingReader.html b/docs/nodejs/classes/BlockingReader.html
index 5ea5f7e5c..adb3793af 100644
--- a/docs/nodejs/classes/BlockingReader.html
+++ b/docs/nodejs/classes/BlockingReader.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingReader | Apache OpenDAL - v0.43.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 [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L575">generated.d.ts:575</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/index.d.ts#L23">index.d.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L573">generated.d.ts:573</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/index.d.ts#L23">index.d.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingReader.html#createReadStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Read<wbr/>Stream</span></a>
 <a href="BlockingReader.html#read" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>read</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingWriter.html b/docs/nodejs/classes/BlockingWriter.html
index 502362b0f..f87eccf8b 100644
--- a/docs/nodejs/classes/BlockingWriter.html
+++ b/docs/nodejs/classes/BlockingWriter.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingWriter | Apache OpenDAL - v0.43.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 [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L596">generated.d.ts:596</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/index.d.ts#L32">index.d.ts:32</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L594">generated.d.ts:594</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/index.d.ts#L32">index.d.ts:32</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingWriter.html#close" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>close</span></a>
 <a href="BlockingWriter.html#createWriteStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Write<wbr/>Stream</span></a>
 <a href="BlockingWriter.html#write" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>write</span></a>
@@ -10,11 +10,11 @@ manner.</p>
 <p>Close this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">writer</span><span class="hl-1"> = </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">writerSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span><br/><span class="hl-4">writer</span><span class="hl-1 [...]
 </code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L627">generated.d.ts:627</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createWriteStream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Write<wbr/> [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L625">generated.d.ts:625</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createWriteStream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Write<wbr/> [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>Write bytes into this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">writer</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span> [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Capability.html b/docs/nodejs/classes/Capability.html
index 3fd01a727..16390405d 100644
--- a/docs/nodejs/classes/Capability.html
+++ b/docs/nodejs/classes/Capability.html
@@ -7,7 +7,7 @@ by current Operator.</p>
 <li>What&#39;s current Operator max supports batch operations count.</li>
 </ul>
 <p>Add fields of Capabilities with be public and can be accessed directly.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L52">generated.d.ts:52</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upper [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L52">generated.d.ts:52</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upper [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="Capability.html#batch" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch</span></a>
 <a href="Capability.html#batchDelete" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch<wbr/>Delete</span></a>
 <a href="Capability.html#batchMaxOperations" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch<wbr/>Max<wbr/>Operations</span></a>
@@ -19,7 +19,6 @@ by current Operator.</p>
 <a href="Capability.html#listWithLimit" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>list<wbr/>With<wbr/>Limit</span></a>
 <a href="Capability.html#listWithRecursive" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>list<wbr/>With<wbr/>Recursive</span></a>
 <a href="Capability.html#listWithStartAfter" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>list<wbr/>With<wbr/>Start<wbr/>After</span></a>
-<a href="Capability.html#listWithoutRecursive" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>list<wbr/>Without<wbr/>Recursive</span></a>
 <a href="Capability.html#presign" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>presign</span></a>
 <a href="Capability.html#presignRead" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>presign<wbr/>Read</span></a>
 <a href="Capability.html#presignStat" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>presign<wbr/>Stat</span></a>
@@ -49,47 +48,46 @@ by current Operator.</p>
 <a href="Capability.html#writeWithContentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>write<wbr/>With<wbr/>Content<wbr/>Disposition</span></a>
 <a href="Capability.html#writeWithContentType" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>write<wbr/>With<wbr/>Content<wbr/>Type</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Cap [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L142">generated.d.ts:142</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchDelete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Delete</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L144">generated.d.ts:144</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchMaxOperations" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Max<wbr/ [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L146">generated.d.ts:146</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="blocking [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L148">generated.d.ts:148</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-l [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L120">generated.d.ts:120</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createDir" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a hre [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L116">generated.d.ts:116</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete"  [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L118">generated.d.ts:118</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="list" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-l [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L124">generated.d.ts:124</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithLimit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Limi [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L126">generated.d.ts:126</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithRecursive" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L130">generated.d.ts:130</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithStartAfter" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/ [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L128">generated.d.ts:128</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithoutRecursive" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>Without [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L132">generated.d.ts:132</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presign" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign</span><a href="#presig [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L134">generated.d.ts:134</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignRead" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L136">generated.d.ts:136</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignStat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L138">generated.d.ts:138</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignWrite" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L140">generated.d.ts:140</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="read" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-l [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L60">generated.d.ts:60</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readCanNext" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Can<wbr/>Next</spa [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L64">generated.d.ts:64</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readCanSeek" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Can<wbr/>Seek</spa [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L62">generated.d.ts:62</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<w [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L68">generated.d.ts:68</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L70">generated.d.ts:70</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideCacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>W [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L72">generated.d.ts:72</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L74">generated.d.ts:74</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Wi [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L76">generated.d.ts:76</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithRange" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>Range< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L66">generated.d.ts:66</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="rename" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" ar [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L122">generated.d.ts:122</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="stat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-l [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L54">generated.d.ts:54</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<w [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L56">generated.d.ts:56</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L58">generated.d.ts:58</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="write" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria- [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L78">generated.d.ts:78</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanAppend" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Appen [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L84">generated.d.ts:84</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanEmpty" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Empty< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L82">generated.d.ts:82</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanMulti" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Multi< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L80">generated.d.ts:80</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiAlignSize" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Multi<wbr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L140">generated.d.ts:140</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchDelete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Delete</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L142">generated.d.ts:142</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchMaxOperations" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Max<wbr/ [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L144">generated.d.ts:144</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="blocking [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L146">generated.d.ts:146</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-l [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L120">generated.d.ts:120</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createDir" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a hre [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L116">generated.d.ts:116</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete"  [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L118">generated.d.ts:118</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="list" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-l [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L124">generated.d.ts:124</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithLimit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Limi [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L126">generated.d.ts:126</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithRecursive" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L130">generated.d.ts:130</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithStartAfter" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/ [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L128">generated.d.ts:128</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presign" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign</span><a href="#presig [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L132">generated.d.ts:132</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignRead" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L134">generated.d.ts:134</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignStat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L136">generated.d.ts:136</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignWrite" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L138">generated.d.ts:138</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="read" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-l [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L60">generated.d.ts:60</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readCanNext" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Can<wbr/>Next</spa [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L64">generated.d.ts:64</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readCanSeek" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Can<wbr/>Seek</spa [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L62">generated.d.ts:62</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<w [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L68">generated.d.ts:68</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L70">generated.d.ts:70</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideCacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>W [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L72">generated.d.ts:72</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L74">generated.d.ts:74</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Wi [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L76">generated.d.ts:76</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithRange" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>Range< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L66">generated.d.ts:66</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="rename" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" ar [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L122">generated.d.ts:122</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="stat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-l [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L54">generated.d.ts:54</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<w [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L56">generated.d.ts:56</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L58">generated.d.ts:58</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="write" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria- [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L78">generated.d.ts:78</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanAppend" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Appen [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L84">generated.d.ts:84</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanEmpty" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Empty< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L82">generated.d.ts:82</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanMulti" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Multi< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L80">generated.d.ts:80</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiAlignSize" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Multi<wbr [...]
 <p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L108">generated.d.ts:108</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMul [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L108">generated.d.ts:108</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMul [...]
 <p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L96">generated.d.ts:96</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMulti [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L96">generated.d.ts:96</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMulti [...]
 <p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L102">generated.d.ts:102</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeTot [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L102">generated.d.ts:102</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeTot [...]
 <p>For example, Cloudflare D1 supports 1MB as max in write_total.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L114">generated.d.ts:114</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWit [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L90">generated.d.ts:90</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>W [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L88">generated.d.ts:88</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L86">generated.d.ts:86</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summ [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L114">generated.d.ts:114</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWit [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L90">generated.d.ts:90</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>W [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L88">generated.d.ts:88</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L86">generated.d.ts:86</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summ [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index fe8315834..d4ecb3751 100644
--- a/docs/nodejs/classes/Entry.html
+++ b/docs/nodejs/classes/Entry.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Entry | Apache OpenDAL - v0.43.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 [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L544">generated.d.ts:544</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L542">generated.d.ts:542</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Entry.html#path" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>path</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ent [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L546">generated.d.ts:546</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><sum [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L544">generated.d.ts:544</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><sum [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/ExternalObject.html b/docs/nodejs/classes/ExternalObject.html
index ea4ca8f35..639bcc1cc 100644
--- a/docs/nodejs/classes/ExternalObject.html
+++ b/docs/nodejs/classes/ExternalObject.html
@@ -1,3 +1,3 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ExternalObject | Apache OpenDAL - v0.43.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>ExternalObject | Apache OpenDAL - v0.43.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 [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="ExternalObject.html#reflection-5" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span><em>Property</em></span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ext [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ext [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Layer.html b/docs/nodejs/classes/Layer.html
index 879e25a8a..5e0d4f680 100644
--- a/docs/nodejs/classes/Layer.html
+++ b/docs/nodejs/classes/Layer.html
@@ -1,3 +1,3 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Layer | Apache OpenDAL - v0.43.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 [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L688">generated.d.ts:688</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L686">generated.d.ts:686</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Lay [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index ca55e6fb6..ea75b1e41 100644
--- a/docs/nodejs/classes/Lister.html
+++ b/docs/nodejs/classes/Lister.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Lister | Apache OpenDAL - v0.43.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 [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L669">generated.d.ts:669</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L667">generated.d.ts:667</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Lister.html#next" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>next</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Lis [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>napi will make sure the function is safe, and we didn&#39;t do unsafe
 thing internally.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opend [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opend [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index 896fdc67f..bebf008d0 100644
--- a/docs/nodejs/classes/Metadata.html
+++ b/docs/nodejs/classes/Metadata.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Metadata | Apache OpenDAL - v0.43.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=".. [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L549">generated.d.ts:549</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L547">generated.d.ts:547</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="Metadata.html#contentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Disposition</span></a>
 <a href="Metadata.html#contentLength" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Length</span></a>
 <a href="Metadata.html#contentMd5" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Md5</span></a>
@@ -9,12 +9,12 @@
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Metadata.html#isDirectory" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>is<wbr/>Directory</span></a>
 <a href="Metadata.html#isFile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>is<wbr/>File</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Met [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L555">generated.d.ts:555</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentL [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L557">generated.d.ts:557</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentM [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L559">generated.d.ts:559</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentT [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L561">generated.d.ts:561</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="etag" cl [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L563">generated.d.ts:563</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="lastModi [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L553">generated.d.ts:553</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentL [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L555">generated.d.ts:555</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentM [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L557">generated.d.ts:557</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentT [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L559">generated.d.ts:559</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="etag" cl [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L561">generated.d.ts:561</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="lastModi [...]
 <p>We will output this time in RFC3339 format like <code>1996-12-19T16:39:57+08:00</code>.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L569">generated.d.ts:569</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member- [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L551">generated.d.ts:551</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="#is [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L553">generated.d.ts:553</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><su [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L567">generated.d.ts:567</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member- [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L549">generated.d.ts:549</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="#is [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L551">generated.d.ts:551</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><su [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index 82aa47a40..eb2fe98cd 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.43.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.43.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=".. [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Operator.html#append" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>append</span></a>
 <a href="Operator.html#capability" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>capability</span></a>
 <a href="Operator.html#check" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>check</span></a>
@@ -33,103 +33,103 @@
 <a href="Operator.html#writer" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>writer</span></a>
 <a href="Operator.html#writerSync" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>writer<wbr/>Sync</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ope [...]
-</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L152">generated.d.ts:152</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="append" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>append</span><a href="#append" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox= [...]
+</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L150">generated.d.ts:150</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="append" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>append</span><a href="#append" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox= [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><ul>
 <li>It always appends content to the end of the file.</li>
 <li>It will create file if the path not exists.</li>
 </ul>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">append</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-4">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><sp [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
-</div><h4 class="tsd-returns-title">Returns <a href="Capability.html" class="tsd-signature-type tsd-kind-class">Capability</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L154">generated.d.ts:154</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"><sp [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
+</div><h4 class="tsd-returns-title">Returns <a href="Capability.html" class="tsd-signature-type tsd-kind-class">Capability</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L152">generated.d.ts:152</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"><sp [...]
 <p>We will send a <code>list</code> request to path and return any errors we met.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">check</span><span class="hl-1">();</span>
 </code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L197">generated.d.ts:197</a></li></ul></aside></li></ul></section><sec [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L195">generated.d.ts:195</a></li></ul></aside></li></ul></section><sec [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">copy</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">copySync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">createDir</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">createDirSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/node [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/node [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>Delete not existing error won’t return errors.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">delete</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">deleteSync</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/node [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/node [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">isExist</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">isExistSync</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/n [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">layer</span>: <a href="ExternalObject.html" class="tsd-signature-type tsd-kind-class">ExternalObject</a><span class="tsd-signature-symbol">&lt;</span><a href="Layer.html" class="tsd-signature-type tsd-kind-class">Layer</a><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Op [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/n [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">layer</span>: <a href="ExternalObject.html" class="tsd-signature-type tsd-kind-class">ExternalObject</a><span class="tsd-signature-symbol">&lt;</span><a href="Layer.html" class="tsd-signature-type tsd-kind-class">Layer</a><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Op [...]
 <p>This function will create a new handle to list entries.</p>
 <p>An error will be returned if given path doesn&#39;t end with <code>/</code>.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">lister</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">list</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span><b [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
 <p>This function will create a new handle to list entries.</p>
 <p>An error will be returned if given path doesn&#39;t end with <code>/</code>.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">lister</span><span class="hl-1"> = </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">listSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span><br/><span class="hl-3">while</span><span class="hl-1">  [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
 <p>Unit of expires is seconds.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">req</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">presignRead</span><span class="hl-1">(</span><span class="hl-4">path</span><span class="hl-1">, </span><span class="hl-0" [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
 <p>Unit of expires is seconds.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">req</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">presignStat</span><span class="hl-1">(</span><span class="hl-4">path</span><span class="hl-1">, </span><span class="hl-0" [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
 <p>Unit of expires is seconds.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">req</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">presignWrite</span><span class="hl-1">(</span><span class="hl-4">path</span><span class="hl-1">, </span><span class="hl-0 [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../i [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">buf</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">read</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd- [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">buf</span><span class="hl-1"> = </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">readSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Buffer</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/n [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Buffer</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/n [...]
 <p>It could be used to read large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Reader.html" class="tsd-signature-type tsd-kind-class">Reader</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Reader.html" class="tsd-signature-type tsd-kind-class">Reader</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
 <p>It could be used to read large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingReader.html" class="tsd-signature-type tsd-kind-class">BlockingReader</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingReader.html" class="tsd-signature-type tsd-kind-class">BlockingReader</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>If underlying services support delete in batch, we will use batch delete instead.</p>
 <a id="md:examples" class="tsd-anchor"></a><h3><a href="#md:examples">Examples</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">([</span><span class="hl-2">&quot;abc&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;def&quot;</span><span class="hl-1">]);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">paths</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&g [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">paths</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&g [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>If underlying services support delete in batch, we will use batch delete instead.</p>
 <a id="md:examples" class="tsd-anchor"></a><h3><a href="#md:examples">Examples</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">removeAll</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/dir/&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typ [...]
 <p>It&#39;s similar to <code>mv</code> command.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">rename</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-s [...]
 <p>It&#39;s similar to <code>mv</code> command.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">renameSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-2">&quot;path/to/dest&quot;</span><span class="hl-1">);</span>
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
 <p>This function will create a new handle to list entries.</p>
 <p>An error will be returned if given path doesn&#39;t end with /.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">lister</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">scan</span><span class="hl-1">(</span><span class="hl-2">&quot;/path/to/dir/&quot;</span><span class="hl-1">);</span>< [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
 <p>This function will create a new handle to list entries.</p>
 <p>An error will be returned if given path doesn&#39;t end with /.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">lister</span><span class="hl-1"> = </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">scan_sync</span><span class="hl-1">(/</span><span class="hl-4">path</span><span class="hl-1">/</span><span class="hl-4">to</span><span class="hl-1">/</span><span class="hl-4">d [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
 <a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>Use stat if you:</p>
 <ul>
 <li>Want detect the outside changes of path.</li>
@@ -138,17 +138,17 @@
 <p>You may want to use <code>metadata</code> if you are working with entries returned by <code>Lister</code>. It’s highly possible that metadata you want has already been cached.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">meta</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">stat</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span><br/><span c [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">&gt;</span></ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">&gt;</span></ [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">meta</span><span class="hl-1"> = </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">statSync</span><span class="hl-1">(</span><span class="hl-2">&quot;test&quot;</span><span class="hl-1">);</span><br/><span class="hl-3">if</span><span class="hl-1"> (</span><span [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator- [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator- [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">write</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-4">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><spa [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">writeSync</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">, </span><span class="hl-4">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><span class="hl-2">&quot;hello world&quot;</span><span cla [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="ts [...]
 <p>It could be used to write large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Writer.html" class="tsd-signature-type tsd-kind-class">Writer</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Writer.html" class="tsd-signature-type tsd-kind-class">Writer</a><span class="tsd-signature-symbol">&gt;</span></h4>< [...]
 <p>It could be used to write large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingWriter.html" class="tsd-signature-type tsd-kind-class">BlockingWriter</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingWriter.html" class="tsd-signature-type tsd-kind-class">BlockingWriter</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Reader.html b/docs/nodejs/classes/Reader.html
index 4129c3c33..207aae1ca 100644
--- a/docs/nodejs/classes/Reader.html
+++ b/docs/nodejs/classes/Reader.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Reader | Apache OpenDAL - v0.43.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 [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L582">generated.d.ts:582</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L580">generated.d.ts:580</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Reader.html#createReadStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Read<wbr/>Stream</span></a>
 <a href="Reader.html#read" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>read</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Rea [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>Read bytes from this reader into given buffer.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">buf</span>: <span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">bigint</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-t [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">buf</span>: <span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">bigint</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-t [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/RetryLayer.html b/docs/nodejs/classes/RetryLayer.html
index 0413cf563..0d89a52aa 100644
--- a/docs/nodejs/classes/RetryLayer.html
+++ b/docs/nodejs/classes/RetryLayer.html
@@ -6,27 +6,27 @@ returns true. If operation still failed, this layer will set error to
 <p><code>write</code> and <code>blocking_write</code> don&#39;t support retry so far, visit <a href="https://github.com/apache/incubator-opendal/issues/1223">this issue</a> for more details.</p>
 <a id="md:examples" class="tsd-anchor"></a><h1><a href="#md:examples">Examples</a></h1><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">op</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">Operator</span><span class="hl-1">(</span><span class="hl-2">&quot;file&quot;</span><span class="hl-1">, { </span><span class="hl-4">root:</span><span class="hl-1"> </span><spa [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L714">generated.d.ts:714</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L712">generated.d.ts:712</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading upp [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="RetryLayer.html#factor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>factor</span></a>
 <a href="RetryLayer.html#jitter" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>jitter</span></a>
 <a href="RetryLayer.html#maxDelay" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>max<wbr/>Delay</span></a>
 <a href="RetryLayer.html#maxTimes" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>max<wbr/>Times</span></a>
 <a href="RetryLayer.html#minDelay" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>min<wbr/>Delay</span></a>
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="RetryLayer.html#build" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>build</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ret [...]
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ret [...]
 <a id="md:panics" class="tsd-anchor"></a><h1><a href="#md:panics">Panics</a></h1><p>This function will panic if input factor smaller than <code>1.0</code>.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/ [...]
 <p>If jitter is enabled, ExponentialBackoff will add a random jitter in `[0, min_delay)
 to current delay.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">boolean</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">boolean</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs [...]
 <p>Delay will not increasing if current delay is larger than max_delay.</p>
 <a id="md:notes" class="tsd-anchor"></a><h1><a href="#md:notes">Notes</a></h1><ul>
 <li>The unit of max_delay is millisecond.</li>
 </ul>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/ [...]
 <p>Backoff will return <code>None</code> if max times is reaching.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/ [...]
 <a id="md:notes" class="tsd-anchor"></a><h1><a href="#md:notes">Notes</a></h1><ul>
 <li>The unit of min_delay is millisecond.</li>
 </ul>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/ [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/ [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Writer.html b/docs/nodejs/classes/Writer.html
index 3880d74af..ef1cb3a1c 100644
--- a/docs/nodejs/classes/Writer.html
+++ b/docs/nodejs/classes/Writer.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Writer | Apache OpenDAL - v0.43.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 [...]
 manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L633">generated.d.ts:633</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/index.d.ts#L37">index.d.ts:37</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L631">generated.d.ts:631</a></li><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/index.d.ts#L37">index.d.ts:37</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class [...]
 </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Writer.html#close" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>close</span></a>
 <a href="Writer.html#createWriteStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Write<wbr/>Stream</span></a>
 <a href="Writer.html#write" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>write</span></a>
@@ -10,11 +10,11 @@ manner.</p>
 <p>Close this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">writer</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span> [...]
 </code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L663">generated.d.ts:663</a></li></ul></aside></li></ul></section><sec [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L661">generated.d.ts:661</a></li></ul></aside></li></ul></section><sec [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
 <p>&amp;mut self in async napi methods should be marked as unsafe</p>
 </blockquote>
 <p>Write bytes into this writer.</p>
 <a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-6">writer</span><span class="hl-1"> = </span><span class="hl-3">await</span><span class="hl-1"> </span><span class="hl-4">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">&quot;path/to/file&quot;</span><span class="hl-1">);</span> [...]
 </code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type [...]
\ No newline at end of file
diff --git a/docs/nodejs/interfaces/PresignedRequest.html b/docs/nodejs/interfaces/PresignedRequest.html
index d6dc6869f..a790c3b78 100644
--- a/docs/nodejs/interfaces/PresignedRequest.html
+++ b/docs/nodejs/interfaces/PresignedRequest.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PresignedRequest | Apache OpenDAL - v0.43.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 [...]
-</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">PresignedRequest </span><span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="PresignedRequest.html#headers">headers</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol">&lt;</span><span class=" [...]
+</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">PresignedRequest </span><span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="PresignedRequest.html#headers">headers</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol">&lt;</span><span class=" [...]
 <a href="PresignedRequest.html#method" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>method</span></a>
 <a href="PresignedRequest.html#url" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>url</span></a>
 </div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="headers" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>headers</span><a href="#headers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">headers</span><span class="tsd-signature-symbol">: [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L38">generated.d.ts:38</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="method" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L34">generated.d.ts:34</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="url" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></ [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/bb1d328/bindings/nodejs/generated.d.ts#L36">generated.d.ts:36</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><u [...]
\ No newline at end of file
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L38">generated.d.ts:38</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="method" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L34">generated.d.ts:34</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="url" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></ [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0920ac3/bindings/nodejs/generated.d.ts#L36">generated.d.ts:36</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><u [...]
\ No newline at end of file
diff --git a/docs/overview/index.html b/docs/overview/index.html
index b652134cc..26ff5040e 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">Welcome to Apache OpenDAL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/overview"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="cu [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 2cf74c04e..6d138af06 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -210,10 +210,10 @@
                                 <a class="variable" href="#Metadata.content_disposition">content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.mode">mode</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>
                         <li>
                                 <a class="variable" href="#Metadata.content_length">content_length</a>
@@ -230,15 +230,15 @@
             <li>
                     <a class="class" href="#PresignedRequest">PresignedRequest</a>
                             <ul class="memberlist">
-                        <li>
-                                <a class="variable" href="#PresignedRequest.headers">headers</a>
-                        </li>
                         <li>
                                 <a class="variable" href="#PresignedRequest.method">method</a>
                         </li>
                         <li>
                                 <a class="variable" href="#PresignedRequest.url">url</a>
                         </li>
+                        <li>
+                                <a class="variable" href="#PresignedRequest.headers">headers</a>
+                        </li>
                 </ul>
 
             </li>
@@ -246,124 +246,121 @@
                     <a class="class" href="#Capability">Capability</a>
                             <ul class="memberlist">
                         <li>
-                                <a class="variable" href="#Capability.presign_read">presign_read</a>
+                                <a class="variable" href="#Capability.read_with_override_cache_control">read_with_override_cache_control</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
+                                <a class="variable" href="#Capability.write_multi_max_size">write_multi_max_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
+                                <a class="variable" href="#Capability.create_dir">create_dir</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_without_recursive">list_without_recursive</a>
+                                <a class="variable" href="#Capability.stat">stat</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</a>
+                                <a class="variable" href="#Capability.write_can_append">write_can_append</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
+                                <a class="variable" href="#Capability.presign_write">presign_write</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_total_max_size">write_total_max_size</a>
+                                <a class="variable" href="#Capability.presign">presign</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write">write</a>
+                                <a class="variable" href="#Capability.presign_stat">presign_stat</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.blocking">blocking</a>
+                                <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_can_next">read_can_next</a>
+                                <a class="variable" href="#Capability.rename">rename</a>
                         </li>
                         <li>
                                 <a class="variable" href="#Capability.batch">batch</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</a>
-                        </li>
-                        <li>
-                                <a class="variable" href="#Capability.read">read</a>
+                                <a class="variable" href="#Capability.blocking">blocking</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_range">read_with_range</a>
+                                <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_can_append">write_can_append</a>
+                                <a class="variable" href="#Capability.write_total_max_size">write_total_max_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.delete">delete</a>
+                                <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
+                                <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.batch_delete">batch_delete</a>
+                                <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat">stat</a>
+                                <a class="variable" href="#Capability.copy">copy</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_cache_control">read_with_override_cache_control</a>
+                                <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
                         </li>
                         <li>
                                 <a class="variable" href="#Capability.write_can_empty">write_can_empty</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_can_seek">read_can_seek</a>
+                                <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.create_dir">create_dir</a>
+                                <a class="variable" href="#Capability.presign_read">presign_read</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
+                                <a class="variable" href="#Capability.list">list</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
+                                <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
+                                <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
+                                <a class="variable" href="#Capability.read_with_override_content_disposition">read_with_override_content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_write">presign_write</a>
+                                <a class="variable" href="#Capability.batch_delete">batch_delete</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign_stat">presign_stat</a>
+                                <a class="variable" href="#Capability.read_with_if_none_match">read_with_if_none_match</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
+                                <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_override_content_disposition">read_with_override_content_disposition</a>
+                                <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.copy">copy</a>
+                                <a class="variable" href="#Capability.delete">delete</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.rename">rename</a>
+                                <a class="variable" href="#Capability.write_multi_min_size">write_multi_min_size</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.list">list</a>
+                                <a class="variable" href="#Capability.read">read</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
+                                <a class="variable" href="#Capability.read_with_range">read_with_range</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.read_with_if_none_match">read_with_if_none_match</a>
+                                <a class="variable" href="#Capability.write">write</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_min_size">write_multi_min_size</a>
+                                <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.presign">presign</a>
+                                <a class="variable" href="#Capability.read_can_seek">read_can_seek</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_max_size">write_multi_max_size</a>
+                                <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
+                                <a class="variable" href="#Capability.read_can_next">read_can_next</a>
                         </li>
                 </ul>
 
@@ -1292,28 +1289,28 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
 
                             </div>
-                            <div id="Metadata.mode" class="classattr">
+                            <div id="Metadata.etag" class="classattr">
                                 <div class="attr variable">
-            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">EntryMode</a></span>
+            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.mode"></a>
+    <a class="headerlink" href="#Metadata.etag"></a>
     
-            <div class="docstring"><p>mode represent this entry's mode.</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">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>
 
 
@@ -1370,41 +1367,41 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <div id="PresignedRequest.headers" class="classattr">
+                            <div id="PresignedRequest.method" class="classattr">
                                 <div class="attr variable">
-            <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
+            <span class="name">method</span><span class="annotation">: str</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.headers"></a>
+    <a class="headerlink" href="#PresignedRequest.method"></a>
     
-            <div class="docstring"><p>Return the HTTP headers of this request.</p>
+            <div class="docstring"><p>Return the HTTP method of this request.</p>
 </div>
 
 
                             </div>
-                            <div id="PresignedRequest.method" class="classattr">
+                            <div id="PresignedRequest.url" class="classattr">
                                 <div class="attr variable">
-            <span class="name">method</span><span class="annotation">: str</span>
+            <span class="name">url</span><span class="annotation">: str</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.method"></a>
+    <a class="headerlink" href="#PresignedRequest.url"></a>
     
-            <div class="docstring"><p>Return the HTTP method of this request.</p>
+            <div class="docstring"><p>Return the URL of this request.</p>
 </div>
 
 
                             </div>
-                            <div id="PresignedRequest.url" class="classattr">
+                            <div id="PresignedRequest.headers" class="classattr">
                                 <div class="attr variable">
-            <span class="name">url</span><span class="annotation">: str</span>
+            <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.url"></a>
+    <a class="headerlink" href="#PresignedRequest.headers"></a>
     
-            <div class="docstring"><p>Return the URL of this request.</p>
+            <div class="docstring"><p>Return the HTTP headers of this request.</p>
 </div>
 
 
@@ -1425,134 +1422,136 @@ by current Operator.</p>
 </div>
 
 
-                            <div id="Capability.presign_read" class="classattr">
+                            <div id="Capability.read_with_override_cache_control" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_read</span><span class="annotation">: bool</span>
+            <span class="name">read_with_override_cache_control</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_read"></a>
+    <a class="headerlink" href="#Capability.read_with_override_cache_control"></a>
     
-            <div class="docstring"><p>If operator supports presign read.</p>
+            <div class="docstring"><p>if operator supports read with override cache control.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_recursive" class="classattr">
+                            <div id="Capability.write_multi_max_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
+            <span class="name">write_multi_max_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_recursive"></a>
+    <a class="headerlink" href="#Capability.write_multi_max_size"></a>
     
-            <div class="docstring"><p>If backend supports list without delimiter.</p>
+            <div class="docstring"><p>write_multi_max_size is the max size that services support in write_multi.</p>
+
+<p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_limit" class="classattr">
+                            <div id="Capability.create_dir" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_limit</span><span class="annotation">: bool</span>
+            <span class="name">create_dir</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_limit"></a>
+    <a class="headerlink" href="#Capability.create_dir"></a>
     
-            <div class="docstring"><p>If backend supports list with limit.</p>
+            <div class="docstring"><p>If operator supports create dir.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_without_recursive" class="classattr">
+                            <div id="Capability.stat" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_without_recursive</span><span class="annotation">: bool</span>
+            <span class="name">stat</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_without_recursive"></a>
+    <a class="headerlink" href="#Capability.stat"></a>
     
-            <div class="docstring"><p>If backend support list with using slash as delimiter.</p>
+            <div class="docstring"><p>If operator supports stat.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list_with_start_after" class="classattr">
+                            <div id="Capability.write_can_append" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list_with_start_after</span><span class="annotation">: bool</span>
+            <span class="name">write_can_append</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list_with_start_after"></a>
+    <a class="headerlink" href="#Capability.write_can_append"></a>
     
-            <div class="docstring"><p>If backend supports list with start after.</p>
+            <div class="docstring"><p>If operator supports write by append.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat_with_if_none_match" class="classattr">
+                            <div id="Capability.presign_write" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat_with_if_none_match</span><span class="annotation">: bool</span>
+            <span class="name">presign_write</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.stat_with_if_none_match"></a>
+    <a class="headerlink" href="#Capability.presign_write"></a>
     
-            <div class="docstring"><p>If operator supports stat with if none match.</p>
+            <div class="docstring"><p>If operator supports presign write.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_total_max_size" class="classattr">
+                            <div id="Capability.presign" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_total_max_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">presign</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_total_max_size"></a>
+    <a class="headerlink" href="#Capability.presign"></a>
     
-            <div class="docstring"><p>write_total_max_size is the max size that services support in write_total.</p>
-
-<p>For example, Cloudflare D1 supports 1MB as max in write_total.</p>
+            <div class="docstring"><p>If operator supports presign.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write" class="classattr">
+                            <div id="Capability.presign_stat" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write</span><span class="annotation">: bool</span>
+            <span class="name">presign_stat</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write"></a>
+    <a class="headerlink" href="#Capability.presign_stat"></a>
     
-            <div class="docstring"><p>If operator supports write.</p>
+            <div class="docstring"><p>If operator supports presign stat.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.blocking" class="classattr">
+                            <div id="Capability.write_multi_align_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">blocking</span><span class="annotation">: bool</span>
+            <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.blocking"></a>
+    <a class="headerlink" href="#Capability.write_multi_align_size"></a>
     
-            <div class="docstring"><p>If operator supports blocking.</p>
+            <div class="docstring"><p>write_multi_align_size is the align size that services required in write_multi.</p>
+
+<p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_can_next" class="classattr">
+                            <div id="Capability.rename" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_can_next</span><span class="annotation">: bool</span>
+            <span class="name">rename</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_can_next"></a>
+    <a class="headerlink" href="#Capability.rename"></a>
     
-            <div class="docstring"><p>If operator supports next on returning reader.</p>
+            <div class="docstring"><p>If operator supports rename.</p>
 </div>
 
 
@@ -1570,119 +1569,108 @@ by current Operator.</p>
 
 
                             </div>
-                            <div id="Capability.read_with_override_content_type" class="classattr">
+                            <div id="Capability.blocking" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_content_type</span><span class="annotation">: bool</span>
+            <span class="name">blocking</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_override_content_type"></a>
+    <a class="headerlink" href="#Capability.blocking"></a>
     
-            <div class="docstring"><p>if operator supports read with override content type.</p>
+            <div class="docstring"><p>If operator supports blocking.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read" class="classattr">
+                            <div id="Capability.write_with_content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read</span><span class="annotation">: bool</span>
+            <span class="name">write_with_content_disposition</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read"></a>
+    <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
     
-            <div class="docstring"><p>If operator supports read.</p>
+            <div class="docstring"><p>If operator supports write with content disposition.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_range" class="classattr">
+                            <div id="Capability.write_total_max_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_range</span><span class="annotation">: bool</span>
+            <span class="name">write_total_max_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_range"></a>
+    <a class="headerlink" href="#Capability.write_total_max_size"></a>
     
-            <div class="docstring"><p>If operator supports read with range.</p>
-</div>
-
-
-                            </div>
-                            <div id="Capability.write_can_append" class="classattr">
-                                <div class="attr variable">
-            <span class="name">write_can_append</span><span class="annotation">: bool</span>
+            <div class="docstring"><p>write_total_max_size is the max size that services support in write_total.</p>
 
-        
-    </div>
-    <a class="headerlink" href="#Capability.write_can_append"></a>
-    
-            <div class="docstring"><p>If operator supports write by append.</p>
+<p>For example, Cloudflare D1 supports 1MB as max in write_total.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.delete" class="classattr">
+                            <div id="Capability.write_can_multi" class="classattr">
                                 <div class="attr variable">
-            <span class="name">delete</span><span class="annotation">: bool</span>
+            <span class="name">write_can_multi</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.delete"></a>
+    <a class="headerlink" href="#Capability.write_can_multi"></a>
     
-            <div class="docstring"><p>If operator supports delete.</p>
+            <div class="docstring"><p>If operator supports write can be called in multi times.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.batch_max_operations" class="classattr">
+                            <div id="Capability.read_with_if_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch_max_operations</span><span class="annotation">: Optional[int]</span>
+            <span class="name">read_with_if_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch_max_operations"></a>
+    <a class="headerlink" href="#Capability.read_with_if_match"></a>
     
-            <div class="docstring"><p>The max operations that operator supports in batch.</p>
+            <div class="docstring"><p>If operator supports read with if match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.batch_delete" class="classattr">
+                            <div id="Capability.stat_with_if_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">batch_delete</span><span class="annotation">: bool</span>
+            <span class="name">stat_with_if_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.batch_delete"></a>
+    <a class="headerlink" href="#Capability.stat_with_if_match"></a>
     
-            <div class="docstring"><p>If operator supports batch delete.</p>
+            <div class="docstring"><p>If operator supports stat with if match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat" class="classattr">
+                            <div id="Capability.copy" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat</span><span class="annotation">: bool</span>
+            <span class="name">copy</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.stat"></a>
+    <a class="headerlink" href="#Capability.copy"></a>
     
-            <div class="docstring"><p>If operator supports stat.</p>
+            <div class="docstring"><p>If operator supports copy.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_override_cache_control" class="classattr">
+                            <div id="Capability.batch_max_operations" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_cache_control</span><span class="annotation">: bool</span>
+            <span class="name">batch_max_operations</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_override_cache_control"></a>
+    <a class="headerlink" href="#Capability.batch_max_operations"></a>
     
-            <div class="docstring"><p>if operator supports read with override cache control.</p>
+            <div class="docstring"><p>The max operations that operator supports in batch.</p>
 </div>
 
 
@@ -1700,255 +1688,251 @@ by current Operator.</p>
 
 
                             </div>
-                            <div id="Capability.read_can_seek" class="classattr">
+                            <div id="Capability.list_with_recursive" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_can_seek</span><span class="annotation">: bool</span>
+            <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_can_seek"></a>
+    <a class="headerlink" href="#Capability.list_with_recursive"></a>
     
-            <div class="docstring"><p>If operator supports seek on returning reader.</p>
+            <div class="docstring"><p>If backend supports list without delimiter.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.create_dir" class="classattr">
+                            <div id="Capability.presign_read" class="classattr">
                                 <div class="attr variable">
-            <span class="name">create_dir</span><span class="annotation">: bool</span>
+            <span class="name">presign_read</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.create_dir"></a>
+    <a class="headerlink" href="#Capability.presign_read"></a>
     
-            <div class="docstring"><p>If operator supports create dir.</p>
+            <div class="docstring"><p>If operator supports presign read.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_if_match" class="classattr">
+                            <div id="Capability.list" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_if_match</span><span class="annotation">: bool</span>
+            <span class="name">list</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_if_match"></a>
+    <a class="headerlink" href="#Capability.list"></a>
     
-            <div class="docstring"><p>If operator supports read with if match.</p>
+            <div class="docstring"><p>If operator supports list.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_can_multi" class="classattr">
+                            <div id="Capability.write_with_content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_can_multi</span><span class="annotation">: bool</span>
+            <span class="name">write_with_content_type</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_can_multi"></a>
+    <a class="headerlink" href="#Capability.write_with_content_type"></a>
     
-            <div class="docstring"><p>If operator supports write can be called in multi times.</p>
+            <div class="docstring"><p>If operator supports write with content type.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_content_type" class="classattr">
+                            <div id="Capability.stat_with_if_none_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_content_type</span><span class="annotation">: bool</span>
+            <span class="name">stat_with_if_none_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_content_type"></a>
+    <a class="headerlink" href="#Capability.stat_with_if_none_match"></a>
     
-            <div class="docstring"><p>If operator supports write with content type.</p>
+            <div class="docstring"><p>If operator supports stat with if none match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_cache_control" class="classattr">
+                            <div id="Capability.read_with_override_content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_cache_control</span><span class="annotation">: bool</span>
+            <span class="name">read_with_override_content_disposition</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_cache_control"></a>
+    <a class="headerlink" href="#Capability.read_with_override_content_disposition"></a>
     
-            <div class="docstring"><p>If operator supports write with cache control.</p>
+            <div class="docstring"><p>if operator supports read with override content disposition.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_write" class="classattr">
+                            <div id="Capability.batch_delete" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_write</span><span class="annotation">: bool</span>
+            <span class="name">batch_delete</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_write"></a>
+    <a class="headerlink" href="#Capability.batch_delete"></a>
     
-            <div class="docstring"><p>If operator supports presign write.</p>
+            <div class="docstring"><p>If operator supports batch delete.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign_stat" class="classattr">
+                            <div id="Capability.read_with_if_none_match" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign_stat</span><span class="annotation">: bool</span>
+            <span class="name">read_with_if_none_match</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign_stat"></a>
+    <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
     
-            <div class="docstring"><p>If operator supports presign stat.</p>
+            <div class="docstring"><p>If operator supports read with if none match.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_with_content_disposition" class="classattr">
+                            <div id="Capability.list_with_limit" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_with_content_disposition</span><span class="annotation">: bool</span>
+            <span class="name">list_with_limit</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
+    <a class="headerlink" href="#Capability.list_with_limit"></a>
     
-            <div class="docstring"><p>If operator supports write with content disposition.</p>
+            <div class="docstring"><p>If backend supports list with limit.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_override_content_disposition" class="classattr">
+                            <div id="Capability.read_with_override_content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_override_content_disposition</span><span class="annotation">: bool</span>
+            <span class="name">read_with_override_content_type</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_override_content_disposition"></a>
+    <a class="headerlink" href="#Capability.read_with_override_content_type"></a>
     
-            <div class="docstring"><p>if operator supports read with override content disposition.</p>
+            <div class="docstring"><p>if operator supports read with override content type.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.copy" class="classattr">
+                            <div id="Capability.delete" class="classattr">
                                 <div class="attr variable">
-            <span class="name">copy</span><span class="annotation">: bool</span>
+            <span class="name">delete</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.copy"></a>
+    <a class="headerlink" href="#Capability.delete"></a>
     
-            <div class="docstring"><p>If operator supports copy.</p>
+            <div class="docstring"><p>If operator supports delete.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.rename" class="classattr">
+                            <div id="Capability.write_multi_min_size" class="classattr">
                                 <div class="attr variable">
-            <span class="name">rename</span><span class="annotation">: bool</span>
+            <span class="name">write_multi_min_size</span><span class="annotation">: Optional[int]</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.rename"></a>
+    <a class="headerlink" href="#Capability.write_multi_min_size"></a>
     
-            <div class="docstring"><p>If operator supports rename.</p>
+            <div class="docstring"><p>write_multi_min_size is the min size that services support in write_multi.</p>
+
+<p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.list" class="classattr">
+                            <div id="Capability.read" class="classattr">
                                 <div class="attr variable">
-            <span class="name">list</span><span class="annotation">: bool</span>
+            <span class="name">read</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.list"></a>
+    <a class="headerlink" href="#Capability.read"></a>
     
-            <div class="docstring"><p>If operator supports list.</p>
+            <div class="docstring"><p>If operator supports read.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.stat_with_if_match" class="classattr">
+                            <div id="Capability.read_with_range" class="classattr">
                                 <div class="attr variable">
-            <span class="name">stat_with_if_match</span><span class="annotation">: bool</span>
+            <span class="name">read_with_range</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.stat_with_if_match"></a>
+    <a class="headerlink" href="#Capability.read_with_range"></a>
     
-            <div class="docstring"><p>If operator supports stat with if match.</p>
+            <div class="docstring"><p>If operator supports read with range.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.read_with_if_none_match" class="classattr">
+                            <div id="Capability.write" class="classattr">
                                 <div class="attr variable">
-            <span class="name">read_with_if_none_match</span><span class="annotation">: bool</span>
+            <span class="name">write</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
+    <a class="headerlink" href="#Capability.write"></a>
     
-            <div class="docstring"><p>If operator supports read with if none match.</p>
+            <div class="docstring"><p>If operator supports write.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_min_size" class="classattr">
+                            <div id="Capability.write_with_cache_control" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_min_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">write_with_cache_control</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_min_size"></a>
+    <a class="headerlink" href="#Capability.write_with_cache_control"></a>
     
-            <div class="docstring"><p>write_multi_min_size is the min size that services support in write_multi.</p>
-
-<p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
+            <div class="docstring"><p>If operator supports write with cache control.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.presign" class="classattr">
+                            <div id="Capability.read_can_seek" class="classattr">
                                 <div class="attr variable">
-            <span class="name">presign</span><span class="annotation">: bool</span>
+            <span class="name">read_can_seek</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.presign"></a>
+    <a class="headerlink" href="#Capability.read_can_seek"></a>
     
-            <div class="docstring"><p>If operator supports presign.</p>
+            <div class="docstring"><p>If operator supports seek on returning reader.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_max_size" class="classattr">
+                            <div id="Capability.list_with_start_after" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_max_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">list_with_start_after</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_max_size"></a>
+    <a class="headerlink" href="#Capability.list_with_start_after"></a>
     
-            <div class="docstring"><p>write_multi_max_size is the max size that services support in write_multi.</p>
-
-<p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
+            <div class="docstring"><p>If backend supports list with start after.</p>
 </div>
 
 
                             </div>
-                            <div id="Capability.write_multi_align_size" class="classattr">
+                            <div id="Capability.read_can_next" class="classattr">
                                 <div class="attr variable">
-            <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
+            <span class="name">read_can_next</span><span class="annotation">: bool</span>
 
         
     </div>
-    <a class="headerlink" href="#Capability.write_multi_align_size"></a>
+    <a class="headerlink" href="#Capability.read_can_next"></a>
     
-            <div class="docstring"><p>write_multi_align_size is the align size that services required in write_multi.</p>
-
-<p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
+            <div class="docstring"><p>If operator supports next on returning reader.</p>
 </div>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index 0b2aca13d..f5330ea7d 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/quickstart/index.html b/docs/quickstart/index.html
index 8c64a89ba..bc44e995a 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Quickstart | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/quickstart"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ 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 52edaaa4d..05a1575d9 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.74.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/raw/struct.OpDelete.html\" title=\"struct opendal::raw::OpDelete\">OpDelete</a>"],["impl&lt;T: <a class=\"trait\" href=\"opendal/raw/trait.Part.html\" title=\"trait opendal::raw::Part\">Part</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/default/trait.Default.html\" [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/raw/struct.OpDelete.html\" title=\"struct opendal::raw::OpDelete\">OpDelete</a>"],["impl&lt;T: <a class=\"trait\" href=\"opendal/raw/trait.Part.html\" title=\"trait opendal::raw::Part\">Part</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/default/trait.Default.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/opendal/raw/adapters/kv/struct.Backend.html b/docs/rust/opendal/raw/adapters/kv/struct.Backend.html
index de1cd6085..ce70fff9d 100644
--- a/docs/rust/opendal/raw/adapters/kv/struct.Backend.html
+++ b/docs/rust/opendal/raw/adapters/kv/struct.Backend.html
@@ -1,15 +1,15 @@
-<!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="Backend of kv service. If the storage service is one k-v-like service, it should implement this kv `Backend` by right."><title>Backend in opendal::raw::adapters::kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regul [...]
+<!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="Backend of kv service. If the storage service is one k-v-like service, it should implement this kv `Backend` by right."><title>Backend in opendal::raw::adapters::kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regul [...]
 <p><code>Backend</code> implements one general logic on how to read, write, scan the data from one kv store efficiently.
 And the <a href="trait.Adapter.html" title="trait opendal::raw::adapters::kv::Adapter"><code>Adapter</code></a> held by <code>Backend</code> will handle how to communicate with one k-v-like service really and provides
 a series of basic operation for this service.</p>
 <p>OpenDAL developer can implement one new k-v store backend easily with help of this Backend.</p>
-</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-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#47-64">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct" href="st [...]
-    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#52-57">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summary><div class="do [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#60-63">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure root withi [...]
-</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-Accessor-for-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#67-269">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" class="anch [...]
+</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-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#48-65">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct" href="st [...]
+    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#53-58">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summary><div class="do [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#61-64">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure root withi [...]
+</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-Accessor-for-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#68-202">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" class="anch [...]
 <code>blocking_read</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Writer" class="associatedtype trait-impl"><a href="#associatedtype.Writer" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Writer" class="associatedtype">Writer</a> = KvWriter&lt;S&gt;</h4></section></summary><div class='docblock'>Writer is the associated writer the could return in <code>write</code> operation.</div></de [...]
-<code>blocking_write</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Lister" class="associatedtype trait-impl"><a href="#associatedtype.Lister" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Lister" class="associatedtype">Lister</a> = KvLister</h4></section></summary><div class='docblock'>Lister is the associated lister that return in <code>list</code> operation.</div></details><details [...]
-<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#75-107">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="struct ope [...]
+<code>blocking_write</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Lister" class="associatedtype trait-impl"><a href="#associatedtype.Lister" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Lister" class="associatedtype">Lister</a> = <a class="struct" href="../../oio/struct.HierarchyLister.html" title="struct opendal::raw::oio::HierarchyLister">HierarchyLister</a>&lt;KvLister&gt;</h4>< [...]
+<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#76-100">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="struct ope [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
@@ -17,11 +17,11 @@ a series of basic operation for this service.</p>
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>read</code> operation on the specified path, returns a
-<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#122-132">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-header">fn < [...]
+<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#115-125">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-header">fn < [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     __arg2: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
@@ -29,61 +29,61 @@ a series of basic operation for this service.</p>
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>write</code> operation on the specified path, returns a
-written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#140-144">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn">blocking_ [...]
+written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#133-137">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn">blocking_ [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     _: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     __arg2: <a class="struct" href="../../struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#162-176">source</a><a href="#method.blocking_stat" class="anchor">§</a><h4 [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#155-169">source</a><a href="#method.blocking_stat" class="anchor">§</a><h4 [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     __arg2: <a class="struct" href="../../struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#185-190">source</a><a href="#method.blocking_delete" class="anchor"> [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#178-183">source</a><a href="#method.blocking_delete" class="anchor"> [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
+    args: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#200-206">source</a><a href="#method.blocking_list" class="anchor">§</a><h4 [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#194-201">source</a><a href="#method.blocking_list" class="anchor">§</a><h4 [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    _: <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.BlockingLister" title="type opendal::raw::Accessor::BlockingLister">BlockingLister</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a hr [...]
+    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.BlockingLister" title="type opendal::raw::Accessor::BlockingLister">BlockingLister</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a hr [...]
     &amp;'life0 self,
-    from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    __arg3: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
-) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
+    path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    args: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
+) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_rename" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#224-238">source</a><a hre [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#148-155">source</a><a href="#method.copy" class="anchor">§</a><h4 class="code-header">f [...]
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    __arg3: <a class="struct" href="../../struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
+    args: <a class="struct" href="../../struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#255-268">source</a><a href="#me [...]
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#160-167">source</a><a href="#method.rename" class [...]
     &amp;'life0 self,
-    path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
-) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
+    from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    args: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
+) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#228-235">source</a><a href="#method.presign" class="anchor">§</a><h4 class="code-hea [...]
+    'life1: 'async_trait,
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#228-235">source</a><a href="#method.presign" [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
@@ -99,7 +99,12 @@ written size if operate successful. <a href="../../trait.Accessor.html#method.wr
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="../../struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_create</code> operation on the specified path. <a href="../../trait.Accessor.html#method.blocking_create_dir">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open> [...]
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="../../struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_create</code> operation on the specified path. <a href="../../trait.Accessor.html#method.blocking_create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id=" [...]
+    &amp;self,
+    from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    args: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="../../struct.RpRename.html" title="struct opendal::raw::RpRename">RpRename</a>&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.blocking_rename">Read more</a></div></details></div></details><details class="tog [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Backend%3CS%3E" class="impl"><a href="#impl-Send-for-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for < [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-Backend%3CS%3E" c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.74.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="src rightside" href="https://doc.rust-lang.org/1.74.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html b/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html
index 10027507d..44f591e6c 100644
--- a/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html
+++ b/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html
@@ -1,11 +1,11 @@
-<!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="The typed kv backend which implements Accessor for for typed kv adapter."><title>Backend in opendal::raw::adapters::typed_kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel [...]
-</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-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#41-58">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct" hr [...]
-    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::typed_kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#46-51">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summary><d [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#54-57">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure root [...]
-</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-Accessor-for-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#61-270">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" class [...]
+<!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="The typed kv backend which implements Accessor for for typed kv adapter."><title>Backend in opendal::raw::adapters::typed_kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel [...]
+</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-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#42-59">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct" hr [...]
+    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::typed_kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#47-52">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summary><d [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#55-58">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure root [...]
+</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-Accessor-for-Backend%3CS%3E" class="impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#62-206">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" class [...]
 <code>blocking_read</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Writer" class="associatedtype trait-impl"><a href="#associatedtype.Writer" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Writer" class="associatedtype">Writer</a> = KvWriter&lt;S&gt;</h4></section></summary><div class='docblock'>Writer is the associated writer the could return in <code>write</code> operation.</div></de [...]
-<code>blocking_write</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Lister" class="associatedtype trait-impl"><a href="#associatedtype.Lister" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Lister" class="associatedtype">Lister</a> = KvLister</h4></section></summary><div class='docblock'>Lister is the associated lister that return in <code>list</code> operation.</div></details><details [...]
-<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#69-112">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="stru [...]
+<code>blocking_write</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Lister" class="associatedtype trait-impl"><a href="#associatedtype.Lister" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Lister" class="associatedtype">Lister</a> = <a class="struct" href="../../oio/struct.HierarchyLister.html" title="struct opendal::raw::oio::HierarchyLister">HierarchyLister</a>&lt;KvLister&gt;</h4>< [...]
+<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#70-106">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="stru [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
@@ -13,11 +13,11 @@
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>read</code> operation on the specified path, returns a
-<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#128-139">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-header [...]
+<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#122-133">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-header [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
@@ -25,61 +25,61 @@
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>write</code> operation on the specified path, returns a
-written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#147-151">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn">blo [...]
+written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#141-145">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn">blo [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     __arg2: <a class="struct" href="../../struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#167-179">source</a><a href="#method.blocking_stat" class="anchor">§< [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#161-173">source</a><a href="#method.blocking_stat" class="anchor">§< [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     __arg2: <a class="struct" href="../../struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#188-193">source</a><a href="#method.blocking_delete" class="an [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#182-187">source</a><a href="#method.blocking_delete" class="an [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
+    args: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#203-209">source</a><a href="#method.blocking_list" class="anchor">§< [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#198-205">source</a><a href="#method.blocking_list" class="anchor">§< [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    _: <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.BlockingLister" title="type opendal::raw::Accessor::BlockingLister">BlockingLister</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a hr [...]
+    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.BlockingLister" title="type opendal::raw::Accessor::BlockingLister">BlockingLister</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a hr [...]
     &amp;'life0 self,
-    from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    __arg3: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
-) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
+    path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    args: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
+) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_rename" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#226-239">source</a> [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#148-155">source</a><a href="#method.copy" class="anchor">§</a><h4 class="code-header">f [...]
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    __arg3: <a class="struct" href="../../struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
+    args: <a class="struct" href="../../struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#256-269">source</a><a hre [...]
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#160-167">source</a><a href="#method.rename" class [...]
     &amp;'life0 self,
-    path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
-) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
+    from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    args: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
+) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.74.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.74.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 opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#228-235">source</a><a href="#method.presign" class="anchor">§</a><h4 class="code-hea [...]
+    'life1: 'async_trait,
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="src rightside" href="../../../../src/opendal/raw/accessor.rs.html#228-235">source</a><a href="#method.presign" [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
@@ -95,7 +95,12 @@ written size if operate successful. <a href="../../trait.Accessor.html#method.wr
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
     args: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="../../struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_create</code> operation on the specified path. <a href="../../trait.Accessor.html#method.blocking_create_dir">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open> [...]
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="../../struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_create</code> operation on the specified path. <a href="../../trait.Accessor.html#method.blocking_create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id=" [...]
+    &amp;self,
+    from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.str.html">str</a>,
+    args: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="../../struct.RpRename.html" title="struct opendal::raw::RpRename">RpRename</a>&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.blocking_rename">Read more</a></div></details></div></details><details class="tog [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Backend%3CS%3E" class="impl"><a href="#impl-Send-for-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for < [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-Backend%3CS%3E" c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.74.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="src rightside" href="https://doc.rust-lang.org/1.74.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/docs/rust/opendal/raw/oio/struct.FlatLister.html b/docs/rust/opendal/raw/oio/struct.FlatLister.html
index cd7af6a3a..95bd14b00 100644
--- a/docs/rust/opendal/raw/oio/struct.FlatLister.html
+++ b/docs/rust/opendal/raw/oio/struct.FlatLister.html
@@ -25,13 +25,13 @@ We only make sure the nested dirs will show up before parent dirs.</p>
 <p>Especially, for storage services that can’t return dirs first, ToFlatLister
 may output parent dirs’ files before nested dirs, this is expected because files
 always output directly while listing.</p>
-</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-FlatLister%3CA,+L%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#81-104">source</a><a href="#impl-FlatLister%3CA,+L%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A, L&gt; <a class="stru [...]
-    A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#86-103">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(acc: A, path: &amp;<a class="primitive" href="https://doc.rust-lang [...]
-</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-BlockingList-for-FlatLister%3CA,+P%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#163-207">source</a><a href="#impl-BlockingList-for-FlatLister%3CA,+ [...]
+</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-FlatLister%3CA,+L%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#81-95">source</a><a href="#impl-FlatLister%3CA,+L%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A, L&gt; <a class="struc [...]
+    A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#86-94">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(acc: A, path: &amp;<a class="primitive" href="https://doc.rust-lang. [...]
+</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-BlockingList-for-FlatLister%3CA,+P%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#154-198">source</a><a href="#impl-BlockingList-for-FlatLister%3CA,+ [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;BlockingLister = P&gt;,
-    P: <a class="trait" href="trait.BlockingList.html" title="trait opendal::raw::oio::BlockingList">BlockingList</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.next" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#168-206">source</a><a href="#method.next" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BlockingList.html#tymethod. [...]
+    P: <a class="trait" href="trait.BlockingList.html" title="trait opendal::raw::oio::BlockingList">BlockingList</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.next" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#159-197">source</a><a href="#method.next" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BlockingList.html#tymethod. [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;Lister = L&gt;,
-    L: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.poll_next" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#111-160">source</a><a href="#method.poll_next" class="anchor">§</a><h4 class="code-header">fn <a href="trait.List.html#tymethod.poll_next" class="fn"> [...]
+    L: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.poll_next" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/flat_list.rs.html#102-151">source</a><a href="#method.poll_next" class="anchor">§</a><h4 class="code-header">fn <a href="trait.List.html#tymethod.poll_next" class="fn"> [...]
 <p>We will only take <code>&amp;mut Self</code> reference for FsLister.</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-FlatLister%3CA,+L%3E" class="impl"><a href="#impl-RefUnwindSafe-for-FlatLister%3CA,+L%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A, L&gt; !<a class="trait" href="https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe. [...]
     L: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Unpin-for-FlatLister%3CA,+L%3E" class="impl"><a href="#impl-Unpin-for-FlatLister%3CA,+L%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A, L&gt; <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct. [...]
diff --git a/docs/rust/opendal/raw/oio/struct.HierarchyLister.html b/docs/rust/opendal/raw/oio/struct.HierarchyLister.html
index 38ad1b444..a63a3862f 100644
--- a/docs/rust/opendal/raw/oio/struct.HierarchyLister.html
+++ b/docs/rust/opendal/raw/oio/struct.HierarchyLister.html
@@ -1,12 +1,12 @@
-<!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="ToHierarchyLister will convert a flat list to hierarchy by filter not needed entries."><title>HierarchyLister in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link  [...]
+<!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="ToHierarchyLister will convert a flat list to hierarchy by filter not needed entries."><title>HierarchyLister in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link  [...]
 not needed entries.</p>
 <h2 id="notes"><a href="#notes">Notes</a></h2>
 <p>ToHierarchyLister filter entries after fetch entries. So it’s possible
 to return an empty vec. It doesn’t mean the all pages have been
 returned.</p>
 <p>Please keep calling next until we returned <code>Ok(None)</code></p>
-</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-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#42-118">source</a><a href="#impl-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P&gt; <a class [...]
-</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-BlockingList-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#135-148">source</a><a href="#impl-BlockingList-for-Hierarchy [...]
+</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-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#43-125">source</a><a href="#impl-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P&gt; <a class [...]
+</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-BlockingList-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#145-162">source</a><a href="#impl-BlockingList-for-Hierarchy [...]
     P: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-HierarchyLister%3CP%3E" class="impl"><a href="#impl-Send-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P&gt; <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html" title="trait core::marker::Send [...]
     P: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h3></section><section id="impl-Sync-for-HierarchyLister%3CP%3E" class="impl"><a href="#impl-Sync-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P&gt; <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Hier [...]
     P: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Unpin-for-HierarchyLister%3CP%3E" class="impl"><a href="#impl-Unpin-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P&gt; <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct [...]
diff --git a/docs/rust/opendal/raw/oio/trait.BlockingList.html b/docs/rust/opendal/raw/oio/trait.BlockingList.html
index 42934b320..f971057ce 100644
--- a/docs/rust/opendal/raw/oio/trait.BlockingList.html
+++ b/docs/rust/opendal/raw/oio/trait.BlockingList.html
@@ -5,6 +5,6 @@
 </div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.next" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/list/api.rs.html#132">source</a><h4 class="code-header">fn <a href="#tymethod.next" class="fn">next</a>(&amp;mut self) -&gt; <a class="type" href="../../type.Result.html" title [...]
 <p><code>Ok(None)</code> means all pages have been returned. Any following call
 to <code>next</code> will always get the same result.</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-BlockingList-for-Option%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/api.rs.html#150-157">source</a><a href="#impl-BlockingList-for-Option%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href= [...]
+</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-BlockingList-for-Option%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/api.rs.html#150-157">source</a><a href="#impl-BlockingList-for-Option%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href= [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;BlockingLister = P&gt;,
-    P: <a class="trait" href="trait.BlockingList.html" title="trait opendal::raw::oio::BlockingList">BlockingList</a>,</span></h3></section><section id="impl-BlockingList-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#135-148">source</a><a href="#impl-BlockingList-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.BlockingList.html" title="trait o [...]
\ No newline at end of file
+    P: <a class="trait" href="trait.BlockingList.html" title="trait opendal::raw::oio::BlockingList">BlockingList</a>,</span></h3></section><section id="impl-BlockingList-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#145-162">source</a><a href="#impl-BlockingList-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.BlockingList.html" title="trait o [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.List.html b/docs/rust/opendal/raw/oio/trait.List.html
index 554c463e6..f6c11491f 100644
--- a/docs/rust/opendal/raw/oio/trait.List.html
+++ b/docs/rust/opendal/raw/oio/trait.List.html
@@ -5,7 +5,7 @@
 </div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.poll_next" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/list/api.rs.html#70">source</a><h4 class="code-header">fn <a href="#tymethod.poll_next" class="fn">poll_next</a>(&amp;mut self, cx: &amp;mut <a class="struct" href="https: [...]
 <p><code>Ok(None)</code> means all pages have been returned. Any following call
 to <code>next</code> will always get the same result.</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-List-for-Box%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/api.rs.html#76-80">source</a><a href="#impl-List-for-Box%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.List.html" title= [...]
+</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-List-for-Box%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/api.rs.html#76-80">source</a><a href="#impl-List-for-Box%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.List.html" title= [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;Lister = L&gt;,
     L: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,</span></h3></section><section id="impl-List-for-PageLister%3CL%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/page_list.rs.html#102-135">source</a><a href="#impl-List-for-PageLister%3CL%3E" class="anchor">§</a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a> for <a class="struct" href= [...]
-    L: <a class="trait" href="trait.PageList.html" title="trait opendal::raw::oio::PageList">PageList</a>,</span></h3></section><section id="impl-List-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#120-133">source</a><a href="#impl-List-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>&gt; [...]
\ No newline at end of file
+    L: <a class="trait" href="trait.PageList.html" title="trait opendal::raw::oio::PageList">PageList</a>,</span></h3></section><section id="impl-List-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#127-143">source</a><a href="#impl-List-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>&gt; [...]
\ 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 9cda9f66e..ed7c5d0b4 100644
--- a/docs/rust/opendal/raw/trait.Accessor.html
+++ b/docs/rust/opendal/raw/trait.Accessor.html
@@ -457,4 +457,4 @@ written size if operate successful.</p>
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.74.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.BlockingLister" title="type opendal::raw::Accessor::BlockingLister">BlockingLister</a>)&gt;</h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h [...]
\ 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.BlockingLister" title="type opendal::raw::Accessor::BlockingLister">BlockingLister</a>)&gt;</h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/struct.Capability.html b/docs/rust/opendal/struct.Capability.html
index 61430b532..ead14b5d4 100644
--- a/docs/rust/opendal/struct.Capability.html
+++ b/docs/rust/opendal/struct.Capability.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="Capability is used to describe what operations are supported by current Operator."><title>Capability 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" t [...]
+<!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="Capability is used to describe what operations are supported by current Operator."><title>Capability 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" t [...]
     pub stat: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
     pub stat_with_if_match: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
     pub stat_with_if_none_match: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
@@ -30,7 +30,6 @@
     pub list_with_limit: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
     pub list_with_start_after: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
     pub list_with_recursive: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
-    pub list_without_recursive: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
     pub presign: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
     pub presign_read: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
     pub presign_stat: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a>,
@@ -107,7 +106,6 @@ decide if this operation optimized or not.</p>
 </div><span id="structfield.list_with_limit" class="structfield small-section-header"><a href="#structfield.list_with_limit" class="anchor field">§</a><code>list_with_limit: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports list with limit.</p>
 </div><span id="structfield.list_with_start_after" class="structfield small-section-header"><a href="#structfield.list_with_start_after" class="anchor field">§</a><code>list_with_start_after: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports list with start after.</p>
 </div><span id="structfield.list_with_recursive" class="structfield small-section-header"><a href="#structfield.list_with_recursive" class="anchor field">§</a><code>list_with_recursive: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports list with recursive.</p>
-</div><span id="structfield.list_without_recursive" class="structfield small-section-header"><a href="#structfield.list_without_recursive" class="anchor field">§</a><code>list_without_recursive: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports list without recursive.</p>
 </div><span id="structfield.presign" class="structfield small-section-header"><a href="#structfield.presign" class="anchor field">§</a><code>presign: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports presign.</p>
 </div><span id="structfield.presign_read" class="structfield small-section-header"><a href="#structfield.presign_read" class="anchor field">§</a><code>presign_read: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports presign read.</p>
 </div><span id="structfield.presign_stat" class="structfield small-section-header"><a href="#structfield.presign_stat" class="anchor field">§</a><code>presign_stat: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports presign stat.</p>
@@ -116,7 +114,7 @@ decide if this operation optimized or not.</p>
 </div><span id="structfield.batch_delete" class="structfield small-section-header"><a href="#structfield.batch_delete" class="anchor field">§</a><code>batch_delete: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports batch delete.</p>
 </div><span id="structfield.batch_max_operations" class="structfield small-section-header"><a href="#structfield.batch_max_operations" class="anchor field">§</a><code>batch_max_operations: <a class="enum" href="https://doc.rust-lang.org/1.74.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.usize.html">usize</a>&gt;</code></span><div class="docblock"><p>The max operations that operator [...]
 </div><span id="structfield.blocking" class="structfield small-section-header"><a href="#structfield.blocking" class="anchor field">§</a><code>blocking: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports blocking.</p>
-</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-Capability" class="impl"><a class="src rightside" href="../src/opendal/types/capability.rs.html#56">source</a><a href="#impl-Clone-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https [...]
+</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-Capability" class="impl"><a class="src rightside" href="../src/opendal/types/capability.rs.html#56">source</a><a href="#impl-Clone-for-Capability" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.74.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="src rightside" href="https://doc.rust-lang.org/1.74.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.74.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"><a class="src rightside" href="https://doc.rust-lang.org/1.74.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.74.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"><a class="src rightside" href="https://doc.rust-lang.org/1.74.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index eae2cfae1..b8bcf16d2 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":"QNNNNNNNDDDDINNDNNNNNNNNNNNNNNNNNNDENDENNNNNNNNNNNNNNNNNNNNDNNDENNNNNNNNNNDDDNNNNNDNNGNNSENNNNNNNNNNNNNDLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
+"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNNNNNNNDDDDINNDNNNNNNNNNNNNNNNNNNDENDENNNNNNNNNNNNNNNNNNNNDNNDENNNNNNNNNNDDDNNNNNDNNGNNSENNNNNNNNNNNNNDLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
 }');
 if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
 if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/rust/src/opendal/layers/complete.rs.html b/docs/rust/src/opendal/layers/complete.rs.html
index 9bdf2dab9..4a145501e 100644
--- a/docs/rust/src/opendal/layers/complete.rs.html
+++ b/docs/rust/src/opendal/layers/complete.rs.html
@@ -1037,41 +1037,6 @@
 <a href="#1037" id="1037">1037</a>
 <a href="#1038" id="1038">1038</a>
 <a href="#1039" id="1039">1039</a>
-<a href="#1040" id="1040">1040</a>
-<a href="#1041" id="1041">1041</a>
-<a href="#1042" id="1042">1042</a>
-<a href="#1043" id="1043">1043</a>
-<a href="#1044" id="1044">1044</a>
-<a href="#1045" id="1045">1045</a>
-<a href="#1046" id="1046">1046</a>
-<a href="#1047" id="1047">1047</a>
-<a href="#1048" id="1048">1048</a>
-<a href="#1049" id="1049">1049</a>
-<a href="#1050" id="1050">1050</a>
-<a href="#1051" id="1051">1051</a>
-<a href="#1052" id="1052">1052</a>
-<a href="#1053" id="1053">1053</a>
-<a href="#1054" id="1054">1054</a>
-<a href="#1055" id="1055">1055</a>
-<a href="#1056" id="1056">1056</a>
-<a href="#1057" id="1057">1057</a>
-<a href="#1058" id="1058">1058</a>
-<a href="#1059" id="1059">1059</a>
-<a href="#1060" id="1060">1060</a>
-<a href="#1061" id="1061">1061</a>
-<a href="#1062" id="1062">1062</a>
-<a href="#1063" id="1063">1063</a>
-<a href="#1064" id="1064">1064</a>
-<a href="#1065" id="1065">1065</a>
-<a href="#1066" id="1066">1066</a>
-<a href="#1067" id="1067">1067</a>
-<a href="#1068" id="1068">1068</a>
-<a href="#1069" id="1069">1069</a>
-<a href="#1070" id="1070">1070</a>
-<a href="#1071" id="1071">1071</a>
-<a href="#1072" id="1072">1072</a>
-<a href="#1073" id="1073">1073</a>
-<a href="#1074" id="1074">1074</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1103,7 +1068,6 @@
 
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::FileReader;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::FlatLister;
-<span class="kw">use </span><span class="kw">crate</span>::raw::oio::HierarchyLister;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::LazyReader;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::RangeReader;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::StreamableReader;
@@ -1440,33 +1404,18 @@
 
         <span class="kw">let </span>recursive = args.recursive();
 
-        <span class="kw">match </span>(
-            recursive,
-            cap.list_with_recursive,
-            cap.list_without_recursive,
-        ) {
-            <span class="comment">// - If service can both list_with_recursive and list_without_recursive
-            // - If recursive is true while services can list_with_recursive
-            // - If recursive is false while services can list_without_recursive
-            </span>(<span class="kw">_</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>) | (<span class="bool-val">true</span>, <span class="bool-val">true</span>, <span class="kw">_</span>) | (<span class="bool-val">false</span>, <span class="kw">_</span>, <span class="bool-val">true</span>) =&gt; {
+        <span class="kw">match </span>(recursive, cap.list_with_recursive) {
+            <span class="comment">// - If service can list_with_recursive
+            // - If recursive is false
+            </span>(<span class="kw">_</span>, <span class="bool-val">true</span>) | (<span class="bool-val">false</span>, <span class="kw">_</span>) =&gt; {
                 <span class="kw">let </span>(rp, p) = <span class="self">self</span>.inner.list(path, args).<span class="kw">await</span><span class="question-mark">?</span>;
                 <span class="prelude-val">Ok</span>((rp, CompleteLister::AlreadyComplete(p)))
             }
-            <span class="comment">// If services can&#39;t list_with_recursive nor list_without_recursive.
-            //
-            // It should be a service level bug.
-            </span>(<span class="kw">_</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; <span class="prelude-val">Err</span>(<span class="self">self</span>.new_unsupported_error(Operation::List)),
             <span class="comment">// If recursive is true but service can&#39;t list_with_recursive
-            </span>(<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="bool-val">true</span>) =&gt; {
+            </span>(<span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; {
                 <span class="kw">let </span>p = FlatLister::new(<span class="self">self</span>.inner.clone(), path);
                 <span class="prelude-val">Ok</span>((RpList::default(), CompleteLister::NeedFlat(p)))
             }
-            <span class="comment">// If recursive is false but service can&#39;t list_without_recursive
-            </span>(<span class="bool-val">false</span>, <span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; {
-                <span class="kw">let </span>(<span class="kw">_</span>, p) = <span class="self">self</span>.inner.list(path, args.with_recursive(<span class="bool-val">true</span>)).<span class="kw">await</span><span class="question-mark">?</span>;
-                <span class="kw">let </span>p = HierarchyLister::new(p, path);
-                <span class="prelude-val">Ok</span>((RpList::default(), CompleteLister::NeedHierarchy(p)))
-            }
         }
     }
 
@@ -1482,34 +1431,18 @@
 
         <span class="kw">let </span>recursive = args.recursive();
 
-        <span class="kw">match </span>(
-            recursive,
-            cap.list_with_recursive,
-            cap.list_without_recursive,
-        ) {
-            <span class="comment">// - If service can both list_with_recursive and list_without_recursive
-            // - If recursive is true while services can list_with_recursive
-            // - If recursive is false while services can list_without_recursive
-            </span>(<span class="kw">_</span>, <span class="bool-val">true</span>, <span class="bool-val">true</span>) | (<span class="bool-val">true</span>, <span class="bool-val">true</span>, <span class="kw">_</span>) | (<span class="bool-val">false</span>, <span class="kw">_</span>, <span class="bool-val">true</span>) =&gt; {
+        <span class="kw">match </span>(recursive, cap.list_with_recursive) {
+            <span class="comment">// - If service can both list_with_recursive
+            // - If recursive is false
+            </span>(<span class="kw">_</span>, <span class="bool-val">true</span>) | (<span class="bool-val">false</span>, <span class="kw">_</span>) =&gt; {
                 <span class="kw">let </span>(rp, p) = <span class="self">self</span>.inner.blocking_list(path, args)<span class="question-mark">?</span>;
                 <span class="prelude-val">Ok</span>((rp, CompleteLister::AlreadyComplete(p)))
             }
-            <span class="comment">// If services can&#39;t list_with_recursive nor list_without_recursive.
-            //
-            // It should be a service level bug.
-            </span>(<span class="kw">_</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; <span class="prelude-val">Err</span>(<span class="self">self</span>.new_unsupported_error(Operation::List)),
             <span class="comment">// If recursive is true but service can&#39;t list_with_recursive
-            </span>(<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="bool-val">true</span>) =&gt; {
+            </span>(<span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; {
                 <span class="kw">let </span>p = FlatLister::new(<span class="self">self</span>.inner.clone(), path);
                 <span class="prelude-val">Ok</span>((RpList::default(), CompleteLister::NeedFlat(p)))
             }
-            <span class="comment">// If recursive is false but service can&#39;t list_without_recursive
-            </span>(<span class="bool-val">false</span>, <span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; {
-                <span class="kw">let </span>(<span class="kw">_</span>, p) = <span class="self">self</span>.inner.blocking_list(path, args.with_recursive(<span class="bool-val">true</span>))<span class="question-mark">?</span>;
-                <span class="kw">let </span>p: HierarchyLister&lt;&lt;A <span class="kw">as </span>Accessor&gt;::BlockingLister&gt; =
-                    HierarchyLister::new(p, path);
-                <span class="prelude-val">Ok</span>((RpList::default(), CompleteLister::NeedHierarchy(p)))
-            }
         }
     }
 }
@@ -1812,7 +1745,6 @@
 <span class="kw">pub enum </span>CompleteLister&lt;A: Accessor, P&gt; {
     AlreadyComplete(P),
     NeedFlat(FlatLister&lt;Arc&lt;A&gt;, P&gt;),
-    NeedHierarchy(HierarchyLister&lt;P&gt;),
 }
 
 <span class="attr">#[async_trait]
@@ -1827,7 +1759,6 @@
         <span class="kw">match </span><span class="self">self </span>{
             AlreadyComplete(p) =&gt; p.poll_next(cx),
             NeedFlat(p) =&gt; p.poll_next(cx),
-            NeedHierarchy(p) =&gt; p.poll_next(cx),
         }
     }
 }
@@ -1843,7 +1774,6 @@
         <span class="kw">match </span><span class="self">self </span>{
             AlreadyComplete(p) =&gt; p.next(),
             NeedFlat(p) =&gt; p.next(),
-            NeedHierarchy(p) =&gt; p.next(),
         }
     }
 }
diff --git a/docs/rust/src/opendal/layers/immutable_index.rs.html b/docs/rust/src/opendal/layers/immutable_index.rs.html
index 950dadb3a..19f721c67 100644
--- a/docs/rust/src/opendal/layers/immutable_index.rs.html
+++ b/docs/rust/src/opendal/layers/immutable_index.rs.html
@@ -439,7 +439,6 @@
 <a href="#439" id="439">439</a>
 <a href="#440" id="440">440</a>
 <a href="#441" id="441">441</a>
-<a href="#442" id="442">442</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -598,7 +597,6 @@
         <span class="kw">let </span>cap = meta.full_capability_mut();
         cap.list = <span class="bool-val">true</span>;
         cap.list_with_recursive = <span class="bool-val">true</span>;
-        cap.list_without_recursive = <span class="bool-val">true</span>;
 
         meta
     }
diff --git a/docs/rust/src/opendal/layers/retry.rs.html b/docs/rust/src/opendal/layers/retry.rs.html
index 77eaedf38..29ea1d7e3 100644
--- a/docs/rust/src/opendal/layers/retry.rs.html
+++ b/docs/rust/src/opendal/layers/retry.rs.html
@@ -1425,7 +1425,6 @@
 <a href="#1425" id="1425">1425</a>
 <a href="#1426" id="1426">1426</a>
 <a href="#1427" id="1427">1427</a>
-<a href="#1428" id="1428">1428</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -2601,7 +2600,6 @@
             am.set_native_capability(Capability {
                 read: <span class="bool-val">true</span>,
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
                 batch: <span class="bool-val">true</span>,
                 ..Default::default()
diff --git a/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html b/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html
index 872b769ab..f4e28e6c1 100644
--- a/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html
+++ b/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html
@@ -375,73 +375,6 @@
 <a href="#375" id="375">375</a>
 <a href="#376" id="376">376</a>
 <a href="#377" id="377">377</a>
-<a href="#378" id="378">378</a>
-<a href="#379" id="379">379</a>
-<a href="#380" id="380">380</a>
-<a href="#381" id="381">381</a>
-<a href="#382" id="382">382</a>
-<a href="#383" id="383">383</a>
-<a href="#384" id="384">384</a>
-<a href="#385" id="385">385</a>
-<a href="#386" id="386">386</a>
-<a href="#387" id="387">387</a>
-<a href="#388" id="388">388</a>
-<a href="#389" id="389">389</a>
-<a href="#390" id="390">390</a>
-<a href="#391" id="391">391</a>
-<a href="#392" id="392">392</a>
-<a href="#393" id="393">393</a>
-<a href="#394" id="394">394</a>
-<a href="#395" id="395">395</a>
-<a href="#396" id="396">396</a>
-<a href="#397" id="397">397</a>
-<a href="#398" id="398">398</a>
-<a href="#399" id="399">399</a>
-<a href="#400" id="400">400</a>
-<a href="#401" id="401">401</a>
-<a href="#402" id="402">402</a>
-<a href="#403" id="403">403</a>
-<a href="#404" id="404">404</a>
-<a href="#405" id="405">405</a>
-<a href="#406" id="406">406</a>
-<a href="#407" id="407">407</a>
-<a href="#408" id="408">408</a>
-<a href="#409" id="409">409</a>
-<a href="#410" id="410">410</a>
-<a href="#411" id="411">411</a>
-<a href="#412" id="412">412</a>
-<a href="#413" id="413">413</a>
-<a href="#414" id="414">414</a>
-<a href="#415" id="415">415</a>
-<a href="#416" id="416">416</a>
-<a href="#417" id="417">417</a>
-<a href="#418" id="418">418</a>
-<a href="#419" id="419">419</a>
-<a href="#420" id="420">420</a>
-<a href="#421" id="421">421</a>
-<a href="#422" id="422">422</a>
-<a href="#423" id="423">423</a>
-<a href="#424" id="424">424</a>
-<a href="#425" id="425">425</a>
-<a href="#426" id="426">426</a>
-<a href="#427" id="427">427</a>
-<a href="#428" id="428">428</a>
-<a href="#429" id="429">429</a>
-<a href="#430" id="430">430</a>
-<a href="#431" id="431">431</a>
-<a href="#432" id="432">432</a>
-<a href="#433" id="433">433</a>
-<a href="#434" id="434">434</a>
-<a href="#435" id="435">435</a>
-<a href="#436" id="436">436</a>
-<a href="#437" id="437">437</a>
-<a href="#438" id="438">438</a>
-<a href="#439" id="439">439</a>
-<a href="#440" id="440">440</a>
-<a href="#441" id="441">441</a>
-<a href="#442" id="442">442</a>
-<a href="#443" id="443">443</a>
-<a href="#444" id="444">444</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -472,6 +405,7 @@
 <span class="kw">use </span>futures::FutureExt;
 
 <span class="kw">use </span><span class="kw">super</span>::Adapter;
+<span class="kw">use </span><span class="kw">crate</span>::raw::oio::HierarchyLister;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
@@ -513,8 +447,8 @@
     <span class="kw">type </span>BlockingReader = oio::Cursor;
     <span class="kw">type </span>Writer = KvWriter&lt;S&gt;;
     <span class="kw">type </span>BlockingWriter = KvWriter&lt;S&gt;;
-    <span class="kw">type </span>Lister = KvLister;
-    <span class="kw">type </span>BlockingLister = KvLister;
+    <span class="kw">type </span>Lister = HierarchyLister&lt;KvLister&gt;;
+    <span class="kw">type </span>BlockingLister = HierarchyLister&lt;KvLister&gt;;
 
     <span class="kw">fn </span>info(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; AccessorInfo {
         <span class="kw">let </span><span class="kw-2">mut </span>am: AccessorInfo = <span class="self">self</span>.kv.metadata().into();
@@ -533,14 +467,6 @@
             cap.delete = <span class="bool-val">true</span>;
         }
 
-        <span class="kw">if </span>cap.read &amp;&amp; cap.write {
-            cap.copy = <span class="bool-val">true</span>;
-        }
-
-        <span class="kw">if </span>cap.read &amp;&amp; cap.write &amp;&amp; cap.delete {
-            cap.rename = <span class="bool-val">true</span>;
-        }
-
         <span class="kw">if </span>cap.list {
             cap.list_with_recursive = <span class="bool-val">true</span>;
         }
@@ -633,83 +559,23 @@
         <span class="prelude-val">Ok</span>(RpDelete::default())
     }
 
-    <span class="kw">async fn </span>list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::Lister)&gt; {
+    <span class="kw">async fn </span>list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::Lister)&gt; {
         <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, path);
         <span class="kw">let </span>res = <span class="self">self</span>.kv.scan(<span class="kw-2">&amp;</span>p).<span class="kw">await</span><span class="question-mark">?</span>;
         <span class="kw">let </span>lister = KvLister::new(<span class="kw-2">&amp;</span><span class="self">self</span>.root, res);
+        <span class="kw">let </span>lister = HierarchyLister::new(lister, path, args.recursive());
 
         <span class="prelude-val">Ok</span>((RpList::default(), lister))
     }
 
-    <span class="kw">fn </span>blocking_list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::BlockingLister)&gt; {
+    <span class="kw">fn </span>blocking_list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::BlockingLister)&gt; {
         <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, path);
         <span class="kw">let </span>res = <span class="self">self</span>.kv.blocking_scan(<span class="kw-2">&amp;</span>p)<span class="question-mark">?</span>;
         <span class="kw">let </span>lister = KvLister::new(<span class="kw-2">&amp;</span><span class="self">self</span>.root, res);
+        <span class="kw">let </span>lister = HierarchyLister::new(lister, path, args.recursive());
 
         <span class="prelude-val">Ok</span>((RpList::default(), lister))
     }
-
-    <span class="kw">async fn </span>rename(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpRename) -&gt; <span class="prelude-ty">Result</span>&lt;RpRename&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.get(<span class="kw-2">&amp;</span>from).<span class="kw">await</span><span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.set(<span class="kw-2">&amp;</span>to, <span class="kw-2">&amp;</span>bs).<span class="kw">await</span><span class="question-mark">?</span>;
-
-        <span class="self">self</span>.kv.delete(<span class="kw-2">&amp;</span>from).<span class="kw">await</span><span class="question-mark">?</span>;
-        <span class="prelude-val">Ok</span>(RpRename::default())
-    }
-
-    <span class="kw">fn </span>blocking_rename(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpRename) -&gt; <span class="prelude-ty">Result</span>&lt;RpRename&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.blocking_get(<span class="kw-2">&amp;</span>from)<span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.blocking_set(<span class="kw-2">&amp;</span>to, <span class="kw-2">&amp;</span>bs)<span class="question-mark">?</span>;
-
-        <span class="self">self</span>.kv.blocking_delete(<span class="kw-2">&amp;</span>from)<span class="question-mark">?</span>;
-        <span class="prelude-val">Ok</span>(RpRename::default())
-    }
-
-    <span class="kw">async fn </span>copy(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpCopy) -&gt; <span class="prelude-ty">Result</span>&lt;RpCopy&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.get(<span class="kw-2">&amp;</span>from).<span class="kw">await</span><span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.set(<span class="kw-2">&amp;</span>to, <span class="kw-2">&amp;</span>bs).<span class="kw">await</span><span class="question-mark">?</span>;
-
-        <span class="prelude-val">Ok</span>(RpCopy::default())
-    }
-
-    <span class="kw">fn </span>blocking_copy(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpCopy) -&gt; <span class="prelude-ty">Result</span>&lt;RpCopy&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.blocking_get(<span class="kw-2">&amp;</span>from)<span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.blocking_set(<span class="kw-2">&amp;</span>to, <span class="kw-2">&amp;</span>bs)<span class="question-mark">?</span>;
-
-        <span class="prelude-val">Ok</span>(RpCopy::default())
-    }
 }
 
 <span class="kw">impl</span>&lt;S&gt; Backend&lt;S&gt;
diff --git a/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html b/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html
index 92b14cbc8..bc13fd392 100644
--- a/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html
+++ b/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html
@@ -400,70 +400,6 @@
 <a href="#400" id="400">400</a>
 <a href="#401" id="401">401</a>
 <a href="#402" id="402">402</a>
-<a href="#403" id="403">403</a>
-<a href="#404" id="404">404</a>
-<a href="#405" id="405">405</a>
-<a href="#406" id="406">406</a>
-<a href="#407" id="407">407</a>
-<a href="#408" id="408">408</a>
-<a href="#409" id="409">409</a>
-<a href="#410" id="410">410</a>
-<a href="#411" id="411">411</a>
-<a href="#412" id="412">412</a>
-<a href="#413" id="413">413</a>
-<a href="#414" id="414">414</a>
-<a href="#415" id="415">415</a>
-<a href="#416" id="416">416</a>
-<a href="#417" id="417">417</a>
-<a href="#418" id="418">418</a>
-<a href="#419" id="419">419</a>
-<a href="#420" id="420">420</a>
-<a href="#421" id="421">421</a>
-<a href="#422" id="422">422</a>
-<a href="#423" id="423">423</a>
-<a href="#424" id="424">424</a>
-<a href="#425" id="425">425</a>
-<a href="#426" id="426">426</a>
-<a href="#427" id="427">427</a>
-<a href="#428" id="428">428</a>
-<a href="#429" id="429">429</a>
-<a href="#430" id="430">430</a>
-<a href="#431" id="431">431</a>
-<a href="#432" id="432">432</a>
-<a href="#433" id="433">433</a>
-<a href="#434" id="434">434</a>
-<a href="#435" id="435">435</a>
-<a href="#436" id="436">436</a>
-<a href="#437" id="437">437</a>
-<a href="#438" id="438">438</a>
-<a href="#439" id="439">439</a>
-<a href="#440" id="440">440</a>
-<a href="#441" id="441">441</a>
-<a href="#442" id="442">442</a>
-<a href="#443" id="443">443</a>
-<a href="#444" id="444">444</a>
-<a href="#445" id="445">445</a>
-<a href="#446" id="446">446</a>
-<a href="#447" id="447">447</a>
-<a href="#448" id="448">448</a>
-<a href="#449" id="449">449</a>
-<a href="#450" id="450">450</a>
-<a href="#451" id="451">451</a>
-<a href="#452" id="452">452</a>
-<a href="#453" id="453">453</a>
-<a href="#454" id="454">454</a>
-<a href="#455" id="455">455</a>
-<a href="#456" id="456">456</a>
-<a href="#457" id="457">457</a>
-<a href="#458" id="458">458</a>
-<a href="#459" id="459">459</a>
-<a href="#460" id="460">460</a>
-<a href="#461" id="461">461</a>
-<a href="#462" id="462">462</a>
-<a href="#463" id="463">463</a>
-<a href="#464" id="464">464</a>
-<a href="#465" id="465">465</a>
-<a href="#466" id="466">466</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -494,6 +430,7 @@
 
 <span class="kw">use </span><span class="kw">super</span>::Adapter;
 <span class="kw">use </span><span class="kw">super</span>::Value;
+<span class="kw">use </span><span class="kw">crate</span>::raw::oio::HierarchyLister;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
@@ -529,8 +466,8 @@
     <span class="kw">type </span>BlockingReader = oio::Cursor;
     <span class="kw">type </span>Writer = KvWriter&lt;S&gt;;
     <span class="kw">type </span>BlockingWriter = KvWriter&lt;S&gt;;
-    <span class="kw">type </span>Lister = KvLister;
-    <span class="kw">type </span>BlockingLister = KvLister;
+    <span class="kw">type </span>Lister = HierarchyLister&lt;KvLister&gt;;
+    <span class="kw">type </span>BlockingLister = HierarchyLister&lt;KvLister&gt;;
 
     <span class="kw">fn </span>info(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; AccessorInfo {
         <span class="kw">let </span>kv_info = <span class="self">self</span>.kv.info();
@@ -563,13 +500,6 @@
             cap.list_with_recursive = <span class="bool-val">true</span>;
         }
 
-        <span class="kw">if </span>cap.read &amp;&amp; cap.write {
-            cap.copy = <span class="bool-val">true</span>;
-        }
-
-        <span class="kw">if </span>cap.read &amp;&amp; cap.write &amp;&amp; cap.delete {
-            cap.rename = <span class="bool-val">true</span>;
-        }
         cap.blocking = <span class="bool-val">true</span>;
 
         am.set_native_capability(cap);
@@ -658,81 +588,23 @@
         <span class="prelude-val">Ok</span>(RpDelete::default())
     }
 
-    <span class="kw">async fn </span>list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::Lister)&gt; {
+    <span class="kw">async fn </span>list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::Lister)&gt; {
         <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, path);
         <span class="kw">let </span>res = <span class="self">self</span>.kv.scan(<span class="kw-2">&amp;</span>p).<span class="kw">await</span><span class="question-mark">?</span>;
         <span class="kw">let </span>lister = KvLister::new(<span class="kw-2">&amp;</span><span class="self">self</span>.root, res);
+        <span class="kw">let </span>lister = HierarchyLister::new(lister, path, args.recursive());
 
         <span class="prelude-val">Ok</span>((RpList::default(), lister))
     }
 
-    <span class="kw">fn </span>blocking_list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::BlockingLister)&gt; {
+    <span class="kw">fn </span>blocking_list(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span class="self">Self</span>::BlockingLister)&gt; {
         <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, path);
         <span class="kw">let </span>res = <span class="self">self</span>.kv.blocking_scan(<span class="kw-2">&amp;</span>p)<span class="question-mark">?</span>;
         <span class="kw">let </span>lister = KvLister::new(<span class="kw-2">&amp;</span><span class="self">self</span>.root, res);
+        <span class="kw">let </span>lister = HierarchyLister::new(lister, path, args.recursive());
 
         <span class="prelude-val">Ok</span>((RpList::default(), lister))
     }
-
-    <span class="kw">async fn </span>rename(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpRename) -&gt; <span class="prelude-ty">Result</span>&lt;RpRename&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.get(<span class="kw-2">&amp;</span>from).<span class="kw">await</span><span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.set(<span class="kw-2">&amp;</span>to, bs).<span class="kw">await</span><span class="question-mark">?</span>;
-        <span class="self">self</span>.kv.delete(<span class="kw-2">&amp;</span>from).<span class="kw">await</span><span class="question-mark">?</span>;
-        <span class="prelude-val">Ok</span>(RpRename::default())
-    }
-
-    <span class="kw">fn </span>blocking_rename(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpRename) -&gt; <span class="prelude-ty">Result</span>&lt;RpRename&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.blocking_get(<span class="kw-2">&amp;</span>from)<span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.blocking_set(<span class="kw-2">&amp;</span>to, bs)<span class="question-mark">?</span>;
-        <span class="self">self</span>.kv.blocking_delete(<span class="kw-2">&amp;</span>from)<span class="question-mark">?</span>;
-        <span class="prelude-val">Ok</span>(RpRename::default())
-    }
-
-    <span class="kw">async fn </span>copy(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpCopy) -&gt; <span class="prelude-ty">Result</span>&lt;RpCopy&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.get(<span class="kw-2">&amp;</span>from).<span class="kw">await</span><span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.set(<span class="kw-2">&amp;</span>to, bs).<span class="kw">await</span><span class="question-mark">?</span>;
-
-        <span class="prelude-val">Ok</span>(RpCopy::default())
-    }
-
-    <span class="kw">fn </span>blocking_copy(<span class="kw-2">&amp;</span><span class="self">self</span>, from: <span class="kw-2">&amp;</span>str, to: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpCopy) -&gt; <span class="prelude-ty">Result</span>&lt;RpCopy&gt; {
-        <span class="kw">let </span>from = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, from);
-        <span class="kw">let </span>to = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, to);
-
-        <span class="kw">let </span>bs = <span class="kw">match </span><span class="self">self</span>.kv.blocking_get(<span class="kw-2">&amp;</span>from)<span class="question-mark">? </span>{
-            <span class="comment">// TODO: we can reuse the metadata in value to build content range.
-            </span><span class="prelude-val">Some</span>(bs) =&gt; bs,
-            <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(ErrorKind::NotFound, <span class="string">&quot;kv doesn&#39;t have this path&quot;</span>)),
-        };
-
-        <span class="self">self</span>.kv.blocking_set(<span class="kw-2">&amp;</span>to, bs)<span class="question-mark">?</span>;
-
-        <span class="prelude-val">Ok</span>(RpCopy::default())
-    }
 }
 
 <span class="kw">impl</span>&lt;S&gt; Backend&lt;S&gt;
diff --git a/docs/rust/src/opendal/raw/oio/list/flat_list.rs.html b/docs/rust/src/opendal/raw/oio/list/flat_list.rs.html
index 18d66bcd4..473669128 100644
--- a/docs/rust/src/opendal/raw/oio/list/flat_list.rs.html
+++ b/docs/rust/src/opendal/raw/oio/list/flat_list.rs.html
@@ -292,16 +292,6 @@
 <a href="#292" id="292">292</a>
 <a href="#293" id="293">293</a>
 <a href="#294" id="294">294</a>
-<a href="#295" id="295">295</a>
-<a href="#296" id="296">296</a>
-<a href="#297" id="297">297</a>
-<a href="#298" id="298">298</a>
-<a href="#299" id="299">299</a>
-<a href="#300" id="300">300</a>
-<a href="#301" id="301">301</a>
-<a href="#302" id="302">302</a>
-<a href="#303" id="303">303</a>
-<a href="#304" id="304">304</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -388,15 +378,6 @@
 {
     <span class="doccomment">/// Create a new flat lister
     </span><span class="kw">pub fn </span>new(acc: A, path: <span class="kw-2">&amp;</span>str) -&gt; FlatLister&lt;A, L&gt; {
-        <span class="attr">#[cfg(debug_assertions)]
-        </span>{
-            <span class="kw">let </span>meta = acc.info();
-            <span class="macro">debug_assert!</span>(
-                meta.full_capability().list_without_recursive,
-                <span class="string">&quot;service doesn&#39;t support list hierarchy, it must be a bug&quot;
-            </span>);
-        }
-
         FlatLister {
             acc: <span class="prelude-val">Some</span>(acc),
             root: path.to_string(),
@@ -558,7 +539,6 @@
         <span class="kw">fn </span>info(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; AccessorInfo {
             <span class="kw">let </span><span class="kw-2">mut </span>am = AccessorInfo::default();
             am.full_capability_mut().list = <span class="bool-val">true</span>;
-            am.full_capability_mut().list_without_recursive = <span class="bool-val">true</span>;
 
             am
         }
diff --git a/docs/rust/src/opendal/raw/oio/list/hierarchy_list.rs.html b/docs/rust/src/opendal/raw/oio/list/hierarchy_list.rs.html
index 0aa2719c7..2f2b93af5 100644
--- a/docs/rust/src/opendal/raw/oio/list/hierarchy_list.rs.html
+++ b/docs/rust/src/opendal/raw/oio/list/hierarchy_list.rs.html
@@ -227,6 +227,20 @@
 <a href="#227" id="227">227</a>
 <a href="#228" id="228">228</a>
 <a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -266,11 +280,12 @@
     lister: P,
     path: String,
     visited: HashSet&lt;String&gt;,
+    recursive: bool,
 }
 
 <span class="kw">impl</span>&lt;P&gt; HierarchyLister&lt;P&gt; {
     <span class="doccomment">/// Create a new hierarchy lister
-    </span><span class="kw">pub fn </span>new(lister: P, path: <span class="kw-2">&amp;</span>str) -&gt; HierarchyLister&lt;P&gt; {
+    </span><span class="kw">pub fn </span>new(lister: P, path: <span class="kw-2">&amp;</span>str, recursive: bool) -&gt; HierarchyLister&lt;P&gt; {
         <span class="kw">let </span>path = <span class="kw">if </span>path == <span class="string">&quot;/&quot; </span>{
             <span class="string">&quot;&quot;</span>.to_string()
         } <span class="kw">else </span>{
@@ -281,6 +296,7 @@
             lister,
             path,
             visited: HashSet::default(),
+            recursive,
         }
     }
 
@@ -304,6 +320,11 @@
             <span class="kw">return </span><span class="bool-val">false</span>;
         }
 
+        <span class="comment">// Don&#39;t return already visited path.
+        </span><span class="kw">if </span><span class="self">self</span>.visited.contains(e.path()) {
+            <span class="kw">return </span><span class="bool-val">false</span>;
+        }
+
         <span class="kw">let </span>prefix_len = <span class="self">self</span>.path.len();
 
         <span class="kw">let </span>idx = <span class="kw">if let </span><span class="prelude-val">Some</span>(idx) = e.path()[prefix_len..].find(<span class="string">&#39;/&#39;</span>) {
@@ -354,6 +375,9 @@
                 <span class="prelude-val">None </span>=&gt; <span class="kw">return </span>Poll::Ready(<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>)),
             };
 
+            <span class="kw">if </span><span class="self">self</span>.recursive {
+                <span class="kw">return </span>Poll::Ready(<span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(entry)));
+            }
             <span class="kw">if </span><span class="self">self</span>.keep_entry(<span class="kw-2">&amp;mut </span>entry) {
                 <span class="kw">return </span>Poll::Ready(<span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(entry)));
             }
@@ -369,6 +393,10 @@
                 <span class="prelude-val">None </span>=&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
             };
 
+            <span class="kw">if </span><span class="self">self</span>.recursive {
+                <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(entry));
+            }
+
             <span class="kw">if </span><span class="self">self</span>.keep_entry(<span class="kw-2">&amp;mut </span>entry) {
                 <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(entry));
             }
@@ -420,7 +448,7 @@
         <span class="kw">let </span>lister = MockLister::new(<span class="macro">vec!</span>[
             <span class="string">&quot;x/x/&quot;</span>, <span class="string">&quot;x/y/&quot;</span>, <span class="string">&quot;y/&quot;</span>, <span class="string">&quot;x/x/x&quot;</span>, <span class="string">&quot;y/y&quot;</span>, <span class="string">&quot;xy/&quot;</span>, <span class="string">&quot;z&quot;</span>, <span class="string">&quot;y/a&quot;</span>,
         ]);
-        <span class="kw">let </span><span class="kw-2">mut </span>lister = HierarchyLister::new(lister, <span class="string">&quot;&quot;</span>);
+        <span class="kw">let </span><span class="kw-2">mut </span>lister = HierarchyLister::new(lister, <span class="string">&quot;&quot;</span>, <span class="bool-val">false</span>);
 
         <span class="kw">let </span><span class="kw-2">mut </span>entries = Vec::default();
 
diff --git a/docs/rust/src/opendal/services/alluxio/backend.rs.html b/docs/rust/src/opendal/services/alluxio/backend.rs.html
index 829e846b3..0261af237 100644
--- a/docs/rust/src/opendal/services/alluxio/backend.rs.html
+++ b/docs/rust/src/opendal/services/alluxio/backend.rs.html
@@ -284,7 +284,6 @@
 <a href="#284" id="284">284</a>
 <a href="#285" id="285">285</a>
 <a href="#286" id="286">286</a>
-<a href="#287" id="287">287</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -491,7 +490,6 @@
                 delete: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/azblob/backend.rs.html b/docs/rust/src/opendal/services/azblob/backend.rs.html
index f439d0eaf..d0b1a2bf2 100644
--- a/docs/rust/src/opendal/services/azblob/backend.rs.html
+++ b/docs/rust/src/opendal/services/azblob/backend.rs.html
@@ -926,7 +926,6 @@
 <a href="#926" id="926">926</a>
 <a href="#927" id="927">927</a>
 <a href="#928" id="928">928</a>
-<a href="#929" id="929">929</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1504,7 +1503,6 @@
                 copy: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
 
                 presign: <span class="self">self</span>.has_sas_token,
diff --git a/docs/rust/src/opendal/services/azdls/backend.rs.html b/docs/rust/src/opendal/services/azdls/backend.rs.html
index fb1e41b8e..720daa367 100644
--- a/docs/rust/src/opendal/services/azdls/backend.rs.html
+++ b/docs/rust/src/opendal/services/azdls/backend.rs.html
@@ -484,7 +484,6 @@
 <a href="#484" id="484">484</a>
 <a href="#485" id="485">485</a>
 <a href="#486" id="486">486</a>
-<a href="#487" id="487">487</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -742,7 +741,6 @@
                 rename: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/azfile/backend.rs.html b/docs/rust/src/opendal/services/azfile/backend.rs.html
index bb5a1314d..f5f41ba31 100644
--- a/docs/rust/src/opendal/services/azfile/backend.rs.html
+++ b/docs/rust/src/opendal/services/azfile/backend.rs.html
@@ -433,7 +433,6 @@
 <a href="#433" id="433">433</a>
 <a href="#434" id="434">434</a>
 <a href="#435" id="435">435</a>
-<a href="#436" id="436">436</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -706,7 +705,6 @@
                 rename: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/b2/backend.rs.html b/docs/rust/src/opendal/services/b2/backend.rs.html
index 0e5d2b2eb..8568c5f3c 100644
--- a/docs/rust/src/opendal/services/b2/backend.rs.html
+++ b/docs/rust/src/opendal/services/b2/backend.rs.html
@@ -532,7 +532,6 @@
 <a href="#532" id="532">532</a>
 <a href="#533" id="533">533</a>
 <a href="#534" id="534">534</a>
-<a href="#535" id="535">535</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -845,7 +844,6 @@
                 list_with_limit: <span class="bool-val">true</span>,
                 list_with_start_after: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 presign: <span class="bool-val">true</span>,
                 presign_read: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/cos/backend.rs.html b/docs/rust/src/opendal/services/cos/backend.rs.html
index e6135a40c..46dd80a30 100644
--- a/docs/rust/src/opendal/services/cos/backend.rs.html
+++ b/docs/rust/src/opendal/services/cos/backend.rs.html
@@ -392,7 +392,6 @@
 <a href="#392" id="392">392</a>
 <a href="#393" id="393">393</a>
 <a href="#394" id="394">394</a>
-<a href="#395" id="395">395</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -683,7 +682,6 @@
                 copy: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
 
                 presign: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/dashmap/backend.rs.html b/docs/rust/src/opendal/services/dashmap/backend.rs.html
index 93414928e..d0f876de8 100644
--- a/docs/rust/src/opendal/services/dashmap/backend.rs.html
+++ b/docs/rust/src/opendal/services/dashmap/backend.rs.html
@@ -141,6 +141,14 @@
 <a href="#141" id="141">141</a>
 <a href="#142" id="142">142</a>
 <a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -159,7 +167,7 @@
 // under the License.
 
 </span><span class="kw">use </span>std::collections::HashMap;
-<span class="kw">use </span>std::fmt::Debug;
+<span class="kw">use </span>std::fmt::{Debug, Formatter};
 
 <span class="kw">use </span>async_trait::async_trait;
 <span class="kw">use </span>dashmap::DashMap;
@@ -205,11 +213,19 @@
 <span class="doccomment">/// Backend is used to serve `Accessor` support in dashmap.
 </span><span class="kw">pub type </span>DashmapBackend = typed_kv::Backend&lt;Adapter&gt;;
 
-<span class="attr">#[derive(Debug, Clone)]
+<span class="attr">#[derive(Clone)]
 </span><span class="kw">pub struct </span>Adapter {
     inner: DashMap&lt;String, typed_kv::Value&gt;,
 }
 
+<span class="kw">impl </span>Debug <span class="kw">for </span>Adapter {
+    <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>Formatter&lt;<span class="lifetime">&#39;_</span>&gt;) -&gt; std::fmt::Result {
+        f.debug_struct(<span class="string">&quot;DashmapAdapter&quot;</span>)
+            .field(<span class="string">&quot;size&quot;</span>, <span class="kw-2">&amp;</span><span class="self">self</span>.inner.len())
+            .finish_non_exhaustive()
+    }
+}
+
 <span class="attr">#[async_trait]
 </span><span class="kw">impl </span>typed_kv::Adapter <span class="kw">for </span>Adapter {
     <span class="kw">fn </span>info(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; typed_kv::Info {
diff --git a/docs/rust/src/opendal/services/dbfs/backend.rs.html b/docs/rust/src/opendal/services/dbfs/backend.rs.html
index e990b4129..6e3982252 100644
--- a/docs/rust/src/opendal/services/dbfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/dbfs/backend.rs.html
@@ -288,7 +288,6 @@
 <a href="#288" id="288">288</a>
 <a href="#289" id="289">289</a>
 <a href="#290" id="290">290</a>
-<a href="#291" id="291">291</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -468,7 +467,6 @@
                 rename: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/fs/backend.rs.html b/docs/rust/src/opendal/services/fs/backend.rs.html
index c1c7d5248..a6c4397fe 100644
--- a/docs/rust/src/opendal/services/fs/backend.rs.html
+++ b/docs/rust/src/opendal/services/fs/backend.rs.html
@@ -603,7 +603,6 @@
 <a href="#603" id="603">603</a>
 <a href="#604" id="604">604</a>
 <a href="#605" id="605">605</a>
-<a href="#606" id="606">606</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -871,7 +870,6 @@
                 delete: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 copy: <span class="bool-val">true</span>,
                 rename: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/ftp/backend.rs.html b/docs/rust/src/opendal/services/ftp/backend.rs.html
index 69f54fa1d..76218dcf7 100644
--- a/docs/rust/src/opendal/services/ftp/backend.rs.html
+++ b/docs/rust/src/opendal/services/ftp/backend.rs.html
@@ -542,7 +542,6 @@
 <a href="#542" id="542">542</a>
 <a href="#543" id="543">543</a>
 <a href="#544" id="544">544</a>
-<a href="#545" id="545">545</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -851,7 +850,6 @@
                 create_dir: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/gcs/backend.rs.html b/docs/rust/src/opendal/services/gcs/backend.rs.html
index e7ae84427..4e6cd7d8d 100644
--- a/docs/rust/src/opendal/services/gcs/backend.rs.html
+++ b/docs/rust/src/opendal/services/gcs/backend.rs.html
@@ -592,7 +592,6 @@
 <a href="#592" id="592">592</a>
 <a href="#593" id="593">593</a>
 <a href="#594" id="594">594</a>
-<a href="#595" id="595">595</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -943,7 +942,6 @@
                 list: <span class="bool-val">true</span>,
                 list_with_limit: <span class="bool-val">true</span>,
                 list_with_start_after: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
 
                 batch: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/gdrive/backend.rs.html b/docs/rust/src/opendal/services/gdrive/backend.rs.html
index d260e130b..45cc2684e 100644
--- a/docs/rust/src/opendal/services/gdrive/backend.rs.html
+++ b/docs/rust/src/opendal/services/gdrive/backend.rs.html
@@ -292,7 +292,6 @@
 <a href="#292" id="292">292</a>
 <a href="#293" id="293">293</a>
 <a href="#294" id="294">294</a>
-<a href="#295" id="295">295</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -353,7 +352,6 @@
                 read: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 write: <span class="bool-val">true</span>,
 
diff --git a/docs/rust/src/opendal/services/hdfs/backend.rs.html b/docs/rust/src/opendal/services/hdfs/backend.rs.html
index 5118ad843..c2be97592 100644
--- a/docs/rust/src/opendal/services/hdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/hdfs/backend.rs.html
@@ -551,7 +551,6 @@
 <a href="#551" id="551">551</a>
 <a href="#552" id="552">552</a>
 <a href="#553" id="553">553</a>
-<a href="#554" id="554">554</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -750,7 +749,6 @@
                 delete: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 rename: <span class="bool-val">true</span>,
                 blocking: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/huggingface/backend.rs.html b/docs/rust/src/opendal/services/huggingface/backend.rs.html
index bab39a4c4..d2a741161 100644
--- a/docs/rust/src/opendal/services/huggingface/backend.rs.html
+++ b/docs/rust/src/opendal/services/huggingface/backend.rs.html
@@ -340,7 +340,6 @@
 <a href="#340" id="340">340</a>
 <a href="#341" id="341">341</a>
 <a href="#342" id="342">342</a>
-<a href="#343" id="343">343</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -604,7 +603,6 @@
                 read_with_range: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
diff --git a/docs/rust/src/opendal/services/ipfs/backend.rs.html b/docs/rust/src/opendal/services/ipfs/backend.rs.html
index cb569001b..d6ac664eb 100644
--- a/docs/rust/src/opendal/services/ipfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/ipfs/backend.rs.html
@@ -461,7 +461,6 @@
 <a href="#461" id="461">461</a>
 <a href="#462" id="462">462</a>
 <a href="#463" id="463">463</a>
-<a href="#464" id="464">464</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -644,7 +643,6 @@
                 read_with_range: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/ipmfs/backend.rs.html b/docs/rust/src/opendal/services/ipmfs/backend.rs.html
index 12e542cdf..96ec8d776 100644
--- a/docs/rust/src/opendal/services/ipmfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/ipmfs/backend.rs.html
@@ -304,7 +304,6 @@
 <a href="#304" id="304">304</a>
 <a href="#305" id="305">305</a>
 <a href="#306" id="306">306</a>
-<a href="#307" id="307">307</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -391,7 +390,6 @@
                 delete: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/obs/backend.rs.html b/docs/rust/src/opendal/services/obs/backend.rs.html
index 573ec07b5..10b9440d2 100644
--- a/docs/rust/src/opendal/services/obs/backend.rs.html
+++ b/docs/rust/src/opendal/services/obs/backend.rs.html
@@ -402,7 +402,6 @@
 <a href="#402" id="402">402</a>
 <a href="#403" id="403">403</a>
 <a href="#404" id="404">404</a>
-<a href="#405" id="405">405</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -699,7 +698,6 @@
                 copy: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
 
                 presign: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/onedrive/backend.rs.html b/docs/rust/src/opendal/services/onedrive/backend.rs.html
index bee0f0a6c..a434e62bd 100644
--- a/docs/rust/src/opendal/services/onedrive/backend.rs.html
+++ b/docs/rust/src/opendal/services/onedrive/backend.rs.html
@@ -366,7 +366,6 @@
 <a href="#366" id="366">366</a>
 <a href="#367" id="367">367</a>
 <a href="#368" id="368">368</a>
-<a href="#369" id="369">369</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -449,7 +448,6 @@
                 delete: <span class="bool-val">true</span>,
                 create_dir: <span class="bool-val">true</span>,
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/oss/backend.rs.html b/docs/rust/src/opendal/services/oss/backend.rs.html
index 6a25e4cf0..06e971470 100644
--- a/docs/rust/src/opendal/services/oss/backend.rs.html
+++ b/docs/rust/src/opendal/services/oss/backend.rs.html
@@ -616,7 +616,6 @@
 <a href="#616" id="616">616</a>
 <a href="#617" id="617">617</a>
 <a href="#618" id="618">618</a>
-<a href="#619" id="619">619</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1044,7 +1043,6 @@
                 list: <span class="bool-val">true</span>,
                 list_with_limit: <span class="bool-val">true</span>,
                 list_with_start_after: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
 
                 presign: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/s3/backend.rs.html b/docs/rust/src/opendal/services/s3/backend.rs.html
index 01cc18788..8d74ecc95 100644
--- a/docs/rust/src/opendal/services/s3/backend.rs.html
+++ b/docs/rust/src/opendal/services/s3/backend.rs.html
@@ -1294,7 +1294,6 @@
 <a href="#1294" id="1294">1294</a>
 <a href="#1295" id="1295">1295</a>
 <a href="#1296" id="1296">1296</a>
-<a href="#1297" id="1297">1297</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -2313,7 +2312,6 @@
                 list_with_limit: <span class="bool-val">true</span>,
                 list_with_start_after: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 presign: <span class="bool-val">true</span>,
                 presign_stat: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/sftp/backend.rs.html b/docs/rust/src/opendal/services/sftp/backend.rs.html
index 392c0f8ce..e7d748130 100644
--- a/docs/rust/src/opendal/services/sftp/backend.rs.html
+++ b/docs/rust/src/opendal/services/sftp/backend.rs.html
@@ -544,7 +544,6 @@
 <a href="#544" id="544">544</a>
 <a href="#545" id="545">545</a>
 <a href="#546" id="546">546</a>
-<a href="#547" id="547">547</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -814,7 +813,6 @@
 
                 list: <span class="bool-val">true</span>,
                 list_with_limit: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 copy: <span class="self">self</span>.copyable,
                 rename: <span class="bool-val">true</span>,
diff --git a/docs/rust/src/opendal/services/swift/backend.rs.html b/docs/rust/src/opendal/services/swift/backend.rs.html
index 2a44bdd04..706165a8d 100644
--- a/docs/rust/src/opendal/services/swift/backend.rs.html
+++ b/docs/rust/src/opendal/services/swift/backend.rs.html
@@ -318,7 +318,6 @@
 <a href="#318" id="318">318</a>
 <a href="#319" id="319">319</a>
 <a href="#320" id="320">320</a>
-<a href="#321" id="321">321</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -558,7 +557,6 @@
                 delete: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
                 list_with_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
diff --git a/docs/rust/src/opendal/services/webdav/backend.rs.html b/docs/rust/src/opendal/services/webdav/backend.rs.html
index 3832e385b..f2cd4f2e3 100644
--- a/docs/rust/src/opendal/services/webdav/backend.rs.html
+++ b/docs/rust/src/opendal/services/webdav/backend.rs.html
@@ -623,7 +623,6 @@
 <a href="#623" id="623">623</a>
 <a href="#624" id="624">624</a>
 <a href="#625" id="625">625</a>
-<a href="#626" id="626">626</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -874,7 +873,6 @@
                 rename: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/webhdfs/backend.rs.html b/docs/rust/src/opendal/services/webhdfs/backend.rs.html
index 6af0102e4..846fd5970 100644
--- a/docs/rust/src/opendal/services/webhdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/webhdfs/backend.rs.html
@@ -548,7 +548,6 @@
 <a href="#548" id="548">548</a>
 <a href="#549" id="549">549</a>
 <a href="#550" id="550">550</a>
-<a href="#551" id="551">551</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -968,7 +967,6 @@
                 delete: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
-                list_without_recursive: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/types/capability.rs.html b/docs/rust/src/opendal/types/capability.rs.html
index d86de2488..ebba2a7ea 100644
--- a/docs/rust/src/opendal/types/capability.rs.html
+++ b/docs/rust/src/opendal/types/capability.rs.html
@@ -194,8 +194,6 @@
 <a href="#194" id="194">194</a>
 <a href="#195" id="195">195</a>
 <a href="#196" id="196">196</a>
-<a href="#197" id="197">197</a>
-<a href="#198" id="198">198</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -330,8 +328,6 @@
     </span><span class="kw">pub </span>list_with_start_after: bool,
     <span class="doccomment">/// If backend supports list with recursive.
     </span><span class="kw">pub </span>list_with_recursive: bool,
-    <span class="doccomment">/// If backend supports list without recursive.
-    </span><span class="kw">pub </span>list_without_recursive: bool,
 
     <span class="doccomment">/// If operator supports presign.
     </span><span class="kw">pub </span>presign: bool,
diff --git a/docs/services/atomicserver/index.html b/docs/services/atomicserver/index.html
index ae11a2983..40749914e 100644
--- a/docs/services/atomicserver/index.html
+++ b/docs/services/atomicserver/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">AtomicServer | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/atomicserver"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="cu [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/azblob/index.html b/docs/services/azblob/index.html
index cce5b8a3d..9110dee56 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/azdls/index.html b/docs/services/azdls/index.html
index 046c1d257..dd7aa166e 100644
--- a/docs/services/azdls/index.html
+++ b/docs/services/azdls/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Azdls | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/azdls"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/cacache/index.html b/docs/services/cacache/index.html
index 0680a0edc..976502031 100644
--- a/docs/services/cacache/index.html
+++ b/docs/services/cacache/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Cacache | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/cacache"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 69e9ccf51..1c71fd39a 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/d1/index.html b/docs/services/d1/index.html
index 67f737318..003159bc8 100644
--- a/docs/services/d1/index.html
+++ b/docs/services/d1/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">D1 | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/d1"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 571664fd0..f72f00b0e 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/dropbox/index.html b/docs/services/dropbox/index.html
index 53a01b43a..82bf20b43 100644
--- a/docs/services/dropbox/index.html
+++ b/docs/services/dropbox/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Dropbox | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/dropbox"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -15,8 +15,8 @@ Please notice its expiration.</li></ul><h4 class="anchor anchorWithStickyNavbar_
 please provide the following fields:</p><ul><li><code>refresh_token</code>: set the refresh_token for dropbox api</li><li><code>client_id</code>: set the client_id for dropbox api</li><li><code>client_secret</code>: set the client_secret for dropbox api</li></ul><p>OpenDAL is a library, it cannot do the first step of OAuth2 for you.
 You need to get authorization code from user by calling Dropbox&#x27;s authorize url
 and exchange it for refresh token.</p><p>Please refer to <a href="https://www.dropbox.com/developers/reference/oauth-guide" target="_blank" rel="noopener noreferrer">Dropbox OAuth2 Guide</a>
-for more information.</p><p>You can refer to <!-- -->[<code>DropboxBuilder</code>]<!-- -->&#x27;s docs for more information</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Bu [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+for more information.</p><p>You can refer to <!-- -->[<code>DropboxBuilder</code>]<!-- -->&#x27;s docs for more information</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Bu [...]
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/etcd/index.html b/docs/services/etcd/index.html
index d90ea6460..8b154bfab 100644
--- a/docs/services/etcd/index.html
+++ b/docs/services/etcd/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Etcd | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/etcd"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/foundationdb/index.html b/docs/services/foundationdb/index.html
index a889cb7ba..eb6e5e192 100644
--- a/docs/services/foundationdb/index.html
+++ b/docs/services/foundationdb/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">FoundationDB | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/foundationdb"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="cu [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 be7714cda..2e1d8ffcd 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 fad4037ff..a72e23697 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/gcs/index.html b/docs/services/gcs/index.html
index ab3e3f46e..513f89fa7 100644
--- a/docs/services/gcs/index.html
+++ b/docs/services/gcs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Gcs | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/gcs"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/gdrive/index.html b/docs/services/gdrive/index.html
index bdf283f8a..1da51661f 100644
--- a/docs/services/gdrive/index.html
+++ b/docs/services/gdrive/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Gdrive | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/gdrive"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -16,8 +16,8 @@ please provide the following fields:</p><ul><li><code>refresh_token</code>: set
 You need to get authorization code from user by calling GoogleDrive&#x27;s authorize url
 and exchange it for refresh token.</p><p>Make sure you have enabled Google Drive API in your Google Cloud Console.
 And your OAuth scope contains <code>https://www.googleapis.com/auth/drive</code>.</p><p>Please refer to <a href="https://developers.google.com/identity/protocols/oauth2/" target="_blank" rel="noopener noreferrer">GoogleDrive OAuth2 Flow</a>
-for more information.</p><p>You can refer to <!-- -->[<code>GdriveBuilder</code>]<!-- -->&#x27;s docs for more information</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Bui [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+for more information.</p><p>You can refer to <!-- -->[<code>GdriveBuilder</code>]<!-- -->&#x27;s docs for more information</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Bui [...]
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/ghac/index.html b/docs/services/ghac/index.html
index e91160b3f..3adfa6129 100644
--- a/docs/services/ghac/index.html
+++ b/docs/services/ghac/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">GHAC | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/ghac"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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 [...]
 configure the URL and credentials, or that the following environment has been setup correctly:</p><ul><li><code>ACTIONS_CACHE_URL</code></li><li><code>ACTIONS_RUNTIME_TOKEN</code></li></ul><p>They can be exposed by following action:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code cla [...]
 We provide a <code>enable_create_simulation()</code> to support this operation but may result unexpected side effects.</p><p>Also, <code>ghac</code> is a cache service which means the data store inside could
-be automatically evicted at any time.</p><h2 class="anchor anchorWithStickyNavbar_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 work dir for backend.</li></ul><p>Refer to <!-- -->[<code>GhacBuilder</code>]<!-- -->&#x27;s public API docs for more information.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a h [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+be automatically evicted at any time.</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 work dir for backend.</li></ul><p>Refer to <!-- -->[<code>GhacBuilder</code>]<!-- -->&#x27;s public API docs for more information.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a h [...]
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/gridfs/index.html b/docs/services/gridfs/index.html
index 6a5b869d4..f25dccc20 100644
--- a/docs/services/gridfs/index.html
+++ b/docs/services/gridfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Gridfs | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/gridfs"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 fba3f1d63..ed76e1490 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/http/index.html b/docs/services/http/index.html
index eeb496296..f547f068b 100644
--- a/docs/services/http/index.html
+++ b/docs/services/http/index.html
@@ -5,14 +5,14 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">HTTP | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/http"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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 [...]
-HTTP Server like nginx, caddy.</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>endpoint</code>: set the endpoint for http</li><li><code>root</code>: Set the work directory for backend</li></ul><p>You can refer to <!-- -->[<code>HttpBuilder</code>]<!-- -->&#x27;s docs for more information</p><h2 class="anchor an [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+HTTP Server like nginx, caddy.</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>endpoint</code>: set the endpoint for http</li><li><code>root</code>: Set the work directory for backend</li></ul><p>You can refer to <!-- -->[<code>HttpBuilder</code>]<!-- -->&#x27;s docs for more information</p><h2 class="anchor an [...]
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 57338d3b7..a50ff3650 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/ipmfs/index.html b/docs/services/ipmfs/index.html
index fca8fd0da..d30e542c1 100644
--- a/docs/services/ipmfs/index.html
+++ b/docs/services/ipmfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">IPMFS | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/ipmfs"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/libsql/index.html b/docs/services/libsql/index.html
index d4c66f560..f3d438544 100644
--- a/docs/services/libsql/index.html
+++ b/docs/services/libsql/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">LibSQL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/libsql"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/memcached/index.html b/docs/services/memcached/index.html
index c9436d5e1..e1859a0a3 100644
--- a/docs/services/memcached/index.html
+++ b/docs/services/memcached/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Memcached | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/memcached"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 18fb1c955..2dd4cf3a5 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/moka/index.html b/docs/services/moka/index.html
index 8919d45f5..1dbc63d4d 100644
--- a/docs/services/moka/index.html
+++ b/docs/services/moka/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Moka | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/moka"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/mongodb/index.html b/docs/services/mongodb/index.html
index 49920bc34..a165d4629 100644
--- a/docs/services/mongodb/index.html
+++ b/docs/services/mongodb/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">MongoDB | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/mongodb"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/mysql/index.html b/docs/services/mysql/index.html
index 349ec488f..c166b56b2 100644
--- a/docs/services/mysql/index.html
+++ b/docs/services/mysql/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">MySQL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/mysql"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/obs/index.html b/docs/services/obs/index.html
index dbc8aa3d4..ddbac3b54 100644
--- a/docs/services/obs/index.html
+++ b/docs/services/obs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Obs | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/obs"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/onedrive/index.html b/docs/services/onedrive/index.html
index 6c0cc601f..e093caccc 100644
--- a/docs/services/onedrive/index.html
+++ b/docs/services/onedrive/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">OneDrive | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/onedrive"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/oss/index.html b/docs/services/oss/index.html
index 2509a39d6..75573af72 100644
--- a/docs/services/oss/index.html
+++ b/docs/services/oss/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">OSS | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/oss"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/persy/index.html b/docs/services/persy/index.html
index 7e1e0f5de..bb99c5a4d 100644
--- a/docs/services/persy/index.html
+++ b/docs/services/persy/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Persy | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/persy"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/postgresql/index.html b/docs/services/postgresql/index.html
index d8885d3ff..b01c885b1 100644
--- a/docs/services/postgresql/index.html
+++ b/docs/services/postgresql/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">PostgreSQL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="curren [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/redb/index.html b/docs/services/redb/index.html
index 4521200e8..13135bf5d 100644
--- a/docs/services/redb/index.html
+++ b/docs/services/redb/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Redb | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/redb"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 6fcaf10a1..3bbda97b4 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 0ce180381..ed3a5f104 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 829e87ae4..98e8ff813 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 6ac4825c9..d32e9fd15 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 c1a1bbb1d..d1a8e47a7 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/sqlite/index.html b/docs/services/sqlite/index.html
index 646072049..16e44dcc9 100644
--- a/docs/services/sqlite/index.html
+++ b/docs/services/sqlite/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Sqlite | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/sqlite"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/supabase/index.html b/docs/services/supabase/index.html
index c5b03876d..881b50c20 100644
--- a/docs/services/supabase/index.html
+++ b/docs/services/supabase/index.html
@@ -5,15 +5,15 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Supabase | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/supabase"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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 [...]
 service_role_key(Secret key). The former one can only write public resources while the latter one
-can access all resources. Note that if you want to read public resources, do not set the key.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3><div class="l [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+can access all resources. Note that if you want to read public resources, do not set the key.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Builder">​</a></h3><div class="l [...]
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/swift/index.html b/docs/services/swift/index.html
index f69c8b23f..6ecd82d5a 100644
--- a/docs/services/swift/index.html
+++ b/docs/services/swift/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Swift | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/swift"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/tikv/index.html b/docs/services/tikv/index.html
index d2347a9e9..526c7820c 100644
--- a/docs/services/tikv/index.html
+++ b/docs/services/tikv/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">TiKV | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/tikv"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/vercel_artifacts/index.html b/docs/services/vercel_artifacts/index.html
index 18cbf918b..ead54c8cb 100644
--- a/docs/services/vercel_artifacts/index.html
+++ b/docs/services/vercel_artifacts/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Vercel Artifacts | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/vercel_artifacts"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" con [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/webdav/index.html b/docs/services/webdav/index.html
index b49ed5af5..a3c7ca1c5 100644
--- a/docs/services/webdav/index.html
+++ b/docs/services/webdav/index.html
@@ -5,14 +5,14 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">WebDAV | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/webdav"><meta data-rh="true" 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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 [...]
-Users can use <code>webdav</code> to connect those services.</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>endpoint</code>: set the endpoint for webdav</li><li><code>root</code>: Set the work directory for backend</li></ul><p>You can refer to <!-- -->[<code>WebdavBuilder</code>]<!-- -->&#x27;s docs for more i [...]
-<script src="/assets/js/runtime~main.72d71391.js"></script>
+Users can use <code>webdav</code> to connect those services.</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>endpoint</code>: set the endpoint for webdav</li><li><code>root</code>: Set the work directory for backend</li></ul><p>You can refer to <!-- -->[<code>WebdavBuilder</code>]<!-- -->&#x27;s docs for more i [...]
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.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 f5b5fc11f..d3bcfd446 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.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.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/download/index.html b/download/index.html
index af73e8c12..fc88c9c71 100644
--- a/download/index.html
+++ b/download/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Download | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/download"><meta data-rh="true" 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="true [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index a07adb10f..d7dec29a9 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.37680186.css">
-<link rel="preload" href="/assets/js/runtime~main.72d71391.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.c5993162.js" as="script">
 <link rel="preload" href="/assets/js/main.994a0327.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.72d71391.js"></script>
+<script src="/assets/js/runtime~main.c5993162.js"></script>
 <script src="/assets/js/main.994a0327.js"></script>
 </body>
 </html>
\ No newline at end of file