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

[incubator-opendal] branch gh-pages updated: deploy: 3760176346e2f14f99f34e530f15f52410d54f5f

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 cd49a949f deploy: 3760176346e2f14f99f34e530f15f52410d54f5f
cd49a949f is described below

commit cd49a949f88109e84c05f257b0811100c0206abf
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Wed Sep 6 03:09:19 2023 +0000

    deploy: 3760176346e2f14f99f34e530f15f52410d54f5f
---
 404.html                                           |   4 +-
 .../{054cd2fb.0fdc49f3.js => 054cd2fb.27ffe3b8.js} |   2 +-
 .../{093f5f04.5c77cdd6.js => 093f5f04.023ce88a.js} |   2 +-
 .../{136e1c50.d4230699.js => 136e1c50.24773eeb.js} |   2 +-
 .../{151cd40f.48c3ac2c.js => 151cd40f.616d8354.js} |   2 +-
 .../{1957547a.960242da.js => 1957547a.6b812d48.js} |   2 +-
 .../{1db64337.50a301b8.js => 1db64337.7fc6aff5.js} |   2 +-
 .../{22d8fa67.1e40b91e.js => 22d8fa67.bb2ebd0c.js} |   2 +-
 .../{29b208a4.55788688.js => 29b208a4.960c2b71.js} |   2 +-
 .../{2cbf1097.fe70b55e.js => 2cbf1097.ca3a8391.js} |   2 +-
 .../{434bbc94.b61ec229.js => 434bbc94.8045f704.js} |   2 +-
 .../{57a16c1d.6b4601a2.js => 57a16c1d.77cede19.js} |   2 +-
 .../{592d1076.bfed25ba.js => 592d1076.cf321b65.js} |   2 +-
 .../{5a65e608.9ec7f22a.js => 5a65e608.b7cc8cd4.js} |   2 +-
 .../{62a401e9.4c401c11.js => 62a401e9.2d43e889.js} |   2 +-
 .../{6eb7fe18.acf37797.js => 6eb7fe18.57369752.js} |   2 +-
 .../{7263c0b5.ca7f15df.js => 7263c0b5.8e08b831.js} |   2 +-
 .../{8b18d929.a522d108.js => 8b18d929.8c837ca2.js} |   2 +-
 .../{8cc9519e.c6b672b1.js => 8cc9519e.bbb7ffe5.js} |   2 +-
 .../{8f4159f2.63fc2665.js => 8f4159f2.b63b3941.js} |   2 +-
 .../{939f74f6.197d90ae.js => 939f74f6.3cffc9b7.js} |   2 +-
 .../{9fedeb09.d6a97a4c.js => 9fedeb09.94fdaefb.js} |   2 +-
 .../{a0405932.b32ba540.js => a0405932.f9d6e37d.js} |   2 +-
 .../{ab10c306.809e0ce2.js => ab10c306.ac57ae34.js} |   2 +-
 .../{ae4554eb.927093ad.js => ae4554eb.9d65c477.js} |   2 +-
 .../{b56f9725.a9bb82b1.js => b56f9725.b712fa87.js} |   2 +-
 .../{b9ae8b37.329a61d4.js => b9ae8b37.2887c093.js} |   2 +-
 .../{bb5b2057.14516b64.js => bb5b2057.fb0ae7a4.js} |   2 +-
 .../{c46c6b55.b6d514de.js => c46c6b55.fa9dc3b2.js} |   2 +-
 .../{c6ab695b.2f119f1f.js => c6ab695b.f7708fc9.js} |   2 +-
 .../{cc62039a.6b205c8c.js => cc62039a.87373183.js} |   2 +-
 .../{d3c0d8d5.36975e0d.js => d3c0d8d5.81dc5a98.js} |   2 +-
 .../{d5c31a96.b5fb4a1b.js => d5c31a96.9cd214d0.js} |   2 +-
 .../{ddccef4c.931a97fe.js => ddccef4c.7ee83a5a.js} |   2 +-
 .../{e892cec6.da896068.js => e892cec6.ee465ea7.js} |   2 +-
 .../{f1ca5a39.486f9915.js => f1ca5a39.8dfaf693.js} |   2 +-
 .../{fde7cc64.8bc389a5.js => fde7cc64.e56e1d3c.js} |   2 +-
 ...e~main.ce968d03.js => runtime~main.bb5b6511.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/tags/announcement/index.html                  |   4 +-
 blog/tags/index.html                               |   4 +-
 blog/tags/internal/index.html                      |   4 +-
 docs/category/contributing/index.html              |   4 +-
 docs/category/reference/index.html                 |   4 +-
 docs/category/services/index.html                  |   4 +-
 docs/contributing/committer/index.html             |   6 +-
 docs/contributing/podling-report/index.html        |   6 +-
 .../reference/generate_release_note/index.html     |   6 +-
 docs/contributing/reference/setup_gpg/index.html   |   6 +-
 docs/contributing/release/index.html               |   6 +-
 docs/contributing/verify/index.html                |   6 +-
 docs/cpp/annotated.html                            |   4 +-
 docs/cpp/classes.html                              |   9 +-
 ...es.html => classopendal_1_1Lister-members.html} |  34 +-
 docs/cpp/classopendal_1_1Lister.html               | 215 ++++++++++++
 ...pendal_1_1Lister_1_1ListerIterator-members.html |  94 ++++++
 .../classopendal_1_1Lister_1_1ListerIterator.html  | 366 +++++++++++++++++++++
 docs/cpp/classopendal_1_1Operator-members.html     |  27 +-
 docs/cpp/classopendal_1_1Operator.html             |  20 ++
 docs/cpp/classopendal_1_1Reader.html               |   2 +-
 docs/cpp/classopendal_1_1ReaderStream.html         |   1 +
 docs/cpp/functions.html                            |  59 ++++
 docs/cpp/functions_func.html                       |  79 ++++-
 docs/cpp/{inherits.html => functions_rela.html}    |  25 +-
 docs/cpp/{inherits.html => functions_type.html}    |  37 +--
 docs/cpp/hierarchy.html                            |  10 +-
 docs/cpp/index.html                                |   2 +-
 docs/cpp/inherit_graph_1.map                       |   2 +-
 docs/cpp/inherit_graph_1.md5                       |   2 +-
 docs/cpp/inherit_graph_1.svg                       |  12 +-
 docs/cpp/inherit_graph_2.map                       |   2 +-
 docs/cpp/inherit_graph_2.md5                       |   2 +-
 docs/cpp/inherit_graph_2.svg                       |  12 +-
 docs/cpp/inherit_graph_3.map                       |   3 +-
 docs/cpp/inherit_graph_3.md5                       |   2 +-
 docs/cpp/inherit_graph_3.svg                       |  29 +-
 docs/cpp/inherit_graph_4.map                       |   3 +-
 docs/cpp/inherit_graph_4.md5                       |   2 +-
 docs/cpp/inherit_graph_4.svg                       |  29 +-
 .../{inherit_graph_3.map => inherit_graph_5.map}   |   0
 .../{inherit_graph_3.md5 => inherit_graph_5.md5}   |   0
 .../{inherit_graph_3.svg => inherit_graph_5.svg}   |   0
 .../{inherit_graph_4.map => inherit_graph_6.map}   |   0
 docs/cpp/inherit_graph_6.md5                       |   1 +
 .../{inherit_graph_4.svg => inherit_graph_6.svg}   |   8 +-
 docs/cpp/inherits.html                             |  12 +-
 docs/cpp/menudata.js                               |  23 +-
 docs/cpp/namespaceopendal.html                     |   3 +
 docs/cpp/namespaces.html                           |   4 +-
 docs/cpp/opendal_8hpp.html                         |   6 +
 docs/cpp/opendal_8hpp_source.html                  | 212 ++++++++----
 docs/cpp/search/all_1.js                           |   8 +-
 docs/cpp/search/all_10.html                        |  37 +++
 docs/cpp/search/all_10.js                          |   4 +
 docs/cpp/search/all_11.html                        |  37 +++
 docs/cpp/search/{all_e.js => all_11.js}            |   2 +-
 docs/cpp/search/all_12.html                        |  37 +++
 docs/cpp/search/{all_f.js => all_12.js}            |   2 +-
 docs/cpp/search/all_2.js                           |   8 +-
 docs/cpp/search/all_3.js                           |   5 +-
 docs/cpp/search/all_4.js                           |   5 +-
 docs/cpp/search/all_5.js                           |   2 +-
 docs/cpp/search/all_6.js                           |   4 +-
 docs/cpp/search/all_7.js                           |   7 +-
 docs/cpp/search/all_8.js                           |   6 +-
 docs/cpp/search/all_9.js                           |   2 +-
 docs/cpp/search/all_a.js                           |  15 +-
 docs/cpp/search/all_b.js                           |   4 +-
 docs/cpp/search/all_c.js                           |  10 +-
 docs/cpp/search/all_d.js                           |   3 +-
 docs/cpp/search/all_e.js                           |   2 +-
 docs/cpp/search/all_f.js                           |   2 +-
 docs/cpp/search/classes_0.js                       |   2 +-
 docs/cpp/search/classes_1.js                       |   3 +-
 docs/cpp/search/classes_2.js                       |   2 +-
 docs/cpp/search/classes_3.js                       |   3 +-
 docs/cpp/search/classes_4.html                     |  37 +++
 docs/cpp/search/classes_4.js                       |   5 +
 docs/cpp/search/enums_0.js                         |   2 +-
 docs/cpp/search/enumvalues_0.js                    |   2 +-
 docs/cpp/search/enumvalues_1.js                    |   2 +-
 docs/cpp/search/enumvalues_2.js                    |   2 +-
 docs/cpp/search/files_0.js                         |   2 +-
 docs/cpp/search/files_1.js                         |   2 +-
 docs/cpp/search/functions_0.js                     |   2 +-
 docs/cpp/search/functions_1.js                     |   3 +-
 docs/cpp/search/functions_2.js                     |   3 +-
 docs/cpp/search/functions_3.js                     |   3 +-
 docs/cpp/search/functions_4.js                     |   2 +-
 docs/cpp/search/functions_5.js                     |   5 +-
 docs/cpp/search/functions_6.js                     |   3 +-
 docs/cpp/search/functions_7.js                     |   7 +-
 docs/cpp/search/functions_8.js                     |   7 +-
 docs/cpp/search/functions_9.js                     |   7 +-
 docs/cpp/search/functions_a.js                     |   3 +-
 docs/cpp/search/functions_b.html                   |  37 +++
 docs/cpp/search/{all_e.js => functions_b.js}       |   2 +-
 docs/cpp/search/functions_c.html                   |  37 +++
 docs/cpp/search/{all_f.js => functions_c.js}       |   2 +-
 docs/cpp/search/namespaces_0.js                    |   2 +-
 docs/cpp/search/pages_0.js                         |   2 +-
 docs/cpp/search/related_0.html                     |  37 +++
 docs/cpp/search/related_0.js                       |   4 +
 docs/cpp/search/searchdata.js                      |  30 +-
 docs/cpp/search/typedefs_0.html                    |  37 +++
 docs/cpp/search/typedefs_0.js                      |   4 +
 docs/cpp/search/typedefs_1.html                    |  37 +++
 docs/cpp/search/typedefs_1.js                      |   4 +
 docs/cpp/search/typedefs_2.html                    |  37 +++
 docs/cpp/search/typedefs_2.js                      |   4 +
 docs/cpp/search/typedefs_3.html                    |  37 +++
 docs/cpp/search/typedefs_3.js                      |   4 +
 docs/cpp/search/typedefs_4.html                    |  37 +++
 docs/cpp/search/typedefs_4.js                      |   4 +
 docs/cpp/search/variables_0.js                     |  10 +-
 docs/cpp/search/variables_1.js                     |   2 +-
 docs/cpp/search/variables_2.js                     |   2 +-
 docs/cpp/search/variables_3.js                     |   2 +-
 docs/cpp/search/variables_4.js                     |   2 +-
 docs/lua/classes/opendal.metadata.html             |   2 +-
 docs/lua/classes/opendal.operator.html             |   2 +-
 docs/lua/index.html                                |   2 +-
 docs/nodejs/classes/BlockingLister.html            |   4 +-
 docs/nodejs/classes/Entry.html                     |   4 +-
 docs/nodejs/classes/Lister.html                    |   4 +-
 docs/nodejs/classes/Metadata.html                  |  18 +-
 docs/nodejs/classes/Operator.html                  |  58 ++--
 docs/nodejs/interfaces/PresignedRequest.html       |   8 +-
 docs/overview/index.html                           |   6 +-
 docs/python/opendal.html                           |  74 ++---
 docs/python/search.js                              |   2 +-
 docs/services/azblob/index.html                    |   6 +-
 docs/services/azdfs/index.html                     |   6 +-
 docs/services/cos/index.html                       |   6 +-
 docs/services/dashmap/index.html                   |   6 +-
 docs/services/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/hdfs/index.html                      |   6 +-
 docs/services/http/index.html                      |   6 +-
 docs/services/ipfs/index.html                      |   6 +-
 docs/services/ipmfs/index.html                     |   6 +-
 docs/services/memcached/index.html                 |   6 +-
 docs/services/memory/index.html                    |   6 +-
 docs/services/moka/index.html                      |   6 +-
 docs/services/obs/index.html                       |   6 +-
 docs/services/oss/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/supabase/index.html                  |   6 +-
 docs/services/wasabi/index.html                    |   6 +-
 docs/services/webdav/index.html                    |   6 +-
 docs/services/webhdfs/index.html                   |   6 +-
 docs/vision/index.html                             |   6 +-
 download/index.html                                |   4 +-
 index.html                                         |   4 +-
 206 files changed, 1980 insertions(+), 584 deletions(-)

diff --git a/404.html b/404.html
index 574087c1b..402cfee8d 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/054cd2fb.0fdc49f3.js b/assets/js/054cd2fb.27ffe3b8.js
similarity index 98%
rename from assets/js/054cd2fb.0fdc49f3.js
rename to assets/js/054cd2fb.27ffe3b8.js
index 6a4713d41..87ecb8733 100644
--- a/assets/js/054cd2fb.0fdc49f3.js
+++ b/assets/js/054cd2fb.27ffe3b8.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/093f5f04.5c77cdd6.js b/assets/js/093f5f04.023ce88a.js
similarity index 98%
rename from assets/js/093f5f04.5c77cdd6.js
rename to assets/js/093f5f04.023ce88a.js
index a390ae894..7a39945d3 100644
--- a/assets/js/093f5f04.5c77cdd6.js
+++ b/assets/js/093f5f04.023ce88a.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 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/136e1c50.d4230699.js b/assets/js/136e1c50.24773eeb.js
similarity index 98%
rename from assets/js/136e1c50.d4230699.js
rename to assets/js/136e1c50.24773eeb.js
index f4d28fc22..769bd4f83 100644
--- a/assets/js/136e1c50.d4230699.js
+++ b/assets/js/136e1c50.24773eeb.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.48c3ac2c.js b/assets/js/151cd40f.616d8354.js
similarity index 98%
rename from assets/js/151cd40f.48c3ac2c.js
rename to assets/js/151cd40f.616d8354.js
index feff05d5f..2c69a4ef0 100644
--- a/assets/js/151cd40f.48c3ac2c.js
+++ b/assets/js/151cd40f.616d8354.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.960242da.js b/assets/js/1957547a.6b812d48.js
similarity index 83%
rename from assets/js/1957547a.960242da.js
rename to assets/js/1957547a.6b812d48.js
index bcaad13a2..0ac15c6d9 100644
--- a/assets/js/1957547a.960242da.js
+++ b/assets/js/1957547a.6b812d48.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.50a301b8.js b/assets/js/1db64337.7fc6aff5.js
similarity index 97%
rename from assets/js/1db64337.50a301b8.js
rename to assets/js/1db64337.7fc6aff5.js
index 8e8f44c4b..34bf68cf8 100644
--- a/assets/js/1db64337.50a301b8.js
+++ b/assets/js/1db64337.7fc6aff5.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retu [...]
\ No newline at end of file
diff --git a/assets/js/22d8fa67.1e40b91e.js b/assets/js/22d8fa67.bb2ebd0c.js
similarity index 84%
rename from assets/js/22d8fa67.1e40b91e.js
rename to assets/js/22d8fa67.bb2ebd0c.js
index 599bd7a63..7dd5f5ff7 100644
--- a/assets/js/22d8fa67.1e40b91e.js
+++ b/assets/js/22d8fa67.bb2ebd0c.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.55788688.js b/assets/js/29b208a4.960c2b71.js
similarity index 84%
rename from assets/js/29b208a4.55788688.js
rename to assets/js/29b208a4.960c2b71.js
index 6669bfe94..9d6a89d32 100644
--- a/assets/js/29b208a4.55788688.js
+++ b/assets/js/29b208a4.960c2b71.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.fe70b55e.js b/assets/js/2cbf1097.ca3a8391.js
similarity index 99%
rename from assets/js/2cbf1097.fe70b55e.js
rename to assets/js/2cbf1097.ca3a8391.js
index 6f57980be..94dc45e69 100644
--- a/assets/js/2cbf1097.fe70b55e.js
+++ b/assets/js/2cbf1097.ca3a8391.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/434bbc94.b61ec229.js b/assets/js/434bbc94.8045f704.js
similarity index 98%
rename from assets/js/434bbc94.b61ec229.js
rename to assets/js/434bbc94.8045f704.js
index 2ee453dc9..af76b8ac1 100644
--- a/assets/js/434bbc94.b61ec229.js
+++ b/assets/js/434bbc94.8045f704.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/57a16c1d.6b4601a2.js b/assets/js/57a16c1d.77cede19.js
similarity index 99%
rename from assets/js/57a16c1d.6b4601a2.js
rename to assets/js/57a16c1d.77cede19.js
index d372b8fcd..c4510ba30 100644
--- a/assets/js/57a16c1d.6b4601a2.js
+++ b/assets/js/57a16c1d.77cede19.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.bfed25ba.js b/assets/js/592d1076.cf321b65.js
similarity index 98%
rename from assets/js/592d1076.bfed25ba.js
rename to assets/js/592d1076.cf321b65.js
index e074838fc..96020c087 100644
--- a/assets/js/592d1076.bfed25ba.js
+++ b/assets/js/592d1076.cf321b65.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/5a65e608.9ec7f22a.js b/assets/js/5a65e608.b7cc8cd4.js
similarity index 99%
rename from assets/js/5a65e608.9ec7f22a.js
rename to assets/js/5a65e608.b7cc8cd4.js
index 4d7be56ee..aa42920e6 100644
--- a/assets/js/5a65e608.9ec7f22a.js
+++ b/assets/js/5a65e608.b7cc8cd4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6427],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>m});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6427],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>m});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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/62a401e9.4c401c11.js b/assets/js/62a401e9.2d43e889.js
similarity index 79%
rename from assets/js/62a401e9.4c401c11.js
rename to assets/js/62a401e9.2d43e889.js
index ab953bd79..fd4dbc68a 100644
--- a/assets/js/62a401e9.4c401c11.js
+++ b/assets/js/62a401e9.2d43e889.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6089],{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 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([[6089],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/6eb7fe18.acf37797.js b/assets/js/6eb7fe18.57369752.js
similarity index 98%
rename from assets/js/6eb7fe18.acf37797.js
rename to assets/js/6eb7fe18.57369752.js
index c2d1302b8..8d1618ff0 100644
--- a/assets/js/6eb7fe18.acf37797.js
+++ b/assets/js/6eb7fe18.57369752.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[3922],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});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([[3922],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});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/7263c0b5.ca7f15df.js b/assets/js/7263c0b5.8e08b831.js
similarity index 84%
rename from assets/js/7263c0b5.ca7f15df.js
rename to assets/js/7263c0b5.8e08b831.js
index 32670e5b4..998210b39 100644
--- a/assets/js/7263c0b5.ca7f15df.js
+++ b/assets/js/7263c0b5.8e08b831.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/8b18d929.a522d108.js b/assets/js/8b18d929.8c837ca2.js
similarity index 99%
rename from assets/js/8b18d929.a522d108.js
rename to assets/js/8b18d929.8c837ca2.js
index 5fdd2de29..30d1268f6 100644
--- a/assets/js/8b18d929.a522d108.js
+++ b/assets/js/8b18d929.8c837ca2.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6299],{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 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([[6299],{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 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/8cc9519e.c6b672b1.js b/assets/js/8cc9519e.bbb7ffe5.js
similarity index 96%
rename from assets/js/8cc9519e.c6b672b1.js
rename to assets/js/8cc9519e.bbb7ffe5.js
index 73200c206..4812b6a51 100644
--- a/assets/js/8cc9519e.c6b672b1.js
+++ b/assets/js/8cc9519e.bbb7ffe5.js
@@ -1 +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
+"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.63fc2665.js b/assets/js/8f4159f2.b63b3941.js
similarity index 84%
rename from assets/js/8f4159f2.63fc2665.js
rename to assets/js/8f4159f2.b63b3941.js
index 7cac15dfa..6f5d0aad2 100644
--- a/assets/js/8f4159f2.63fc2665.js
+++ b/assets/js/8f4159f2.b63b3941.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/939f74f6.197d90ae.js b/assets/js/939f74f6.3cffc9b7.js
similarity index 98%
rename from assets/js/939f74f6.197d90ae.js
rename to assets/js/939f74f6.3cffc9b7.js
index b76e516de..6a3385f04 100644
--- a/assets/js/939f74f6.197d90ae.js
+++ b/assets/js/939f74f6.3cffc9b7.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/9fedeb09.d6a97a4c.js b/assets/js/9fedeb09.94fdaefb.js
similarity index 97%
rename from assets/js/9fedeb09.d6a97a4c.js
rename to assets/js/9fedeb09.94fdaefb.js
index 7c46cf3c4..301b70038 100644
--- a/assets/js/9fedeb09.d6a97a4c.js
+++ b/assets/js/9fedeb09.94fdaefb.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[9782],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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([[9782],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(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/a0405932.b32ba540.js b/assets/js/a0405932.f9d6e37d.js
similarity index 99%
rename from assets/js/a0405932.b32ba540.js
rename to assets/js/a0405932.f9d6e37d.js
index 34e87edc2..fdc24c04b 100644
--- a/assets/js/a0405932.b32ba540.js
+++ b/assets/js/a0405932.f9d6e37d.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/ab10c306.809e0ce2.js b/assets/js/ab10c306.ac57ae34.js
similarity index 96%
rename from assets/js/ab10c306.809e0ce2.js
rename to assets/js/ab10c306.ac57ae34.js
index d2ac2fcd0..a279950f3 100644
--- a/assets/js/ab10c306.809e0ce2.js
+++ b/assets/js/ab10c306.ac57ae34.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[380],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[380],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/ae4554eb.927093ad.js b/assets/js/ae4554eb.9d65c477.js
similarity index 97%
rename from assets/js/ae4554eb.927093ad.js
rename to assets/js/ae4554eb.9d65c477.js
index 9b3d3ad14..9f9485f13 100644
--- a/assets/js/ae4554eb.927093ad.js
+++ b/assets/js/ae4554eb.9d65c477.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6983],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6983],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/b56f9725.a9bb82b1.js b/assets/js/b56f9725.b712fa87.js
similarity index 89%
rename from assets/js/b56f9725.a9bb82b1.js
rename to assets/js/b56f9725.b712fa87.js
index 465c506ce..88579c439 100644
--- a/assets/js/b56f9725.a9bb82b1.js
+++ b/assets/js/b56f9725.b712fa87.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/b9ae8b37.329a61d4.js b/assets/js/b9ae8b37.2887c093.js
similarity index 98%
rename from assets/js/b9ae8b37.329a61d4.js
rename to assets/js/b9ae8b37.2887c093.js
index f077e71c2..8ce46b803 100644
--- a/assets/js/b9ae8b37.329a61d4.js
+++ b/assets/js/b9ae8b37.2887c093.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6578],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=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 r(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([[6578],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=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 r(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/bb5b2057.14516b64.js b/assets/js/bb5b2057.fb0ae7a4.js
similarity index 98%
rename from assets/js/bb5b2057.14516b64.js
rename to assets/js/bb5b2057.fb0ae7a4.js
index 7d46f43ee..9cd0c63d0 100644
--- a/assets/js/bb5b2057.14516b64.js
+++ b/assets/js/bb5b2057.fb0ae7a4.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/c46c6b55.b6d514de.js b/assets/js/c46c6b55.fa9dc3b2.js
similarity index 98%
rename from assets/js/c46c6b55.b6d514de.js
rename to assets/js/c46c6b55.fa9dc3b2.js
index 2b21b18d5..a77e633f3 100644
--- a/assets/js/c46c6b55.b6d514de.js
+++ b/assets/js/c46c6b55.fa9dc3b2.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.2f119f1f.js b/assets/js/c6ab695b.f7708fc9.js
similarity index 85%
rename from assets/js/c6ab695b.2f119f1f.js
rename to assets/js/c6ab695b.f7708fc9.js
index d88ec1735..8a9c7a00f 100644
--- a/assets/js/c6ab695b.2f119f1f.js
+++ b/assets/js/c6ab695b.f7708fc9.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7289],{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([[7289],{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/cc62039a.6b205c8c.js b/assets/js/cc62039a.87373183.js
similarity index 99%
rename from assets/js/cc62039a.6b205c8c.js
rename to assets/js/cc62039a.87373183.js
index ab8c7d1a4..d05da2e3a 100644
--- a/assets/js/cc62039a.6b205c8c.js
+++ b/assets/js/cc62039a.87373183.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1011],{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([[1011],{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/d3c0d8d5.36975e0d.js b/assets/js/d3c0d8d5.81dc5a98.js
similarity index 98%
rename from assets/js/d3c0d8d5.36975e0d.js
rename to assets/js/d3c0d8d5.81dc5a98.js
index e45a229b4..20686c296 100644
--- a/assets/js/d3c0d8d5.36975e0d.js
+++ b/assets/js/d3c0d8d5.81dc5a98.js
@@ -1 +1 @@
-"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
+"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/d5c31a96.b5fb4a1b.js b/assets/js/d5c31a96.9cd214d0.js
similarity index 95%
rename from assets/js/d5c31a96.b5fb4a1b.js
rename to assets/js/d5c31a96.9cd214d0.js
index ff9e430dc..34a015a5e 100644
--- a/assets/js/d5c31a96.b5fb4a1b.js
+++ b/assets/js/d5c31a96.9cd214d0.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2379],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2379],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retu [...]
\ No newline at end of file
diff --git a/assets/js/ddccef4c.931a97fe.js b/assets/js/ddccef4c.7ee83a5a.js
similarity index 98%
rename from assets/js/ddccef4c.931a97fe.js
rename to assets/js/ddccef4c.7ee83a5a.js
index 1a4a462f1..91123c6a2 100644
--- a/assets/js/ddccef4c.931a97fe.js
+++ b/assets/js/ddccef4c.7ee83a5a.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.da896068.js b/assets/js/e892cec6.ee465ea7.js
similarity index 98%
rename from assets/js/e892cec6.da896068.js
rename to assets/js/e892cec6.ee465ea7.js
index 92eb7bbbb..8d19b69e3 100644
--- a/assets/js/e892cec6.da896068.js
+++ b/assets/js/e892cec6.ee465ea7.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.486f9915.js b/assets/js/f1ca5a39.8dfaf693.js
similarity index 98%
rename from assets/js/f1ca5a39.486f9915.js
rename to assets/js/f1ca5a39.8dfaf693.js
index 41f6e5952..5f2b86a8c 100644
--- a/assets/js/f1ca5a39.486f9915.js
+++ b/assets/js/f1ca5a39.8dfaf693.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/fde7cc64.8bc389a5.js b/assets/js/fde7cc64.e56e1d3c.js
similarity index 98%
rename from assets/js/fde7cc64.8bc389a5.js
rename to assets/js/fde7cc64.e56e1d3c.js
index c7c9bf6b5..0f36e700b 100644
--- a/assets/js/fde7cc64.8bc389a5.js
+++ b/assets/js/fde7cc64.e56e1d3c.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.ce968d03.js b/assets/js/runtime~main.bb5b6511.js
similarity index 81%
rename from assets/js/runtime~main.ce968d03.js
rename to assets/js/runtime~main.bb5b6511.js
index aadcff187..3e7d8a1c5 100644
--- a/assets/js/runtime~main.ce968d03.js
+++ b/assets/js/runtime~main.bb5b6511.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,f,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,f,b)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,a,c,f,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,f,b)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}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 eec6f696e..3d1d63c93 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 b1cb425db..984ac018b 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 39c544117..c3db4ed66 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 9859d4a7a..6363d5aa8 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 4a127aab1..49d12a32b 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 06030d719..1b2d5cd4c 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index b5580689c..625d58770 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 e6edb534a..2f82e440b 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/category/contributing/index.html b/docs/category/contributing/index.html
index 4fe25345c..b41b42e2e 100644
--- a/docs/category/contributing/index.html
+++ b/docs/category/contributing/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Contributing | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=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/contributing"><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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/category/reference/index.html b/docs/category/reference/index.html
index c79b1b15b..5497cd401 100644
--- a/docs/category/reference/index.html
+++ b/docs/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/docs/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="current" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/category/services/index.html b/docs/category/services/index.html
index ae56e1662..7cd479427 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/committer/index.html b/docs/contributing/committer/index.html
index 138d3b558..75dbd75c5 100644
--- a/docs/contributing/committer/index.html
+++ b/docs/contributing/committer/index.html
@@ -5,13 +5,13 @@
 <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/docs/contributing/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" co [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/podling-report/index.html b/docs/contributing/podling-report/index.html
index 0fa49fb84..8ed6bc12d 100644
--- a/docs/contributing/podling-report/index.html
+++ b/docs/contributing/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/docs/contributing/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_vers [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/reference/generate_release_note/index.html b/docs/contributing/reference/generate_release_note/index.html
index 95ab8cb0c..813b1762f 100644
--- a/docs/contributing/reference/generate_release_note/index.html
+++ b/docs/contributing/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/docs/contributing/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" name= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/reference/setup_gpg/index.html b/docs/contributing/reference/setup_gpg/index.html
index 32a7987e3..e56ef8af6 100644
--- a/docs/contributing/reference/setup_gpg/index.html
+++ b/docs/contributing/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/docs/contributing/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_version" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/release/index.html b/docs/contributing/release/index.html
index 1fc90bbac..a49d81ec7 100644
--- a/docs/contributing/release/index.html
+++ b/docs/contributing/release/index.html
@@ -5,7 +5,7 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">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/docs/contributing/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_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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -14,8 +14,8 @@
 how the release manager releases a new version in accordance with the Apache requirements.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction">​</a></h2><p><code>Source Release</code> is the key point which Apache values, and is also necessary for an ASF release.</p><p>Please remember that publishing software has legal consequences.</p><p>This [...]
 we will abandon that version and prepare for the next one.
 Our release page will only display ASF releases instead of GitHub Releases.</p><ul><li><code>opendal_version</code>: the version for opendal, like <code>0.36.0</code>.</li><li><code>release_version</code>: the version for voting, like <code>0.36.0-rc1</code>.</li><li><code>rc_version</code>: the minor version for voting, like <code>rc1</code>.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="create-an-asf-release">Create an ASF Release<a href="#create-an-asf-release" class="ha [...]
-please cancel the release for the current <code>release_version</code>, <em>increase th RC counting</em> and reinitiate a release with the new <code>release_version</code>.</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><ul><li><code>opendal_versio [...]
-<script src="/assets/js/runtime~main.ce968d03.js"></script>
+please cancel the release for the current <code>release_version</code>, <em>increase th RC counting</em> and reinitiate a release with the new <code>release_version</code>.</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><ul><li><code>opendal_versio [...]
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/verify/index.html b/docs/contributing/verify/index.html
index 9c2978bb1..7ad81e71a 100644
--- a/docs/contributing/verify/index.html
+++ b/docs/contributing/verify/index.html
@@ -5,15 +5,15 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Verify | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=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/contributing/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_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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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 [...]
 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.ce968d03.js"></script>
+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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/cpp/annotated.html b/docs/cpp/annotated.html
index dace2adb2..21d247b85 100644
--- a/docs/cpp/annotated.html
+++ b/docs/cpp/annotated.html
@@ -68,13 +68,15 @@ $(function() {
 </div><!--header-->
 <div class="contents">
 <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceopendal.html" target="_self">opendal</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structopendal_1_1Metadata.html" target="_self">Metadata</a></td><td class="desc">The metadata of a file or directory </td></tr>
 <tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structopendal_1_1Entry.html" target="_self">Entry</a></td><td class="desc">The entry of a file or directory </td></tr>
 <tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Operator.html" target="_self">Operator</a></td><td class="desc"><a class="el" href="classopendal_1_1Operator.html" title="Operator is the entry for all public APIs.">Operator</a> is the entry for all public APIs </td></tr>
 <tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Reader.html" target="_self">Reader</a></td><td class="desc"><a class="el" href="classopendal_1_1Reader.html" title="Reader is designed to read data from the operator.">Reader</a> is designed to read data from the operator </td></tr>
 <tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1ReaderStream.html" target="_self">ReaderStream</a></td><td class="desc"><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a> is a stream wrapper of <a class="el" href="classopendal_1_1Reader.html" t [...]
+<tr id="row_0_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_5_" class="arrow" onclick="toggleFolder('0_5_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Lister.html" target="_self">Lister</a></td><td class="desc"><a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a> is designed to list the entries [...]
+<tr id="row_0_5_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" target="_self">ListerIterator</a></td><td class="desc"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister.">ListerIterator</a> is an iterator of <a class="el" href="classopendal_1_1Lister.html" title="Lister is [...]
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
diff --git a/docs/cpp/classes.html b/docs/cpp/classes.html
index 51a26f0dc..63b813d11 100644
--- a/docs/cpp/classes.html
+++ b/docs/cpp/classes.html
@@ -67,18 +67,21 @@ $(function() {
 <div class="title">Class Index</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a></div>
+<div class="qindex"><a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a></div>
 <div class="classindex">
 <dl class="classindex even">
 <dt class="alphachar"><a name="letter_E">E</a></dt>
 <dd><a class="el" href="structopendal_1_1Entry.html">Entry</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
 <dl class="classindex odd">
+<dt class="alphachar"><a name="letter_L">L</a></dt>
+<dd><a class="el" href="classopendal_1_1Lister.html">Lister</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd><dd><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">Lister::ListerIterator</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
+<dl class="classindex even">
 <dt class="alphachar"><a name="letter_M">M</a></dt>
 <dd><a class="el" href="structopendal_1_1Metadata.html">Metadata</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
-<dl class="classindex even">
+<dl class="classindex odd">
 <dt class="alphachar"><a name="letter_O">O</a></dt>
 <dd><a class="el" href="classopendal_1_1Operator.html">Operator</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
-<dl class="classindex odd">
+<dl class="classindex even">
 <dt class="alphachar"><a name="letter_R">R</a></dt>
 <dd><a class="el" href="classopendal_1_1Reader.html">Reader</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd><dd><a class="el" href="classopendal_1_1ReaderStream.html">ReaderStream</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
 </div>
diff --git a/docs/cpp/classes.html b/docs/cpp/classopendal_1_1Lister-members.html
similarity index 63%
copy from docs/cpp/classes.html
copy to docs/cpp/classopendal_1_1Lister-members.html
index 51a26f0dc..8d2dd51e1 100644
--- a/docs/cpp/classes.html
+++ b/docs/cpp/classopendal_1_1Lister-members.html
@@ -5,7 +5,7 @@
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>OpenDAL Cpp Binding: Class Index</title>
+<title>OpenDAL Cpp Binding: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -47,7 +47,6 @@ $(function() {
 });
 /* @license-end */</script>
 <div id="main-nav"></div>
-</div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -62,27 +61,24 @@ $(function() {
 </iframe>
 </div>
 
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceopendal.html">opendal</a></li><li class="navelem"><a class="el" href="classopendal_1_1Lister.html">Lister</a></li>  </ul>
+</div>
+</div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">Class Index</div>  </div>
+<div class="title">opendal::Lister Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a></div>
-<div class="classindex">
-<dl class="classindex even">
-<dt class="alphachar"><a name="letter_E">E</a></dt>
-<dd><a class="el" href="structopendal_1_1Entry.html">Entry</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
-<dl class="classindex odd">
-<dt class="alphachar"><a name="letter_M">M</a></dt>
-<dd><a class="el" href="structopendal_1_1Metadata.html">Metadata</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
-<dl class="classindex even">
-<dt class="alphachar"><a name="letter_O">O</a></dt>
-<dd><a class="el" href="classopendal_1_1Operator.html">Operator</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
-<dl class="classindex odd">
-<dt class="alphachar"><a name="letter_R">R</a></dt>
-<dd><a class="el" href="classopendal_1_1Reader.html">Reader</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd><dd><a class="el" href="classopendal_1_1ReaderStream.html">ReaderStream</a> (<a class="el" href="namespaceopendal.html">opendal</a>)</dd></dl>
-</div>
-</div><!-- contents -->
+
+<p>This is the complete list of members for <a class="el" href="classopendal_1_1Lister.html">opendal::Lister</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2">begin</a>()</td><td class="entry"><a class="el" href="classopendal_1_1Lister.html">opendal::Lister</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7">end</a>()</td><td class="entry"><a class="el" href="classopendal_1_1Lister.html">opendal::Lister</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf">Lister</a>(rust::Box&lt; opendal::ffi::Lister &gt; &amp;&amp;lister)</td><td class="entry"><a class="el" href="classopendal_1_1Lister.html">opendal::Lister</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">next</a>()</td><td class="entry"><a class="el" href="classopendal_1_1Lister.html">opendal::Lister</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
diff --git a/docs/cpp/classopendal_1_1Lister.html b/docs/cpp/classopendal_1_1Lister.html
new file mode 100644
index 000000000..5afe19fbb
--- /dev/null
+++ b/docs/cpp/classopendal_1_1Lister.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>OpenDAL Cpp Binding: opendal::Lister Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">OpenDAL Cpp Binding
+   </div>
+   <div id="projectbrief">The Cpp binding for Apache OpenDAL</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceopendal.html">opendal</a></li><li class="navelem"><a class="el" href="classopendal_1_1Lister.html">Lister</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classopendal_1_1Lister-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">opendal::Lister Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a> is designed to list the entries of a directory.  
+ <a href="classopendal_1_1Lister.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="opendal_8hpp_source.html">opendal.hpp</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister.">ListerIterator</a> is an iterator of <a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a>.  <a href="classopendal_1_1Lister_1_1ListerIterator.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a225152ef3bd17697946f480518046fcf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf">Lister</a> (rust::Box&lt; opendal::ffi::Lister &gt; &amp;&amp;lister)</td></tr>
+<tr class="separator:a225152ef3bd17697946f480518046fcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a67448e82f1c4c087d0bafab7ba5108f8"><td class="memItemLeft" align="right" valign="top">std::optional&lt; <a class="el" href="structopendal_1_1Entry.html">Entry</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">next</a> ()</td></tr>
+<tr class="memdesc:a67448e82f1c4c087d0bafab7ba5108f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the next entry of the lister.  <a href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">More...</a><br /></td></tr>
+<tr class="separator:a67448e82f1c4c087d0bafab7ba5108f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a573ef941c31ac3af265b1e1446605aa2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2">begin</a> ()</td></tr>
+<tr class="separator:a573ef941c31ac3af265b1e1446605aa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f84fe66951f247b64c6171eba8ef8d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7">end</a> ()</td></tr>
+<tr class="separator:a2f84fe66951f247b64c6171eba8ef8d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p><a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a> is designed to list the entries of a directory. </p>
+<p>It provides next operation to get the next entry. You can also use it like an iterator. </p><div class="fragment"><div class="line"><span class="keyword">auto</span> lister = <span class="keyword">operator</span>.lister(<span class="stringliteral">&quot;dir/&quot;</span>);</div>
+<div class="line"><span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;entry : lister) {</div>
+<div class="line">  <span class="comment">// Do something with entry</span></div>
+<div class="line">}</div>
+</div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a225152ef3bd17697946f480518046fcf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a225152ef3bd17697946f480518046fcf">&#9670;&nbsp;</a></span>Lister()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">opendal::Lister::Lister </td>
+          <td>(</td>
+          <td class="paramtype">rust::Box&lt; opendal::ffi::Lister &gt; &amp;&amp;&#160;</td>
+          <td class="paramname"><em>lister</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a573ef941c31ac3af265b1e1446605aa2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a573ef941c31ac3af265b1e1446605aa2">&#9670;&nbsp;</a></span>begin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> opendal::Lister::begin </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a2f84fe66951f247b64c6171eba8ef8d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2f84fe66951f247b64c6171eba8ef8d7">&#9670;&nbsp;</a></span>end()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> opendal::Lister::end </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a67448e82f1c4c087d0bafab7ba5108f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a67448e82f1c4c087d0bafab7ba5108f8">&#9670;&nbsp;</a></span>next()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::optional&lt;<a class="el" href="structopendal_1_1Entry.html">Entry</a>&gt; opendal::Lister::next </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the next entry of the lister. </p>
+<dl class="section return"><dt>Returns</dt><dd>The next entry of the lister </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>/home/runner/work/incubator-opendal/incubator-opendal/bindings/cpp/include/<a class="el" href="opendal_8hpp_source.html">opendal.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/cpp/classopendal_1_1Lister_1_1ListerIterator-members.html b/docs/cpp/classopendal_1_1Lister_1_1ListerIterator-members.html
new file mode 100644
index 000000000..ebeb74db4
--- /dev/null
+++ b/docs/cpp/classopendal_1_1Lister_1_1ListerIterator-members.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>OpenDAL Cpp Binding: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">OpenDAL Cpp Binding
+   </div>
+   <div id="projectbrief">The Cpp binding for Apache OpenDAL</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceopendal.html">opendal</a></li><li class="navelem"><a class="el" href="classopendal_1_1Lister.html">Lister</a></li><li class="navelem"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">opendal::Lister::ListerIterator Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">difference_type</a> typedef</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">iterator_category</a> typedef</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ad42567fe562d05806c9ab86ac07f7945">Lister</a> class</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166">ListerIterator</a>(Lister &amp;lister)</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a3d996eb5068d50dcf827c378dfa85a4d">ListerIterator</a>(Lister &amp;lister, bool)</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90">operator!=</a>(const ListerIterator &amp;other) const</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15">operator*</a>()</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa">operator++</a>()</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8">pointer</a> typedef</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53">reference</a> typedef</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638">value_type</a> typedef</td><td class="entry"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/cpp/classopendal_1_1Lister_1_1ListerIterator.html b/docs/cpp/classopendal_1_1Lister_1_1ListerIterator.html
new file mode 100644
index 000000000..202e17f8f
--- /dev/null
+++ b/docs/cpp/classopendal_1_1Lister_1_1ListerIterator.html
@@ -0,0 +1,366 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>OpenDAL Cpp Binding: opendal::Lister::ListerIterator Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">OpenDAL Cpp Binding
+   </div>
+   <div id="projectbrief">The Cpp binding for Apache OpenDAL</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceopendal.html">opendal</a></li><li class="navelem"><a class="el" href="classopendal_1_1Lister.html">Lister</a></li><li class="navelem"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#friends">Friends</a> &#124;
+<a href="classopendal_1_1Lister_1_1ListerIterator-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">opendal::Lister::ListerIterator Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister.">ListerIterator</a> is an iterator of <a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a>.  
+ <a href="classopendal_1_1Lister_1_1ListerIterator.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="opendal_8hpp_source.html">opendal.hpp</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ada15a4395c8bc384db1f036095d4b94d"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">iterator_category</a> = std::input_iterator_tag</td></tr>
+<tr class="separator:ada15a4395c8bc384db1f036095d4b94d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af9d274811f7953981f65ae7c1de8e638"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638">value_type</a> = <a class="el" href="structopendal_1_1Entry.html">Entry</a></td></tr>
+<tr class="separator:af9d274811f7953981f65ae7c1de8e638"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a52f114d04a653ce28839bd74cd7f4822"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">difference_type</a> = std::ptrdiff_t</td></tr>
+<tr class="separator:a52f114d04a653ce28839bd74cd7f4822"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7d6a8ce5603507b8a4e4aa8f639933e8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8">pointer</a> = <a class="el" href="structopendal_1_1Entry.html">Entry</a> *</td></tr>
+<tr class="separator:a7d6a8ce5603507b8a4e4aa8f639933e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae250948d8aa8e89596d84000868b3a53"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53">reference</a> = <a class="el" href="structopendal_1_1Entry.html">Entry</a> &amp;</td></tr>
+<tr class="separator:ae250948d8aa8e89596d84000868b3a53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a48d53709ece77b321d6dbce6eaead166"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166">ListerIterator</a> (<a class="el" href="classopendal_1_1Lister.html">Lister</a> &amp;lister)</td></tr>
+<tr class="separator:a48d53709ece77b321d6dbce6eaead166"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a384eb9fa5edb3bf4006f5dac5a6aba15"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structopendal_1_1Entry.html">Entry</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15">operator*</a> ()</td></tr>
+<tr class="separator:a384eb9fa5edb3bf4006f5dac5a6aba15"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28acbed0253a87f8899634efca4784fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa">operator++</a> ()</td></tr>
+<tr class="separator:a28acbed0253a87f8899634efca4784fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a165806bfd933758670188ddb82899e90"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90">operator!=</a> (const <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> &amp;other) const</td></tr>
+<tr class="separator:a165806bfd933758670188ddb82899e90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a3d996eb5068d50dcf827c378dfa85a4d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a3d996eb5068d50dcf827c378dfa85a4d">ListerIterator</a> (<a class="el" href="classopendal_1_1Lister.html">Lister</a> &amp;lister, bool)</td></tr>
+<tr class="separator:a3d996eb5068d50dcf827c378dfa85a4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ad42567fe562d05806c9ab86ac07f7945"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ad42567fe562d05806c9ab86ac07f7945">Lister</a></td></tr>
+<tr class="separator:ad42567fe562d05806c9ab86ac07f7945"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister.">ListerIterator</a> is an iterator of <a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a>. </p>
+<dl class="section note"><dt>Note</dt><dd>It's an undefined behavior to make multiple iterators from one <a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a>. </dd></dl>
+</div><h2 class="groupheader">Member Typedef Documentation</h2>
+<a id="a52f114d04a653ce28839bd74cd7f4822"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a52f114d04a653ce28839bd74cd7f4822">&#9670;&nbsp;</a></span>difference_type</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">using <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">opendal::Lister::ListerIterator::difference_type</a> =  std::ptrdiff_t</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ada15a4395c8bc384db1f036095d4b94d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ada15a4395c8bc384db1f036095d4b94d">&#9670;&nbsp;</a></span>iterator_category</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">using <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">opendal::Lister::ListerIterator::iterator_category</a> =  std::input_iterator_tag</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a7d6a8ce5603507b8a4e4aa8f639933e8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7d6a8ce5603507b8a4e4aa8f639933e8">&#9670;&nbsp;</a></span>pointer</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">using <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8">opendal::Lister::ListerIterator::pointer</a> =  <a class="el" href="structopendal_1_1Entry.html">Entry</a> *</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae250948d8aa8e89596d84000868b3a53"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae250948d8aa8e89596d84000868b3a53">&#9670;&nbsp;</a></span>reference</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">using <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53">opendal::Lister::ListerIterator::reference</a> =  <a class="el" href="structopendal_1_1Entry.html">Entry</a> &amp;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="af9d274811f7953981f65ae7c1de8e638"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af9d274811f7953981f65ae7c1de8e638">&#9670;&nbsp;</a></span>value_type</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">using <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638">opendal::Lister::ListerIterator::value_type</a> =  <a class="el" href="structopendal_1_1Entry.html">Entry</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a48d53709ece77b321d6dbce6eaead166"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a48d53709ece77b321d6dbce6eaead166">&#9670;&nbsp;</a></span>ListerIterator() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">opendal::Lister::ListerIterator::ListerIterator </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classopendal_1_1Lister.html">Lister</a> &amp;&#160;</td>
+          <td class="paramname"><em>lister</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a3d996eb5068d50dcf827c378dfa85a4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3d996eb5068d50dcf827c378dfa85a4d">&#9670;&nbsp;</a></span>ListerIterator() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">opendal::Lister::ListerIterator::ListerIterator </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classopendal_1_1Lister.html">Lister</a> &amp;&#160;</td>
+          <td class="paramname"><em>lister</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname">&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a165806bfd933758670188ddb82899e90"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a165806bfd933758670188ddb82899e90">&#9670;&nbsp;</a></span>operator!=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool opendal::Lister::ListerIterator::operator!= </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> &amp;&#160;</td>
+          <td class="paramname"><em>other</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a384eb9fa5edb3bf4006f5dac5a6aba15"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a384eb9fa5edb3bf4006f5dac5a6aba15">&#9670;&nbsp;</a></span>operator*()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structopendal_1_1Entry.html">Entry</a> opendal::Lister::ListerIterator::operator* </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a28acbed0253a87f8899634efca4784fa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a28acbed0253a87f8899634efca4784fa">&#9670;&nbsp;</a></span>operator++()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a>&amp; opendal::Lister::ListerIterator::operator++ </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Friends And Related Function Documentation</h2>
+<a id="ad42567fe562d05806c9ab86ac07f7945"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad42567fe562d05806c9ab86ac07f7945">&#9670;&nbsp;</a></span>Lister</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">friend class <a class="el" href="classopendal_1_1Lister.html">Lister</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>/home/runner/work/incubator-opendal/incubator-opendal/bindings/cpp/include/<a class="el" href="opendal_8hpp_source.html">opendal.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
+</small></address>
+</body>
+</html>
diff --git a/docs/cpp/classopendal_1_1Operator-members.html b/docs/cpp/classopendal_1_1Operator-members.html
index 9b050b88b..14739243c 100644
--- a/docs/cpp/classopendal_1_1Operator-members.html
+++ b/docs/cpp/classopendal_1_1Operator-members.html
@@ -79,19 +79,20 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44">create_dir</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240">is_exist</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">list</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">Operator</a>()=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee">Operator</a>(std::string_view scheme, const std::unordered_map&lt; std::string, std::string &gt; &amp;config={})</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20">Operator</a>(const Operator &amp;)=delete</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a24a017a46004f6e3b70ce9daa1da2387">Operator</a>(Operator &amp;&amp;)=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">operator=</a>(const Operator &amp;)=delete</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de">operator=</a>(Operator &amp;&amp;)=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">read</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7">reader</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">remove</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">rename</a>(std::string_view src, std::string_view dst)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e">stat</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">write</a>(std::string_view path, const std::vector&lt; uint8_t &gt; &amp;data)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e">~Operator</a>()=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848">lister</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">Operator</a>()=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee">Operator</a>(std::string_view scheme, const std::unordered_map&lt; std::string, std::string &gt; &amp;config={})</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20">Operator</a>(const Operator &amp;)=delete</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a24a017a46004f6e3b70ce9daa1da2387">Operator</a>(Operator &amp;&amp;)=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">operator=</a>(const Operator &amp;)=delete</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de">operator=</a>(Operator &amp;&amp;)=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">read</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7">reader</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">remove</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">rename</a>(std::string_view src, std::string_view dst)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e">stat</a>(std::string_view path)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">write</a>(std::string_view path, const std::vector&lt; uint8_t &gt; &amp;data)</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e">~Operator</a>()=default</td><td class="entry"><a class="el" href="classopendal_1_1Operator.html">opendal::Operator</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/cpp/classopendal_1_1Operator.html b/docs/cpp/classopendal_1_1Operator.html
index 24f67a4ac..bde1cf9fa 100644
--- a/docs/cpp/classopendal_1_1Operator.html
+++ b/docs/cpp/classopendal_1_1Operator.html
@@ -130,6 +130,8 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:a6707d6095415cffa28ceb210368a30a0"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structopendal_1_1Entry.html">Entry</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">list</a> (std::string_view path)</td></tr>
 <tr class="memdesc:a6707d6095415cffa28ceb210368a30a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">List the entries of a directory.  <a href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">More...</a><br /></td></tr>
 <tr class="separator:a6707d6095415cffa28ceb210368a30a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a211bb0ef86d66d334cf47b9a16525848"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classopendal_1_1Lister.html">Lister</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848">lister</a> (std::string_view path)</td></tr>
+<tr class="separator:a211bb0ef86d66d334cf47b9a16525848"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p><a class="el" href="classopendal_1_1Operator.html" title="Operator is the entry for all public APIs.">Operator</a> is the entry for all public APIs. </p>
@@ -410,6 +412,24 @@ Public Member Functions</h2></td></tr>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>The entries of the directory </dd></dl>
 
+</div>
+</div>
+<a id="a211bb0ef86d66d334cf47b9a16525848"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a211bb0ef86d66d334cf47b9a16525848">&#9670;&nbsp;</a></span>lister()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classopendal_1_1Lister.html">Lister</a> opendal::Operator::lister </td>
+          <td>(</td>
+          <td class="paramtype">std::string_view&#160;</td>
+          <td class="paramname"><em>path</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
 </div>
 </div>
 <a id="abcd6aad18d31f28886def363cc630754"></a>
diff --git a/docs/cpp/classopendal_1_1Reader.html b/docs/cpp/classopendal_1_1Reader.html
index bf94d05a3..1c31ed870 100644
--- a/docs/cpp/classopendal_1_1Reader.html
+++ b/docs/cpp/classopendal_1_1Reader.html
@@ -99,7 +99,7 @@ Public Member Functions</h2></td></tr>
 <div class="textblock"><p><a class="el" href="classopendal_1_1Reader.html" title="Reader is designed to read data from the operator.">Reader</a> is designed to read data from the operator. </p>
 <p>It provides basic read and seek operations. If you want to use it like a stream, you can use <code><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a></code> instead. </p><div class="fragment"><div class="line"><span class="keyword">auto</span> reader = <span class="keyword">operator</span>.reader(<span class="stringliteral">&quot;path&quot;</span>);</div>
 <div class="line"><a class="code" href="classopendal_1_1ReaderStream.html">opendal::ReaderStream</a> stream(reader);</div>
-<div class="ttc" id="aclassopendal_1_1ReaderStream_html"><div class="ttname"><a href="classopendal_1_1ReaderStream.html">opendal::ReaderStream</a></div><div class="ttdoc">ReaderStream is a stream wrapper of Reader which can provide iostream interface.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:224</div></div>
+<div class="ttc" id="aclassopendal_1_1ReaderStream_html"><div class="ttname"><a href="classopendal_1_1ReaderStream.html">opendal::ReaderStream</a></div><div class="ttdoc">ReaderStream is a stream wrapper of Reader which can provide iostream interface.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:228</div></div>
 </div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
 <a id="ad82fa5e92679db05e182ca9a60afb421"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ad82fa5e92679db05e182ca9a60afb421">&#9670;&nbsp;</a></span>Reader()</h2>
diff --git a/docs/cpp/classopendal_1_1ReaderStream.html b/docs/cpp/classopendal_1_1ReaderStream.html
index bf61ecfdc..bb16fc094 100644
--- a/docs/cpp/classopendal_1_1ReaderStream.html
+++ b/docs/cpp/classopendal_1_1ReaderStream.html
@@ -93,6 +93,7 @@ Public Member Functions</h2></td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a> is a stream wrapper of <a class="el" href="classopendal_1_1Reader.html" title="Reader is designed to read data from the operator.">Reader</a> which can provide <code>iostream</code> interface. </p>
+<dl class="section note"><dt>Note</dt><dd>It's an undefined behavior to make multiple streams from one reader. </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
 <a id="af71bab51de8f4edfe8788313c93af433"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#af71bab51de8f4edfe8788313c93af433">&#9670;&nbsp;</a></span>ReaderStream()</h2>
diff --git a/docs/cpp/functions.html b/docs/cpp/functions.html
index 40e192f35..a3e594b49 100644
--- a/docs/cpp/functions.html
+++ b/docs/cpp/functions.html
@@ -72,6 +72,13 @@ $(function() {
 </ul>
 
 
+<h3><a id="index_b"></a>- b -</h3><ul>
+<li>begin()
+: <a class="el" href="classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2">opendal::Lister</a>
+</li>
+</ul>
+
+
 <h3><a id="index_c"></a>- c -</h3><ul>
 <li>cache_control
 : <a class="el" href="structopendal_1_1Metadata.html#a54aa48a42c283dae626fae2f15197ecd">opendal::Metadata</a>
@@ -97,7 +104,17 @@ $(function() {
 </ul>
 
 
+<h3><a id="index_d"></a>- d -</h3><ul>
+<li>difference_type
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">opendal::Lister::ListerIterator</a>
+</li>
+</ul>
+
+
 <h3><a id="index_e"></a>- e -</h3><ul>
+<li>end()
+: <a class="el" href="classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7">opendal::Lister</a>
+</li>
 <li>Entry()
 : <a class="el" href="structopendal_1_1Entry.html#a6d1eb12504c36cd820aa2f12a1a49bc1">opendal::Entry</a>
 </li>
@@ -111,6 +128,9 @@ $(function() {
 <li>is_exist()
 : <a class="el" href="classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240">opendal::Operator</a>
 </li>
+<li>iterator_category
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">opendal::Lister::ListerIterator</a>
+</li>
 </ul>
 
 
@@ -121,6 +141,16 @@ $(function() {
 <li>list()
 : <a class="el" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">opendal::Operator</a>
 </li>
+<li>Lister()
+: <a class="el" href="classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf">opendal::Lister</a>
+, <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ad42567fe562d05806c9ab86ac07f7945">opendal::Lister::ListerIterator</a>
+</li>
+<li>lister()
+: <a class="el" href="classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848">opendal::Operator</a>
+</li>
+<li>ListerIterator()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166">opendal::Lister::ListerIterator</a>
+</li>
 </ul>
 
 
@@ -131,10 +161,26 @@ $(function() {
 </ul>
 
 
+<h3><a id="index_n"></a>- n -</h3><ul>
+<li>next()
+: <a class="el" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">opendal::Lister</a>
+</li>
+</ul>
+
+
 <h3><a id="index_o"></a>- o -</h3><ul>
 <li>Operator()
 : <a class="el" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">opendal::Operator</a>
 </li>
+<li>operator!=()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90">opendal::Lister::ListerIterator</a>
+</li>
+<li>operator*()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15">opendal::Lister::ListerIterator</a>
+</li>
+<li>operator++()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa">opendal::Lister::ListerIterator</a>
+</li>
 <li>operator=()
 : <a class="el" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">opendal::Operator</a>
 </li>
@@ -145,6 +191,9 @@ $(function() {
 <li>path
 : <a class="el" href="structopendal_1_1Entry.html#a0a305260835f4c01e413282ea458a48e">opendal::Entry</a>
 </li>
+<li>pointer
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8">opendal::Lister::ListerIterator</a>
+</li>
 </ul>
 
 
@@ -162,6 +211,9 @@ $(function() {
 <li>ReaderStream()
 : <a class="el" href="classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433">opendal::ReaderStream</a>
 </li>
+<li>reference
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53">opendal::Lister::ListerIterator</a>
+</li>
 <li>remove()
 : <a class="el" href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">opendal::Operator</a>
 </li>
@@ -188,6 +240,13 @@ $(function() {
 </ul>
 
 
+<h3><a id="index_v"></a>- v -</h3><ul>
+<li>value_type
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638">opendal::Lister::ListerIterator</a>
+</li>
+</ul>
+
+
 <h3><a id="index_w"></a>- w -</h3><ul>
 <li>write()
 : <a class="el" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">opendal::Operator</a>
diff --git a/docs/cpp/functions_func.html b/docs/cpp/functions_func.html
index 5211f2621..6849ed938 100644
--- a/docs/cpp/functions_func.html
+++ b/docs/cpp/functions_func.html
@@ -63,34 +63,99 @@ $(function() {
 </div>
 
 <div class="contents">
-&#160;<ul>
+&#160;
+
+<h3><a id="index_a"></a>- a -</h3><ul>
 <li>available()
 : <a class="el" href="classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f">opendal::Operator</a>
 </li>
+</ul>
+
+
+<h3><a id="index_b"></a>- b -</h3><ul>
+<li>begin()
+: <a class="el" href="classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2">opendal::Lister</a>
+</li>
+</ul>
+
+
+<h3><a id="index_c"></a>- c -</h3><ul>
 <li>copy()
 : <a class="el" href="classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5">opendal::Operator</a>
 </li>
 <li>create_dir()
 : <a class="el" href="classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44">opendal::Operator</a>
 </li>
+</ul>
+
+
+<h3><a id="index_e"></a>- e -</h3><ul>
+<li>end()
+: <a class="el" href="classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7">opendal::Lister</a>
+</li>
 <li>Entry()
 : <a class="el" href="structopendal_1_1Entry.html#a6d1eb12504c36cd820aa2f12a1a49bc1">opendal::Entry</a>
 </li>
+</ul>
+
+
+<h3><a id="index_i"></a>- i -</h3><ul>
 <li>is_exist()
 : <a class="el" href="classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240">opendal::Operator</a>
 </li>
+</ul>
+
+
+<h3><a id="index_l"></a>- l -</h3><ul>
 <li>list()
 : <a class="el" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">opendal::Operator</a>
 </li>
+<li>Lister()
+: <a class="el" href="classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf">opendal::Lister</a>
+</li>
+<li>lister()
+: <a class="el" href="classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848">opendal::Operator</a>
+</li>
+<li>ListerIterator()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166">opendal::Lister::ListerIterator</a>
+</li>
+</ul>
+
+
+<h3><a id="index_m"></a>- m -</h3><ul>
 <li>Metadata()
 : <a class="el" href="structopendal_1_1Metadata.html#a3e4aaecc764fb2223d2eb79d10712f91">opendal::Metadata</a>
 </li>
+</ul>
+
+
+<h3><a id="index_n"></a>- n -</h3><ul>
+<li>next()
+: <a class="el" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">opendal::Lister</a>
+</li>
+</ul>
+
+
+<h3><a id="index_o"></a>- o -</h3><ul>
 <li>Operator()
 : <a class="el" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">opendal::Operator</a>
 </li>
+<li>operator!=()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90">opendal::Lister::ListerIterator</a>
+</li>
+<li>operator*()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15">opendal::Lister::ListerIterator</a>
+</li>
+<li>operator++()
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa">opendal::Lister::ListerIterator</a>
+</li>
 <li>operator=()
 : <a class="el" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">opendal::Operator</a>
 </li>
+</ul>
+
+
+<h3><a id="index_r"></a>- r -</h3><ul>
 <li>read()
 : <a class="el" href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">opendal::Operator</a>
 , <a class="el" href="classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c">opendal::Reader</a>
@@ -110,15 +175,27 @@ $(function() {
 <li>rename()
 : <a class="el" href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">opendal::Operator</a>
 </li>
+</ul>
+
+
+<h3><a id="index_s"></a>- s -</h3><ul>
 <li>seek()
 : <a class="el" href="classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7">opendal::Reader</a>
 </li>
 <li>stat()
 : <a class="el" href="classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e">opendal::Operator</a>
 </li>
+</ul>
+
+
+<h3><a id="index_w"></a>- w -</h3><ul>
 <li>write()
 : <a class="el" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">opendal::Operator</a>
 </li>
+</ul>
+
+
+<h3><a id="index__7E"></a>- ~ -</h3><ul>
 <li>~Operator()
 : <a class="el" href="classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e">opendal::Operator</a>
 </li>
diff --git a/docs/cpp/inherits.html b/docs/cpp/functions_rela.html
similarity index 66%
copy from docs/cpp/inherits.html
copy to docs/cpp/functions_rela.html
index 757fd0610..83e41c4fa 100644
--- a/docs/cpp/inherits.html
+++ b/docs/cpp/functions_rela.html
@@ -5,7 +5,7 @@
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>OpenDAL Cpp Binding: Class Hierarchy</title>
+<title>OpenDAL Cpp Binding: Class Members - Related Functions</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -62,25 +62,12 @@ $(function() {
 </iframe>
 </div>
 
-<div class="header">
-  <div class="headertitle">
-<div class="title">Class Hierarchy</div>  </div>
-</div><!--header-->
 <div class="contents">
-<div class="textblock">
-<p><a href="hierarchy.html">Go to the textual class hierarchy</a></p>
-</div><table border="0" cellspacing="10" cellpadding="0">
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_0.svg" width="127" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_1.svg" width="155" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_2.svg" width="150" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_3.svg" width="370" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_4.svg" width="419" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-</table>
+&#160;<ul>
+<li>Lister
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ad42567fe562d05806c9ab86ac07f7945">opendal::Lister::ListerIterator</a>
+</li>
+</ul>
 </div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/cpp/inherits.html b/docs/cpp/functions_type.html
similarity index 66%
copy from docs/cpp/inherits.html
copy to docs/cpp/functions_type.html
index 757fd0610..8cad2df8e 100644
--- a/docs/cpp/inherits.html
+++ b/docs/cpp/functions_type.html
@@ -5,7 +5,7 @@
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.9.1"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>OpenDAL Cpp Binding: Class Hierarchy</title>
+<title>OpenDAL Cpp Binding: Class Members - Typedefs</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -62,25 +62,24 @@ $(function() {
 </iframe>
 </div>
 
-<div class="header">
-  <div class="headertitle">
-<div class="title">Class Hierarchy</div>  </div>
-</div><!--header-->
 <div class="contents">
-<div class="textblock">
-<p><a href="hierarchy.html">Go to the textual class hierarchy</a></p>
-</div><table border="0" cellspacing="10" cellpadding="0">
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_0.svg" width="127" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_1.svg" width="155" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_2.svg" width="150" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_3.svg" width="370" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_4.svg" width="419" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
-</td></tr>
-</table>
+&#160;<ul>
+<li>difference_type
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">opendal::Lister::ListerIterator</a>
+</li>
+<li>iterator_category
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">opendal::Lister::ListerIterator</a>
+</li>
+<li>pointer
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8">opendal::Lister::ListerIterator</a>
+</li>
+<li>reference
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53">opendal::Lister::ListerIterator</a>
+</li>
+<li>value_type
+: <a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638">opendal::Lister::ListerIterator</a>
+</li>
+</ul>
 </div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/cpp/hierarchy.html b/docs/cpp/hierarchy.html
index 0aeab9f24..0b0068b1c 100644
--- a/docs/cpp/hierarchy.html
+++ b/docs/cpp/hierarchy.html
@@ -74,10 +74,12 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>boost::iostreams::device</b></td><td class="desc"></td></tr>
 <tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Reader.html" target="_self">opendal::Reader</a></td><td class="desc"><a class="el" href="classopendal_1_1Reader.html" title="Reader is designed to read data from the operator.">Reader</a> is designed to read data from the operator </td></tr>
 <tr id="row_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structopendal_1_1Entry.html" target="_self">opendal::Entry</a></td><td class="desc">The entry of a file or directory </td></tr>
-<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structopendal_1_1Metadata.html" target="_self">opendal::Metadata</a></td><td class="desc">The metadata of a file or directory </td></tr>
-<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Operator.html" target="_self">opendal::Operator</a></td><td class="desc"><a class="el" href="classopendal_1_1Operator.html" title="Operator is the entry for all public APIs.">Operator</a> is the entry for all public APIs </td></tr>
-<tr id="row_4_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_4_" class="arrow" onclick="toggleFolder('4_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>boost::iostreams::stream</b></td><td class="desc"></td></tr>
-<tr id="row_4_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1ReaderStream.html" target="_self">opendal::ReaderStream</a></td><td class="desc"><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a> is a stream wrapper of <a class="el" href="classope [...]
+<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Lister.html" target="_self">opendal::Lister</a></td><td class="desc"><a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a> is designed to list the entries of a directory </td></tr>
+<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" target="_self">opendal::Lister::ListerIterator</a></td><td class="desc"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister.">ListerIterator</a> is an iterator of <a class="el" href="classopendal_1_1Lis [...]
+<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structopendal_1_1Metadata.html" target="_self">opendal::Metadata</a></td><td class="desc">The metadata of a file or directory </td></tr>
+<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Operator.html" target="_self">opendal::Operator</a></td><td class="desc"><a class="el" href="classopendal_1_1Operator.html" title="Operator is the entry for all public APIs.">Operator</a> is the entry for all public APIs </td></tr>
+<tr id="row_6_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_6_" class="arrow" onclick="toggleFolder('6_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>boost::iostreams::stream</b></td><td class="desc"></td></tr>
+<tr id="row_6_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1ReaderStream.html" target="_self">opendal::ReaderStream</a></td><td class="desc"><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a> is a stream wrapper of <a class="el" href="classope [...]
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
diff --git a/docs/cpp/index.html b/docs/cpp/index.html
index de85888f9..fa895a28c 100644
--- a/docs/cpp/index.html
+++ b/docs/cpp/index.html
@@ -79,7 +79,7 @@ Example</h1>
 <div class="line">    op.write(<span class="stringliteral">&quot;test&quot;</span>, data);</div>
 <div class="line">    <span class="keyword">auto</span> result = op.read(<span class="stringliteral">&quot;test&quot;</span>);  <span class="comment">// result == data</span></div>
 <div class="line">}</div>
-<div class="ttc" id="aclassopendal_1_1Operator_html"><div class="ttname"><a href="classopendal_1_1Operator.html">opendal::Operator</a></div><div class="ttdoc">Operator is the entry for all public APIs.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:77</div></div>
+<div class="ttc" id="aclassopendal_1_1Operator_html"><div class="ttname"><a href="classopendal_1_1Operator.html">opendal::Operator</a></div><div class="ttdoc">Operator is the entry for all public APIs.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:78</div></div>
 <div class="ttc" id="aopendal_8hpp_html"><div class="ttname"><a href="opendal_8hpp.html">opendal.hpp</a></div></div>
 </div><!-- fragment --><h1><a class="anchor" id="autotoc_md2"></a>
 Build</h1>
diff --git a/docs/cpp/inherit_graph_1.map b/docs/cpp/inherit_graph_1.map
index 2727cf68c..38d5fa7f4 100644
--- a/docs/cpp/inherit_graph_1.map
+++ b/docs/cpp/inherit_graph_1.map
@@ -1,3 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$structopendal_1_1Metadata.html" title="The metadata of a file or directory." alt="" coords="5,5,149,32"/>
+<area shape="rect" id="node1" href="$classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory." alt="" coords="5,5,124,32"/>
 </map>
diff --git a/docs/cpp/inherit_graph_1.md5 b/docs/cpp/inherit_graph_1.md5
index a87f34809..dd0fffe72 100644
--- a/docs/cpp/inherit_graph_1.md5
+++ b/docs/cpp/inherit_graph_1.md5
@@ -1 +1 @@
-d26f21ff29aee5214bc0fd2b0ee5bbc0
\ No newline at end of file
+8fca8f0527b5ba1d3cb0be8eac0a68d8
\ No newline at end of file
diff --git a/docs/cpp/inherit_graph_1.svg b/docs/cpp/inherit_graph_1.svg
index 7a9ba88d8..a789cc46f 100644
--- a/docs/cpp/inherit_graph_1.svg
+++ b/docs/cpp/inherit_graph_1.svg
@@ -4,17 +4,17 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: Graphical Class Hierarchy Pages: 1 -->
-<svg width="116pt" height="28pt"
- viewBox="0.00 0.00 116.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="97pt" height="28pt"
+ viewBox="0.00 0.00 97.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 24)">
 <title>Graphical Class Hierarchy</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 112,-24 112,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 93,-24 93,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
-<g id="a_node1"><a xlink:href="structopendal_1_1Metadata.html" target="_top" xlink:title="The metadata of a file or directory.">
-<polygon fill="white" stroke="black" points="0,-0.5 0,-19.5 108,-19.5 108,-0.5 0,-0.5"/>
-<text text-anchor="middle" x="54" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::Metadata</text>
+<g id="a_node1"><a xlink:href="classopendal_1_1Lister.html" target="_top" xlink:title="Lister is designed to list the entries of a directory.">
+<polygon fill="white" stroke="black" points="0,-0.5 0,-19.5 89,-19.5 89,-0.5 0,-0.5"/>
+<text text-anchor="middle" x="44.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::Lister</text>
 </a>
 </g>
 </g>
diff --git a/docs/cpp/inherit_graph_2.map b/docs/cpp/inherit_graph_2.map
index 354764497..75227cac0 100644
--- a/docs/cpp/inherit_graph_2.map
+++ b/docs/cpp/inherit_graph_2.map
@@ -1,3 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classopendal_1_1Operator.html" title="Operator is the entry for all public APIs." alt="" coords="5,5,144,32"/>
+<area shape="rect" id="node1" href="$classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister." alt="" coords="5,5,216,32"/>
 </map>
diff --git a/docs/cpp/inherit_graph_2.md5 b/docs/cpp/inherit_graph_2.md5
index 84b2cb9c7..1aeff1768 100644
--- a/docs/cpp/inherit_graph_2.md5
+++ b/docs/cpp/inherit_graph_2.md5
@@ -1 +1 @@
-977f67bda05e140ab3788344993bb5c6
\ No newline at end of file
+0f26ffb1bcb7fe9c5a87318e388357ea
\ No newline at end of file
diff --git a/docs/cpp/inherit_graph_2.svg b/docs/cpp/inherit_graph_2.svg
index 6dc7150bf..07af264cb 100644
--- a/docs/cpp/inherit_graph_2.svg
+++ b/docs/cpp/inherit_graph_2.svg
@@ -4,17 +4,17 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: Graphical Class Hierarchy Pages: 1 -->
-<svg width="112pt" height="28pt"
- viewBox="0.00 0.00 112.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="166pt" height="28pt"
+ viewBox="0.00 0.00 166.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 24)">
 <title>Graphical Class Hierarchy</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 108,-24 108,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 162,-24 162,4 -4,4"/>
 <!-- Node0 -->
 <g id="node1" class="node">
 <title>Node0</title>
-<g id="a_node1"><a xlink:href="classopendal_1_1Operator.html" target="_top" xlink:title="Operator is the entry for all public APIs.">
-<polygon fill="white" stroke="black" points="0,-0.5 0,-19.5 104,-19.5 104,-0.5 0,-0.5"/>
-<text text-anchor="middle" x="52" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::Operator</text>
+<g id="a_node1"><a xlink:href="classopendal_1_1Lister_1_1ListerIterator.html" target="_top" xlink:title="ListerIterator is an iterator of Lister.">
+<polygon fill="white" stroke="black" points="0,-0.5 0,-19.5 158,-19.5 158,-0.5 0,-0.5"/>
+<text text-anchor="middle" x="79" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::Lister::ListerIterator</text>
 </a>
 </g>
 </g>
diff --git a/docs/cpp/inherit_graph_3.map b/docs/cpp/inherit_graph_3.map
index e97cb2853..2727cf68c 100644
--- a/docs/cpp/inherit_graph_3.map
+++ b/docs/cpp/inherit_graph_3.map
@@ -1,4 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" title=" " alt="" coords="5,5,188,32"/>
-<area shape="rect" id="node2" href="$classopendal_1_1Reader.html" title="Reader is designed to read data from the operator." alt="" coords="236,5,364,32"/>
+<area shape="rect" id="node1" href="$structopendal_1_1Metadata.html" title="The metadata of a file or directory." alt="" coords="5,5,149,32"/>
 </map>
diff --git a/docs/cpp/inherit_graph_3.md5 b/docs/cpp/inherit_graph_3.md5
index 710c7f648..a87f34809 100644
--- a/docs/cpp/inherit_graph_3.md5
+++ b/docs/cpp/inherit_graph_3.md5
@@ -1 +1 @@
-d3cbcbeee08dbdbf11b7dff5c601b8c4
\ No newline at end of file
+d26f21ff29aee5214bc0fd2b0ee5bbc0
\ No newline at end of file
diff --git a/docs/cpp/inherit_graph_3.svg b/docs/cpp/inherit_graph_3.svg
index 4f7832926..7a9ba88d8 100644
--- a/docs/cpp/inherit_graph_3.svg
+++ b/docs/cpp/inherit_graph_3.svg
@@ -4,34 +4,19 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: Graphical Class Hierarchy Pages: 1 -->
-<svg width="277pt" height="28pt"
- viewBox="0.00 0.00 277.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="116pt" height="28pt"
+ viewBox="0.00 0.00 116.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 24)">
 <title>Graphical Class Hierarchy</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 273,-24 273,4 -4,4"/>
-<!-- Node1 -->
-<g id="node1" class="node">
-<title>Node1</title>
-<g id="a_node1"><a xlink:title=" ">
-<polygon fill="white" stroke="#bfbfbf" points="0,-0.5 0,-19.5 137,-19.5 137,-0.5 0,-0.5"/>
-<text text-anchor="middle" x="68.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">boost::iostreams::device</text>
-</a>
-</g>
-</g>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 112,-24 112,4 -4,4"/>
 <!-- Node0 -->
-<g id="node2" class="node">
+<g id="node1" class="node">
 <title>Node0</title>
-<g id="a_node2"><a xlink:href="classopendal_1_1Reader.html" target="_top" xlink:title="Reader is designed to read data from the operator.">
-<polygon fill="white" stroke="black" points="173,-0.5 173,-19.5 269,-19.5 269,-0.5 173,-0.5"/>
-<text text-anchor="middle" x="221" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::Reader</text>
+<g id="a_node1"><a xlink:href="structopendal_1_1Metadata.html" target="_top" xlink:title="The metadata of a file or directory.">
+<polygon fill="white" stroke="black" points="0,-0.5 0,-19.5 108,-19.5 108,-0.5 0,-0.5"/>
+<text text-anchor="middle" x="54" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::Metadata</text>
 </a>
 </g>
 </g>
-<!-- Node1&#45;&gt;Node0 -->
-<g id="edge1" class="edge">
-<title>Node1&#45;&gt;Node0</title>
-<path fill="none" stroke="midnightblue" d="M147.44,-10C156.11,-10 164.73,-10 172.84,-10"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="147.27,-6.5 137.27,-10 147.27,-13.5 147.27,-6.5"/>
-</g>
 </g>
 </svg>
diff --git a/docs/cpp/inherit_graph_4.map b/docs/cpp/inherit_graph_4.map
index c5703768f..354764497 100644
--- a/docs/cpp/inherit_graph_4.map
+++ b/docs/cpp/inherit_graph_4.map
@@ -1,4 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" title=" " alt="" coords="5,5,191,32"/>
-<area shape="rect" id="node2" href="$classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface." alt="" coords="239,5,413,32"/>
+<area shape="rect" id="node1" href="$classopendal_1_1Operator.html" title="Operator is the entry for all public APIs." alt="" coords="5,5,144,32"/>
 </map>
diff --git a/docs/cpp/inherit_graph_4.md5 b/docs/cpp/inherit_graph_4.md5
index e29e96a38..84b2cb9c7 100644
--- a/docs/cpp/inherit_graph_4.md5
+++ b/docs/cpp/inherit_graph_4.md5
@@ -1 +1 @@
-cbf678a7dfe2b54471fafbdfed08b1b8
\ No newline at end of file
+977f67bda05e140ab3788344993bb5c6
\ No newline at end of file
diff --git a/docs/cpp/inherit_graph_4.svg b/docs/cpp/inherit_graph_4.svg
index 0dbce30d4..6dc7150bf 100644
--- a/docs/cpp/inherit_graph_4.svg
+++ b/docs/cpp/inherit_graph_4.svg
@@ -4,34 +4,19 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: Graphical Class Hierarchy Pages: 1 -->
-<svg width="314pt" height="28pt"
- viewBox="0.00 0.00 314.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="112pt" height="28pt"
+ viewBox="0.00 0.00 112.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 24)">
 <title>Graphical Class Hierarchy</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 310,-24 310,4 -4,4"/>
-<!-- Node6 -->
-<g id="node1" class="node">
-<title>Node6</title>
-<g id="a_node1"><a xlink:title=" ">
-<polygon fill="white" stroke="#bfbfbf" points="0,-0.5 0,-19.5 139,-19.5 139,-0.5 0,-0.5"/>
-<text text-anchor="middle" x="69.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">boost::iostreams::stream</text>
-</a>
-</g>
-</g>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 108,-24 108,4 -4,4"/>
 <!-- Node0 -->
-<g id="node2" class="node">
+<g id="node1" class="node">
 <title>Node0</title>
-<g id="a_node2"><a xlink:href="classopendal_1_1ReaderStream.html" target="_top" xlink:title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">
-<polygon fill="white" stroke="black" points="175,-0.5 175,-19.5 306,-19.5 306,-0.5 175,-0.5"/>
-<text text-anchor="middle" x="240.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::ReaderStream</text>
+<g id="a_node1"><a xlink:href="classopendal_1_1Operator.html" target="_top" xlink:title="Operator is the entry for all public APIs.">
+<polygon fill="white" stroke="black" points="0,-0.5 0,-19.5 104,-19.5 104,-0.5 0,-0.5"/>
+<text text-anchor="middle" x="52" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">opendal::Operator</text>
 </a>
 </g>
 </g>
-<!-- Node6&#45;&gt;Node0 -->
-<g id="edge1" class="edge">
-<title>Node6&#45;&gt;Node0</title>
-<path fill="none" stroke="midnightblue" d="M149.26,-10C157.85,-10 166.52,-10 174.92,-10"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="149.24,-6.5 139.24,-10 149.24,-13.5 149.24,-6.5"/>
-</g>
 </g>
 </svg>
diff --git a/docs/cpp/inherit_graph_3.map b/docs/cpp/inherit_graph_5.map
similarity index 100%
copy from docs/cpp/inherit_graph_3.map
copy to docs/cpp/inherit_graph_5.map
diff --git a/docs/cpp/inherit_graph_3.md5 b/docs/cpp/inherit_graph_5.md5
similarity index 100%
copy from docs/cpp/inherit_graph_3.md5
copy to docs/cpp/inherit_graph_5.md5
diff --git a/docs/cpp/inherit_graph_3.svg b/docs/cpp/inherit_graph_5.svg
similarity index 100%
copy from docs/cpp/inherit_graph_3.svg
copy to docs/cpp/inherit_graph_5.svg
diff --git a/docs/cpp/inherit_graph_4.map b/docs/cpp/inherit_graph_6.map
similarity index 100%
copy from docs/cpp/inherit_graph_4.map
copy to docs/cpp/inherit_graph_6.map
diff --git a/docs/cpp/inherit_graph_6.md5 b/docs/cpp/inherit_graph_6.md5
new file mode 100644
index 000000000..c02e172da
--- /dev/null
+++ b/docs/cpp/inherit_graph_6.md5
@@ -0,0 +1 @@
+fe7dac84851231b970411c6685d9823f
\ No newline at end of file
diff --git a/docs/cpp/inherit_graph_4.svg b/docs/cpp/inherit_graph_6.svg
similarity index 94%
copy from docs/cpp/inherit_graph_4.svg
copy to docs/cpp/inherit_graph_6.svg
index 0dbce30d4..cc9323ad7 100644
--- a/docs/cpp/inherit_graph_4.svg
+++ b/docs/cpp/inherit_graph_6.svg
@@ -9,9 +9,9 @@
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 24)">
 <title>Graphical Class Hierarchy</title>
 <polygon fill="white" stroke="transparent" points="-4,4 -4,-24 310,-24 310,4 -4,4"/>
-<!-- Node6 -->
+<!-- Node8 -->
 <g id="node1" class="node">
-<title>Node6</title>
+<title>Node8</title>
 <g id="a_node1"><a xlink:title=" ">
 <polygon fill="white" stroke="#bfbfbf" points="0,-0.5 0,-19.5 139,-19.5 139,-0.5 0,-0.5"/>
 <text text-anchor="middle" x="69.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">boost::iostreams::stream</text>
@@ -27,9 +27,9 @@
 </a>
 </g>
 </g>
-<!-- Node6&#45;&gt;Node0 -->
+<!-- Node8&#45;&gt;Node0 -->
 <g id="edge1" class="edge">
-<title>Node6&#45;&gt;Node0</title>
+<title>Node8&#45;&gt;Node0</title>
 <path fill="none" stroke="midnightblue" d="M149.26,-10C157.85,-10 166.52,-10 174.92,-10"/>
 <polygon fill="midnightblue" stroke="midnightblue" points="149.24,-6.5 139.24,-10 149.24,-13.5 149.24,-6.5"/>
 </g>
diff --git a/docs/cpp/inherits.html b/docs/cpp/inherits.html
index 757fd0610..a74602e26 100644
--- a/docs/cpp/inherits.html
+++ b/docs/cpp/inherits.html
@@ -72,13 +72,17 @@ $(function() {
 </div><table border="0" cellspacing="10" cellpadding="0">
 <tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_0.svg" width="127" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_1.svg" width="155" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_1.svg" width="130" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_2.svg" width="150" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_2.svg" width="222" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_3.svg" width="370" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_3.svg" width="155" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </td></tr>
-<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_4.svg" width="419" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_4.svg" width="150" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+</td></tr>
+<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_5.svg" width="370" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+</td></tr>
+<tr><td><iframe scrolling="no" frameborder="0" src="inherit_graph_6.svg" width="419" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </td></tr>
 </table>
 </div><!-- contents -->
diff --git a/docs/cpp/menudata.js b/docs/cpp/menudata.js
index 54448d825..e3cb7f74c 100644
--- a/docs/cpp/menudata.js
+++ b/docs/cpp/menudata.js
@@ -37,19 +37,38 @@ var menudata={children:[
 {text:"Class Members",url:"functions.html",children:[
 {text:"All",url:"functions.html",children:[
 {text:"a",url:"functions.html#index_a"},
+{text:"b",url:"functions.html#index_b"},
 {text:"c",url:"functions.html#index_c"},
+{text:"d",url:"functions.html#index_d"},
 {text:"e",url:"functions.html#index_e"},
 {text:"i",url:"functions.html#index_i"},
 {text:"l",url:"functions.html#index_l"},
 {text:"m",url:"functions.html#index_m"},
+{text:"n",url:"functions.html#index_n"},
 {text:"o",url:"functions.html#index_o"},
 {text:"p",url:"functions.html#index_p"},
 {text:"r",url:"functions.html#index_r"},
 {text:"s",url:"functions.html#index_s"},
 {text:"t",url:"functions.html#index_t"},
+{text:"v",url:"functions.html#index_v"},
 {text:"w",url:"functions.html#index_w"},
 {text:"~",url:"functions.html#index__7E"}]},
-{text:"Functions",url:"functions_func.html"},
-{text:"Variables",url:"functions_vars.html"}]}]},
+{text:"Functions",url:"functions_func.html",children:[
+{text:"a",url:"functions_func.html#index_a"},
+{text:"b",url:"functions_func.html#index_b"},
+{text:"c",url:"functions_func.html#index_c"},
+{text:"e",url:"functions_func.html#index_e"},
+{text:"i",url:"functions_func.html#index_i"},
+{text:"l",url:"functions_func.html#index_l"},
+{text:"m",url:"functions_func.html#index_m"},
+{text:"n",url:"functions_func.html#index_n"},
+{text:"o",url:"functions_func.html#index_o"},
+{text:"r",url:"functions_func.html#index_r"},
+{text:"s",url:"functions_func.html#index_s"},
+{text:"w",url:"functions_func.html#index_w"},
+{text:"~",url:"functions_func.html#index__7E"}]},
+{text:"Variables",url:"functions_vars.html"},
+{text:"Typedefs",url:"functions_type.html"},
+{text:"Related Functions",url:"functions_rela.html"}]}]},
 {text:"Files",url:"files.html",children:[
 {text:"File List",url:"files.html"}]}]}
diff --git a/docs/cpp/namespaceopendal.html b/docs/cpp/namespaceopendal.html
index f49b42cc1..1e7e43f9b 100644
--- a/docs/cpp/namespaceopendal.html
+++ b/docs/cpp/namespaceopendal.html
@@ -88,6 +88,9 @@ Classes</h2></td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1ReaderStream.html">ReaderStream</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a> is a stream wrapper of <a class="el" href="classopendal_1_1Reader.html" title="Reader is designed to read data from the operator.">Reader</a> which can provide <code>iostream</code> interface.  <a href="classopendal_1_1ReaderStream.html#details">More...< [...]
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister.html">Lister</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a> is designed to list the entries of a directory.  <a href="classopendal_1_1Lister.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
 Enumerations</h2></td></tr>
diff --git a/docs/cpp/namespaces.html b/docs/cpp/namespaces.html
index 2f51d85f5..8bfc61fb1 100644
--- a/docs/cpp/namespaces.html
+++ b/docs/cpp/namespaces.html
@@ -68,13 +68,15 @@ $(function() {
 </div><!--header-->
 <div class="contents">
 <div class="textblock">Here is a list of all namespaces with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceopendal.html" target="_self">opendal</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structopendal_1_1Metadata.html" target="_self">Metadata</a></td><td class="desc">The metadata of a file or directory </td></tr>
 <tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structopendal_1_1Entry.html" target="_self">Entry</a></td><td class="desc">The entry of a file or directory </td></tr>
 <tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Operator.html" target="_self">Operator</a></td><td class="desc"><a class="el" href="classopendal_1_1Operator.html" title="Operator is the entry for all public APIs.">Operator</a> is the entry for all public APIs </td></tr>
 <tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Reader.html" target="_self">Reader</a></td><td class="desc"><a class="el" href="classopendal_1_1Reader.html" title="Reader is designed to read data from the operator.">Reader</a> is designed to read data from the operator </td></tr>
 <tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1ReaderStream.html" target="_self">ReaderStream</a></td><td class="desc"><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a> is a stream wrapper of <a class="el" href="classopendal_1_1Reader.html" t [...]
+<tr id="row_0_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_5_" class="arrow" onclick="toggleFolder('0_5_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Lister.html" target="_self">Lister</a></td><td class="desc"><a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a> is designed to list the entries [...]
+<tr id="row_0_5_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" target="_self">ListerIterator</a></td><td class="desc"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister.">ListerIterator</a> is an iterator of <a class="el" href="classopendal_1_1Lister.html" title="Lister is [...]
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
diff --git a/docs/cpp/opendal_8hpp.html b/docs/cpp/opendal_8hpp.html
index 2346cbc40..8c913cd96 100644
--- a/docs/cpp/opendal_8hpp.html
+++ b/docs/cpp/opendal_8hpp.html
@@ -110,6 +110,12 @@ Classes</h2></td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1ReaderStream.html">opendal::ReaderStream</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classopendal_1_1ReaderStream.html" title="ReaderStream is a stream wrapper of Reader which can provide iostream interface.">ReaderStream</a> is a stream wrapper of <a class="el" href="classopendal_1_1Reader.html" title="Reader is designed to read data from the operator.">Reader</a> which can provide <code>iostream</code> interface.  <a href="classopendal_1_1ReaderStream.html#details">More...< [...]
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister.html">opendal::Lister</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a> is designed to list the entries of a directory.  <a href="classopendal_1_1Lister.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classopendal_1_1Lister_1_1ListerIterator.html" title="ListerIterator is an iterator of Lister.">ListerIterator</a> is an iterator of <a class="el" href="classopendal_1_1Lister.html" title="Lister is designed to list the entries of a directory.">Lister</a>.  <a href="classopendal_1_1Lister_1_1ListerIterator.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
 Namespaces</h2></td></tr>
diff --git a/docs/cpp/opendal_8hpp_source.html b/docs/cpp/opendal_8hpp_source.html
index dd459a65d..f9f124762 100644
--- a/docs/cpp/opendal_8hpp_source.html
+++ b/docs/cpp/opendal_8hpp_source.html
@@ -130,76 +130,144 @@ $(function() {
 <div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;};</div>
 <div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160; </div>
 <div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1Reader.html">Reader</a>;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
-<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html">   77</a></span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1Operator.html">Operator</a> {</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">   79</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">Operator</a>() = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160; </div>
-<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee">   87</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee">Operator</a>(std::string_view scheme,</div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;           <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt; &amp;config = {});</div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; </div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="comment">// Disable copy and assign</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20">   91</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20">Operator</a>(<span class="keyword">const</span> <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">   92</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;<a class="code" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">operator=</a>(<span class="keyword">const</span> <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// Enable move</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a24a017a46004f6e3b70ce9daa1da2387">   95</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#a24a017a46004f6e3b70ce9daa1da2387">Operator</a>(<a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;&amp;) = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de">   96</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;<a class="code" href="classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de">operator=</a>(<a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;&amp;) = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e">   97</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e">~Operator</a>() = <span class="keywordflow">default</span>;</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160; </div>
-<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f">  104</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f">available</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160; </div>
-<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">  114</a></span>&#160;  std::vector&lt;uint8_t&gt; <a class="code" href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">read</a>(std::string_view path);</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160; </div>
-<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">  122</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">write</a>(std::string_view path, <span class="keyword">const</span> std::vector&lt;uint8_t&gt; &amp;data);</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160; </div>
-<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7">  130</a></span>&#160;  <a class="code" href="classopendal_1_1Reader.html">Reader</a> <a class="code" href="classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7">reader</a>(std::string_view path);</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160; </div>
-<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240">  138</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240">is_exist</a>(std::string_view path);</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160; </div>
-<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44">  145</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44">create_dir</a>(std::string_view path);</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160; </div>
-<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5">  153</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5">copy</a>(std::string_view src, std::string_view dst);</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160; </div>
-<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">  161</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">rename</a>(std::string_view src, std::string_view dst);</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160; </div>
-<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">  168</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">remove</a>(std::string_view path);</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160; </div>
-<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e">  176</a></span>&#160;  <a class="code" href="structopendal_1_1Metadata.html">Metadata</a> <a class="code" href="classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e">stat</a>(std::string_view path);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160; </div>
-<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">  185</a></span>&#160;  std::vector&lt;Entry&gt; <a class="code" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">list</a>(std::string_view path);</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160; </div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  std::optional&lt;rust::Box&lt;opendal::ffi::Operator&gt;&gt; operator_;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;};</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160; </div>
-<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html">  201</a></span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1Reader.html">Reader</a></div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    : <span class="keyword">public</span> boost::iostreams::device&lt;boost::iostreams::input_seekable&gt; {</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421">  204</a></span>&#160;  <a class="code" href="classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421">Reader</a>(rust::Box&lt;opendal::ffi::Reader&gt; &amp;&amp;reader)</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;      : raw_reader_(std::move(reader)) {}</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160; </div>
-<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c">  207</a></span>&#160;  std::streamsize <a class="code" href="classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c">read</a>(<span class="keywordtype">void</span> *s, std::streamsize n);</div>
-<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7">  208</a></span>&#160;  std::streampos <a class="code" href="classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7">seek</a>(std::streamoff off, std::ios_base::seekdir way);</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1Lister.html">Lister</a>;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html">   78</a></span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1Operator.html">Operator</a> {</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">   80</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab">Operator</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee">   88</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee">Operator</a>(std::string_view scheme,</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;           <span class="keyword">const</span> std::unordered_map&lt;std::string, std::string&gt; &amp;config = {});</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="comment">// Disable copy and assign</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20">   92</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20">Operator</a>(<span class="keyword">const</span> <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">   93</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;<a class="code" href="classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754">operator=</a>(<span class="keyword">const</span> <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="comment">// Enable move</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a24a017a46004f6e3b70ce9daa1da2387">   96</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#a24a017a46004f6e3b70ce9daa1da2387">Operator</a>(<a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;&amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de">   97</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;<a class="code" href="classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de">operator=</a>(<a class="code" href="classopendal_1_1Operator.html">Operator</a> &amp;&amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e">   98</a></span>&#160;  <a class="code" href="classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e">~Operator</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f">  105</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f">available</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">  115</a></span>&#160;  std::vector&lt;uint8_t&gt; <a class="code" href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">read</a>(std::string_view path);</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160; </div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">  123</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b">write</a>(std::string_view path, <span class="keyword">const</span> std::vector&lt;uint8_t&gt; &amp;data);</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7">  131</a></span>&#160;  <a class="code" href="classopendal_1_1Reader.html">Reader</a> <a class="code" href="classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7">reader</a>(std::string_view path);</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240">  139</a></span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240">is_exist</a>(std::string_view path);</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44">  146</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44">create_dir</a>(std::string_view path);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160; </div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5">  154</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5">copy</a>(std::string_view src, std::string_view dst);</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160; </div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">  162</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">rename</a>(std::string_view src, std::string_view dst);</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160; </div>
+<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">  169</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">remove</a>(std::string_view path);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160; </div>
+<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e">  177</a></span>&#160;  <a class="code" href="structopendal_1_1Metadata.html">Metadata</a> <a class="code" href="classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e">stat</a>(std::string_view path);</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160; </div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">  186</a></span>&#160;  std::vector&lt;Entry&gt; <a class="code" href="classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0">list</a>(std::string_view path);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160; </div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848">  188</a></span>&#160;  <a class="code" href="classopendal_1_1Lister.html">Lister</a> <a class="code" href="classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848">lister</a>(std::string_view path);</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160; </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  std::optional&lt;rust::Box&lt;opendal::ffi::Operator&gt;&gt; operator_;</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;};</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160; </div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html">  204</a></span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1Reader.html">Reader</a></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    : <span class="keyword">public</span> boost::iostreams::device&lt;boost::iostreams::input_seekable&gt; {</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421">  207</a></span>&#160;  <a class="code" href="classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421">Reader</a>(rust::Box&lt;opendal::ffi::Reader&gt; &amp;&amp;reader)</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;      : raw_reader_(std::move(reader)) {}</div>
 <div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160; </div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  rust::Box&lt;opendal::ffi::Reader&gt; raw_reader_;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;};</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160; </div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="comment">// Boost IOStreams requires it to be copyable. So we need to use</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="comment">// `reference_wrapper` in ReaderStream. More details can be seen at</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="comment">// https://lists.boost.org/Archives/boost/2005/10/95939.php</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160; </div>
-<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classopendal_1_1ReaderStream.html">  223</a></span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1ReaderStream.html">ReaderStream</a></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    : <span class="keyword">public</span> boost::iostreams::stream&lt;boost::reference_wrapper&lt;Reader&gt;&gt; {</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433">  226</a></span>&#160;  <a class="code" href="classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433">ReaderStream</a>(<a class="code" href="classopendal_1_1Reader.html">Reader</a> &amp;reader)</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      : boost::iostreams::stream&lt;boost::reference_wrapper&lt;<a class="code" href="classopendal_1_1Reader.html">Reader</a>&gt;&gt;(</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;            boost::ref(reader)) {}</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;};</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;} <span class="comment">// namespace opendal</span></div>
-<div class="ttc" id="aclassopendal_1_1Operator_html"><div class="ttname"><a href="classopendal_1_1Operator.html">opendal::Operator</a></div><div class="ttdoc">Operator is the entry for all public APIs.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:77</div></div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c">  210</a></span>&#160;  std::streamsize <a class="code" href="classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c">read</a>(<span class="keywordtype">void</span> *s, std::streamsize n);</div>
+<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7">  211</a></span>&#160;  std::streampos <a class="code" href="classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7">seek</a>(std::streamoff off, std::ios_base::seekdir way);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  rust::Box&lt;opendal::ffi::Reader&gt; raw_reader_;</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;};</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="comment">// Boost IOStreams requires it to be copyable. So we need to use</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="comment">// `reference_wrapper` in ReaderStream. More details can be seen at</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="comment">// https://lists.boost.org/Archives/boost/2005/10/95939.php</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160; </div>
+<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classopendal_1_1ReaderStream.html">  227</a></span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1ReaderStream.html">ReaderStream</a></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    : <span class="keyword">public</span> boost::iostreams::stream&lt;boost::reference_wrapper&lt;Reader&gt;&gt; {</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433">  230</a></span>&#160;  <a class="code" href="classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433">ReaderStream</a>(<a class="code" href="classopendal_1_1Reader.html">Reader</a> &amp;reader)</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      : boost::iostreams::stream&lt;boost::reference_wrapper&lt;<a class="code" href="classopendal_1_1Reader.html">Reader</a>&gt;&gt;(</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;            boost::ref(reader)) {}</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;};</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
+<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister.html">  247</a></span>&#160;<span class="keyword">class </span><a class="code" href="classopendal_1_1Lister.html">Lister</a> {</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf">  249</a></span>&#160;  <a class="code" href="classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf">Lister</a>(rust::Box&lt;opendal::ffi::Lister&gt; &amp;&amp;lister)</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      : raw_lister_(std::move(lister)) {}</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html">  258</a></span>&#160;  <span class="keyword">class </span><a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> {</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">  260</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">iterator_category</a> = std::input_iterator_tag;</div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638">  261</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="structopendal_1_1Entry.html">value_type</a> = <a class="code" href="structopendal_1_1Entry.html">Entry</a>;</div>
+<div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">  262</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">difference_type</a> = std::ptrdiff_t;</div>
+<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8">  263</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="structopendal_1_1Entry.html">pointer</a> = <a class="code" href="structopendal_1_1Entry.html">Entry</a> *;</div>
+<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53">  264</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="structopendal_1_1Entry.html">reference</a> = <a class="code" href="structopendal_1_1Entry.html">Entry</a> &amp;;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160; </div>
+<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166">  266</a></span>&#160;    <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166">ListerIterator</a>(<a class="code" href="classopendal_1_1Lister.html">Lister</a> &amp;lister) : lister_(lister) {</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      current_entry_ = lister_.<a class="code" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">next</a>();</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    }</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160; </div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15">  270</a></span>&#160;    <a class="code" href="structopendal_1_1Entry.html">Entry</a> <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15">operator*</a>() { <span class="keywordflow">return</span> current_entry_.value(); }</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160; </div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa">  272</a></span>&#160;    <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> &amp;<a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa">operator++</a>() {</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      <span class="keywordflow">if</span> (current_entry_) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;        current_entry_ = lister_.<a class="code" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">next</a>();</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;      }</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;      <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    }</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160; </div>
+<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90">  279</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> &amp;other)<span class=" [...]
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;      <span class="keywordflow">return</span> current_entry_ != std::nullopt ||</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;             other.current_entry_ != std::nullopt;</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    }</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="comment">// Only used for end iterator</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#a3d996eb5068d50dcf827c378dfa85a4d">  286</a></span>&#160;    <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html#a3d996eb5068d50dcf827c378dfa85a4d">ListerIterator</a>(<a class="code" href="classopendal_1_1Lister.html">Lister</a> &amp;lister, <span class="keywordtype">bool</span> <span class="comment">/*end*/</span>) : lister_(lister) {}</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160; </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <a class="code" href="classopendal_1_1Lister.html">Lister</a> &amp;lister_;</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    std::optional&lt;Entry&gt; current_entry_;</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160; </div>
+<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister_1_1ListerIterator.html#ad42567fe562d05806c9ab86ac07f7945">  292</a></span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classopendal_1_1Lister.html">Lister</a>;</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  };</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160; </div>
+<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">  300</a></span>&#160;  std::optional&lt;Entry&gt; <a class="code" href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">next</a>();</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160; </div>
+<div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2">  302</a></span>&#160;  <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> <a class="code" href="classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2">begin</a>() { <span class="keywordflow">return</span> <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a>(*<span c [...]
+<div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7">  303</a></span>&#160;  <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a> <a class="code" href="classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7">end</a>() { <span class="keywordflow">return</span> <a class="code" href="classopendal_1_1Lister_1_1ListerIterator.html">ListerIterator</a>(*<span cla [...]
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160; </div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  rust::Box&lt;opendal::ffi::Lister&gt; raw_lister_;</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;};</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;} <span class="comment">// namespace opendal</span></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html">opendal::Lister::ListerIterator</a></div><div class="ttdoc">ListerIterator is an iterator of Lister.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:258</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html_a165806bfd933758670188ddb82899e90"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90">opendal::Lister::ListerIterator::operator!=</a></div><div class="ttdeci">bool operator!=(const ListerIterator &amp;other) const</div><div class="ttdef"><b>Definition:</b> opendal.hpp:279</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html_a28acbed0253a87f8899634efca4784fa"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa">opendal::Lister::ListerIterator::operator++</a></div><div class="ttdeci">ListerIterator &amp; operator++()</div><div class="ttdef"><b>Definition:</b> opendal.hpp:272</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html_a384eb9fa5edb3bf4006f5dac5a6aba15"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15">opendal::Lister::ListerIterator::operator*</a></div><div class="ttdeci">Entry operator*()</div><div class="ttdef"><b>Definition:</b> opendal.hpp:270</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html_a3d996eb5068d50dcf827c378dfa85a4d"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html#a3d996eb5068d50dcf827c378dfa85a4d">opendal::Lister::ListerIterator::ListerIterator</a></div><div class="ttdeci">ListerIterator(Lister &amp;lister, bool)</div><div class="ttdef"><b>Definition:</b> opendal.hpp:286</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html_a48d53709ece77b321d6dbce6eaead166"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166">opendal::Lister::ListerIterator::ListerIterator</a></div><div class="ttdeci">ListerIterator(Lister &amp;lister)</div><div class="ttdef"><b>Definition:</b> opendal.hpp:266</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html_a52f114d04a653ce28839bd74cd7f4822"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822">opendal::Lister::ListerIterator::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> opendal.hpp:262</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_1_1ListerIterator_html_ada15a4395c8bc384db1f036095d4b94d"><div class="ttname"><a href="classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d">opendal::Lister::ListerIterator::iterator_category</a></div><div class="ttdeci">std::input_iterator_tag iterator_category</div><div class="ttdef"><b>Definition:</b> opendal.hpp:260</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_html"><div class="ttname"><a href="classopendal_1_1Lister.html">opendal::Lister</a></div><div class="ttdoc">Lister is designed to list the entries of a directory.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:247</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_html_a225152ef3bd17697946f480518046fcf"><div class="ttname"><a href="classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf">opendal::Lister::Lister</a></div><div class="ttdeci">Lister(rust::Box&lt; opendal::ffi::Lister &gt; &amp;&amp;lister)</div><div class="ttdef"><b>Definition:</b> opendal.hpp:249</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_html_a2f84fe66951f247b64c6171eba8ef8d7"><div class="ttname"><a href="classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7">opendal::Lister::end</a></div><div class="ttdeci">ListerIterator end()</div><div class="ttdef"><b>Definition:</b> opendal.hpp:303</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_html_a573ef941c31ac3af265b1e1446605aa2"><div class="ttname"><a href="classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2">opendal::Lister::begin</a></div><div class="ttdeci">ListerIterator begin()</div><div class="ttdef"><b>Definition:</b> opendal.hpp:302</div></div>
+<div class="ttc" id="aclassopendal_1_1Lister_html_a67448e82f1c4c087d0bafab7ba5108f8"><div class="ttname"><a href="classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8">opendal::Lister::next</a></div><div class="ttdeci">std::optional&lt; Entry &gt; next()</div><div class="ttdoc">Get the next entry of the lister.</div></div>
+<div class="ttc" id="aclassopendal_1_1Operator_html"><div class="ttname"><a href="classopendal_1_1Operator.html">opendal::Operator</a></div><div class="ttdoc">Operator is the entry for all public APIs.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:78</div></div>
 <div class="ttc" id="aclassopendal_1_1Operator_html_a0effdc74c828055d6c31dce1d76cb9af"><div class="ttname"><a href="classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af">opendal::Operator::rename</a></div><div class="ttdeci">void rename(std::string_view src, std::string_view dst)</div><div class="ttdoc">Rename a file from src to dst.</div></div>
+<div class="ttc" id="aclassopendal_1_1Operator_html_a211bb0ef86d66d334cf47b9a16525848"><div class="ttname"><a href="classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848">opendal::Operator::lister</a></div><div class="ttdeci">Lister lister(std::string_view path)</div></div>
 <div class="ttc" id="aclassopendal_1_1Operator_html_a2468eddb8de7adbf6f96219e3e0c9c44"><div class="ttname"><a href="classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44">opendal::Operator::create_dir</a></div><div class="ttdeci">void create_dir(std::string_view path)</div><div class="ttdoc">Create a directory.</div></div>
 <div class="ttc" id="aclassopendal_1_1Operator_html_a24a017a46004f6e3b70ce9daa1da2387"><div class="ttname"><a href="classopendal_1_1Operator.html#a24a017a46004f6e3b70ce9daa1da2387">opendal::Operator::Operator</a></div><div class="ttdeci">Operator(Operator &amp;&amp;)=default</div></div>
 <div class="ttc" id="aclassopendal_1_1Operator_html_a2ebd89e6bd4274414757b594e398b9e5"><div class="ttname"><a href="classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5">opendal::Operator::remove</a></div><div class="ttdeci">void remove(std::string_view path)</div><div class="ttdoc">Remove a file or directory.</div></div>
@@ -217,12 +285,12 @@ $(function() {
 <div class="ttc" id="aclassopendal_1_1Operator_html_accaa3b92894d80a3eed25b988778d1be"><div class="ttname"><a href="classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be">opendal::Operator::read</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; read(std::string_view path)</div><div class="ttdoc">Read data from the operator.</div></div>
 <div class="ttc" id="aclassopendal_1_1Operator_html_ad1ec2bbb9f63a726c36a50702ca57dd5"><div class="ttname"><a href="classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5">opendal::Operator::copy</a></div><div class="ttdeci">void copy(std::string_view src, std::string_view dst)</div><div class="ttdoc">Copy a file from src to dst.</div></div>
 <div class="ttc" id="aclassopendal_1_1Operator_html_ad994ed0f63cd572a3df5d9650b3a918f"><div class="ttname"><a href="classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f">opendal::Operator::available</a></div><div class="ttdeci">bool available() const</div><div class="ttdoc">Check if the operator is available.</div></div>
-<div class="ttc" id="aclassopendal_1_1ReaderStream_html"><div class="ttname"><a href="classopendal_1_1ReaderStream.html">opendal::ReaderStream</a></div><div class="ttdoc">ReaderStream is a stream wrapper of Reader which can provide iostream interface.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:224</div></div>
-<div class="ttc" id="aclassopendal_1_1ReaderStream_html_af71bab51de8f4edfe8788313c93af433"><div class="ttname"><a href="classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433">opendal::ReaderStream::ReaderStream</a></div><div class="ttdeci">ReaderStream(Reader &amp;reader)</div><div class="ttdef"><b>Definition:</b> opendal.hpp:226</div></div>
-<div class="ttc" id="aclassopendal_1_1Reader_html"><div class="ttname"><a href="classopendal_1_1Reader.html">opendal::Reader</a></div><div class="ttdoc">Reader is designed to read data from the operator.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:202</div></div>
+<div class="ttc" id="aclassopendal_1_1ReaderStream_html"><div class="ttname"><a href="classopendal_1_1ReaderStream.html">opendal::ReaderStream</a></div><div class="ttdoc">ReaderStream is a stream wrapper of Reader which can provide iostream interface.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:228</div></div>
+<div class="ttc" id="aclassopendal_1_1ReaderStream_html_af71bab51de8f4edfe8788313c93af433"><div class="ttname"><a href="classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433">opendal::ReaderStream::ReaderStream</a></div><div class="ttdeci">ReaderStream(Reader &amp;reader)</div><div class="ttdef"><b>Definition:</b> opendal.hpp:230</div></div>
+<div class="ttc" id="aclassopendal_1_1Reader_html"><div class="ttname"><a href="classopendal_1_1Reader.html">opendal::Reader</a></div><div class="ttdoc">Reader is designed to read data from the operator.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:205</div></div>
 <div class="ttc" id="aclassopendal_1_1Reader_html_a9ec1455536ea7d6d6245e0f287048fa7"><div class="ttname"><a href="classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7">opendal::Reader::seek</a></div><div class="ttdeci">std::streampos seek(std::streamoff off, std::ios_base::seekdir way)</div></div>
 <div class="ttc" id="aclassopendal_1_1Reader_html_ac930aa3695f924c92c06330256a9e04c"><div class="ttname"><a href="classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c">opendal::Reader::read</a></div><div class="ttdeci">std::streamsize read(void *s, std::streamsize n)</div></div>
-<div class="ttc" id="aclassopendal_1_1Reader_html_ad82fa5e92679db05e182ca9a60afb421"><div class="ttname"><a href="classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421">opendal::Reader::Reader</a></div><div class="ttdeci">Reader(rust::Box&lt; opendal::ffi::Reader &gt; &amp;&amp;reader)</div><div class="ttdef"><b>Definition:</b> opendal.hpp:204</div></div>
+<div class="ttc" id="aclassopendal_1_1Reader_html_ad82fa5e92679db05e182ca9a60afb421"><div class="ttname"><a href="classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421">opendal::Reader::Reader</a></div><div class="ttdeci">Reader(rust::Box&lt; opendal::ffi::Reader &gt; &amp;&amp;reader)</div><div class="ttdef"><b>Definition:</b> opendal.hpp:207</div></div>
 <div class="ttc" id="anamespaceopendal_html"><div class="ttname"><a href="namespaceopendal.html">opendal</a></div><div class="ttdef"><b>Definition:</b> opendal.hpp:32</div></div>
 <div class="ttc" id="anamespaceopendal_html_a775d61a6897136a7bcb0cea1a8af4878"><div class="ttname"><a href="namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878">opendal::EntryMode</a></div><div class="ttdeci">EntryMode</div><div class="ttdoc">The mode of the entry.</div><div class="ttdef"><b>Definition:</b> opendal.hpp:38</div></div>
 <div class="ttc" id="anamespaceopendal_html_a775d61a6897136a7bcb0cea1a8af4878a2afb4c058126f654340802330f779534"><div class="ttname"><a href="namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a2afb4c058126f654340802330f779534">opendal::FILE</a></div><div class="ttdeci">@ FILE</div><div class="ttdef"><b>Definition:</b> opendal.hpp:39</div></div>
diff --git a/docs/cpp/search/all_1.js b/docs/cpp/search/all_1.js
index 254220f98..b360fb814 100644
--- a/docs/cpp/search/all_1.js
+++ b/docs/cpp/search/all_1.js
@@ -1,10 +1,4 @@
 var searchData=
 [
-  ['cache_5fcontrol_1',['cache_control',['../structopendal_1_1Metadata.html#a54aa48a42c283dae626fae2f15197ecd',1,'opendal::Metadata']]],
-  ['content_5fdisposition_2',['content_disposition',['../structopendal_1_1Metadata.html#a03bb80ddc8a734bf3568397070b9c25c',1,'opendal::Metadata']]],
-  ['content_5flength_3',['content_length',['../structopendal_1_1Metadata.html#abac7ec36113aec8c3e7ad885ffbf3141',1,'opendal::Metadata']]],
-  ['content_5fmd5_4',['content_md5',['../structopendal_1_1Metadata.html#ac62a1144f48e70b73cb99a9172b52c7a',1,'opendal::Metadata']]],
-  ['content_5ftype_5',['content_type',['../structopendal_1_1Metadata.html#a63bec27aebb286fec3e280924e311949',1,'opendal::Metadata']]],
-  ['copy_6',['copy',['../classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5',1,'opendal::Operator']]],
-  ['create_5fdir_7',['create_dir',['../classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44',1,'opendal::Operator']]]
+  ['begin_1',['begin',['../classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2',1,'opendal::Lister']]]
 ];
diff --git a/docs/cpp/search/all_10.html b/docs/cpp/search/all_10.html
new file mode 100644
index 000000000..3bf11961f
--- /dev/null
+++ b/docs/cpp/search/all_10.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_10.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/all_10.js b/docs/cpp/search/all_10.js
new file mode 100644
index 000000000..afd524b84
--- /dev/null
+++ b/docs/cpp/search/all_10.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['value_5ftype_49',['value_type',['../classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638',1,'opendal::Lister::ListerIterator']]]
+];
diff --git a/docs/cpp/search/all_11.html b/docs/cpp/search/all_11.html
new file mode 100644
index 000000000..c9f79d289
--- /dev/null
+++ b/docs/cpp/search/all_11.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_11.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/all_e.js b/docs/cpp/search/all_11.js
similarity index 53%
copy from docs/cpp/search/all_e.js
copy to docs/cpp/search/all_11.js
index 0e0a579e3..7a03a1abc 100644
--- a/docs/cpp/search/all_e.js
+++ b/docs/cpp/search/all_11.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['write_34',['write',['../classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b',1,'opendal::Operator']]]
+  ['write_50',['write',['../classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/all_12.html b/docs/cpp/search/all_12.html
new file mode 100644
index 000000000..ab934722c
--- /dev/null
+++ b/docs/cpp/search/all_12.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_12.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/all_f.js b/docs/cpp/search/all_12.js
similarity index 57%
copy from docs/cpp/search/all_f.js
copy to docs/cpp/search/all_12.js
index 2f3991cee..704016a76 100644
--- a/docs/cpp/search/all_f.js
+++ b/docs/cpp/search/all_12.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['_7eoperator_35',['~Operator',['../classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e',1,'opendal::Operator']]]
+  ['_7eoperator_51',['~Operator',['../classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/all_2.js b/docs/cpp/search/all_2.js
index 056d984fb..8d944d90a 100644
--- a/docs/cpp/search/all_2.js
+++ b/docs/cpp/search/all_2.js
@@ -1,4 +1,10 @@
 var searchData=
 [
-  ['dir_8',['DIR',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878ad6eda605749ea5500d74ebc5f0204f07',1,'opendal']]]
+  ['cache_5fcontrol_2',['cache_control',['../structopendal_1_1Metadata.html#a54aa48a42c283dae626fae2f15197ecd',1,'opendal::Metadata']]],
+  ['content_5fdisposition_3',['content_disposition',['../structopendal_1_1Metadata.html#a03bb80ddc8a734bf3568397070b9c25c',1,'opendal::Metadata']]],
+  ['content_5flength_4',['content_length',['../structopendal_1_1Metadata.html#abac7ec36113aec8c3e7ad885ffbf3141',1,'opendal::Metadata']]],
+  ['content_5fmd5_5',['content_md5',['../structopendal_1_1Metadata.html#ac62a1144f48e70b73cb99a9172b52c7a',1,'opendal::Metadata']]],
+  ['content_5ftype_6',['content_type',['../structopendal_1_1Metadata.html#a63bec27aebb286fec3e280924e311949',1,'opendal::Metadata']]],
+  ['copy_7',['copy',['../classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5',1,'opendal::Operator']]],
+  ['create_5fdir_8',['create_dir',['../classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/all_3.js b/docs/cpp/search/all_3.js
index f8cc39290..e3d3c304f 100644
--- a/docs/cpp/search/all_3.js
+++ b/docs/cpp/search/all_3.js
@@ -1,6 +1,5 @@
 var searchData=
 [
-  ['entry_9',['Entry',['../structopendal_1_1Entry.html#a6d1eb12504c36cd820aa2f12a1a49bc1',1,'opendal::Entry::Entry()'],['../structopendal_1_1Entry.html',1,'opendal::Entry']]],
-  ['entrymode_10',['EntryMode',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878',1,'opendal']]],
-  ['etag_11',['etag',['../structopendal_1_1Metadata.html#a53f7daea35cf3b0b374a956b7cfb568e',1,'opendal::Metadata']]]
+  ['difference_5ftype_9',['difference_type',['../classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822',1,'opendal::Lister::ListerIterator']]],
+  ['dir_10',['DIR',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878ad6eda605749ea5500d74ebc5f0204f07',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/all_4.js b/docs/cpp/search/all_4.js
index b558ec85a..2f5094af0 100644
--- a/docs/cpp/search/all_4.js
+++ b/docs/cpp/search/all_4.js
@@ -1,4 +1,7 @@
 var searchData=
 [
-  ['file_12',['FILE',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a2afb4c058126f654340802330f779534',1,'opendal']]]
+  ['end_11',['end',['../classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7',1,'opendal::Lister']]],
+  ['entry_12',['Entry',['../structopendal_1_1Entry.html#a6d1eb12504c36cd820aa2f12a1a49bc1',1,'opendal::Entry::Entry()'],['../structopendal_1_1Entry.html',1,'opendal::Entry']]],
+  ['entrymode_13',['EntryMode',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878',1,'opendal']]],
+  ['etag_14',['etag',['../structopendal_1_1Metadata.html#a53f7daea35cf3b0b374a956b7cfb568e',1,'opendal::Metadata']]]
 ];
diff --git a/docs/cpp/search/all_5.js b/docs/cpp/search/all_5.js
index 67c425614..a04f888d1 100644
--- a/docs/cpp/search/all_5.js
+++ b/docs/cpp/search/all_5.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['is_5fexist_13',['is_exist',['../classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240',1,'opendal::Operator']]]
+  ['file_15',['FILE',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a2afb4c058126f654340802330f779534',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/all_6.js b/docs/cpp/search/all_6.js
index 1a9ff7bba..8266babbd 100644
--- a/docs/cpp/search/all_6.js
+++ b/docs/cpp/search/all_6.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['last_5fmodified_14',['last_modified',['../structopendal_1_1Metadata.html#ace9b06b10c6e26c5a13524ce600be506',1,'opendal::Metadata']]],
-  ['list_15',['list',['../classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0',1,'opendal::Operator']]]
+  ['is_5fexist_16',['is_exist',['../classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240',1,'opendal::Operator']]],
+  ['iterator_5fcategory_17',['iterator_category',['../classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d',1,'opendal::Lister::ListerIterator']]]
 ];
diff --git a/docs/cpp/search/all_7.js b/docs/cpp/search/all_7.js
index f3c83f189..71396cf9b 100644
--- a/docs/cpp/search/all_7.js
+++ b/docs/cpp/search/all_7.js
@@ -1,4 +1,9 @@
 var searchData=
 [
-  ['metadata_16',['Metadata',['../structopendal_1_1Metadata.html#a3e4aaecc764fb2223d2eb79d10712f91',1,'opendal::Metadata::Metadata()'],['../structopendal_1_1Metadata.html',1,'opendal::Metadata']]]
+  ['last_5fmodified_18',['last_modified',['../structopendal_1_1Metadata.html#ace9b06b10c6e26c5a13524ce600be506',1,'opendal::Metadata']]],
+  ['list_19',['list',['../classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0',1,'opendal::Operator']]],
+  ['lister_20',['Lister',['../classopendal_1_1Lister_1_1ListerIterator.html#ad42567fe562d05806c9ab86ac07f7945',1,'opendal::Lister::ListerIterator::Lister()'],['../classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf',1,'opendal::Lister::Lister()']]],
+  ['lister_21',['lister',['../classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848',1,'opendal::Operator']]],
+  ['lister_22',['Lister',['../classopendal_1_1Lister.html',1,'opendal']]],
+  ['listeriterator_23',['ListerIterator',['../classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166',1,'opendal::Lister::ListerIterator::ListerIterator(Lister &amp;lister)'],['../classopendal_1_1Lister_1_1ListerIterator.html#a3d996eb5068d50dcf827c378dfa85a4d',1,'opendal::Lister::ListerIterator::ListerIterator(Lister &amp;lister, bool)'],['../classopendal_1_1Lister_1_1ListerIterator.html',1,'opendal::Lister::ListerIterator']]]
 ];
diff --git a/docs/cpp/search/all_8.js b/docs/cpp/search/all_8.js
index 2d7c9a69e..21bbdabdd 100644
--- a/docs/cpp/search/all_8.js
+++ b/docs/cpp/search/all_8.js
@@ -1,8 +1,4 @@
 var searchData=
 [
-  ['opendal_17',['opendal',['../namespaceopendal.html',1,'']]],
-  ['opendal_20cpp_20binding_20_28wip_29_18',['OpenDAL CPP Binding (WIP)',['../index.html',1,'']]],
-  ['opendal_2ehpp_19',['opendal.hpp',['../opendal_8hpp.html',1,'']]],
-  ['operator_20',['Operator',['../classopendal_1_1Operator.html',1,'opendal::Operator'],['../classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab',1,'opendal::Operator::Operator()=default'],['../classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee',1,'opendal::Operator::Operator(std::string_view scheme, const std::unordered_map&lt; std::string, std::string &gt; &amp;config={})'],['../classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20',1,'opendal::Operat [...]
-  ['operator_3d_21',['operator=',['../classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754',1,'opendal::Operator::operator=(const Operator &amp;)=delete'],['../classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de',1,'opendal::Operator::operator=(Operator &amp;&amp;)=default']]]
+  ['metadata_24',['Metadata',['../structopendal_1_1Metadata.html#a3e4aaecc764fb2223d2eb79d10712f91',1,'opendal::Metadata::Metadata()'],['../structopendal_1_1Metadata.html',1,'opendal::Metadata']]]
 ];
diff --git a/docs/cpp/search/all_9.js b/docs/cpp/search/all_9.js
index 7da61355c..cbd21ef1b 100644
--- a/docs/cpp/search/all_9.js
+++ b/docs/cpp/search/all_9.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['path_22',['path',['../structopendal_1_1Entry.html#a0a305260835f4c01e413282ea458a48e',1,'opendal::Entry']]]
+  ['next_25',['next',['../classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8',1,'opendal::Lister']]]
 ];
diff --git a/docs/cpp/search/all_a.js b/docs/cpp/search/all_a.js
index 50fbfb60f..7d78798e4 100644
--- a/docs/cpp/search/all_a.js
+++ b/docs/cpp/search/all_a.js
@@ -1,10 +1,11 @@
 var searchData=
 [
-  ['read_23',['read',['../classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be',1,'opendal::Operator::read()'],['../classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c',1,'opendal::Reader::read()']]],
-  ['reader_24',['Reader',['../classopendal_1_1Reader.html',1,'opendal::Reader'],['../classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421',1,'opendal::Reader::Reader()']]],
-  ['reader_25',['reader',['../classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7',1,'opendal::Operator']]],
-  ['readerstream_26',['ReaderStream',['../classopendal_1_1ReaderStream.html',1,'opendal::ReaderStream'],['../classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433',1,'opendal::ReaderStream::ReaderStream()']]],
-  ['readme_2emd_27',['README.md',['../README_8md.html',1,'']]],
-  ['remove_28',['remove',['../classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5',1,'opendal::Operator']]],
-  ['rename_29',['rename',['../classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af',1,'opendal::Operator']]]
+  ['opendal_26',['opendal',['../namespaceopendal.html',1,'']]],
+  ['opendal_20cpp_20binding_20_28wip_29_27',['OpenDAL CPP Binding (WIP)',['../index.html',1,'']]],
+  ['opendal_2ehpp_28',['opendal.hpp',['../opendal_8hpp.html',1,'']]],
+  ['operator_29',['Operator',['../classopendal_1_1Operator.html',1,'opendal::Operator'],['../classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab',1,'opendal::Operator::Operator()=default'],['../classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee',1,'opendal::Operator::Operator(std::string_view scheme, const std::unordered_map&lt; std::string, std::string &gt; &amp;config={})'],['../classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20',1,'opendal::Operat [...]
+  ['operator_21_3d_30',['operator!=',['../classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90',1,'opendal::Lister::ListerIterator']]],
+  ['operator_2a_31',['operator*',['../classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15',1,'opendal::Lister::ListerIterator']]],
+  ['operator_2b_2b_32',['operator++',['../classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa',1,'opendal::Lister::ListerIterator']]],
+  ['operator_3d_33',['operator=',['../classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754',1,'opendal::Operator::operator=(const Operator &amp;)=delete'],['../classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de',1,'opendal::Operator::operator=(Operator &amp;&amp;)=default']]]
 ];
diff --git a/docs/cpp/search/all_b.js b/docs/cpp/search/all_b.js
index 5a5271811..00542b677 100644
--- a/docs/cpp/search/all_b.js
+++ b/docs/cpp/search/all_b.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['seek_30',['seek',['../classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7',1,'opendal::Reader']]],
-  ['stat_31',['stat',['../classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e',1,'opendal::Operator']]]
+  ['path_34',['path',['../structopendal_1_1Entry.html#a0a305260835f4c01e413282ea458a48e',1,'opendal::Entry']]],
+  ['pointer_35',['pointer',['../classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8',1,'opendal::Lister::ListerIterator']]]
 ];
diff --git a/docs/cpp/search/all_c.js b/docs/cpp/search/all_c.js
index 98f16bb7d..da1a0c143 100644
--- a/docs/cpp/search/all_c.js
+++ b/docs/cpp/search/all_c.js
@@ -1,4 +1,12 @@
 var searchData=
 [
-  ['type_32',['type',['../structopendal_1_1Metadata.html#a0ebe6721b204029a4e842bcb80d0fb91',1,'opendal::Metadata']]]
+  ['read_36',['read',['../classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be',1,'opendal::Operator::read()'],['../classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c',1,'opendal::Reader::read()']]],
+  ['reader_37',['Reader',['../classopendal_1_1Reader.html',1,'opendal']]],
+  ['reader_38',['reader',['../classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7',1,'opendal::Operator']]],
+  ['reader_39',['Reader',['../classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421',1,'opendal::Reader']]],
+  ['readerstream_40',['ReaderStream',['../classopendal_1_1ReaderStream.html',1,'opendal::ReaderStream'],['../classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433',1,'opendal::ReaderStream::ReaderStream()']]],
+  ['readme_2emd_41',['README.md',['../README_8md.html',1,'']]],
+  ['reference_42',['reference',['../classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53',1,'opendal::Lister::ListerIterator']]],
+  ['remove_43',['remove',['../classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5',1,'opendal::Operator']]],
+  ['rename_44',['rename',['../classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/all_d.js b/docs/cpp/search/all_d.js
index ddf0cb091..2de419bf4 100644
--- a/docs/cpp/search/all_d.js
+++ b/docs/cpp/search/all_d.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['unknown_33',['UNKNOWN',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a3524be472e62f8172244804c48b0c3a4',1,'opendal']]]
+  ['seek_45',['seek',['../classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7',1,'opendal::Reader']]],
+  ['stat_46',['stat',['../classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/all_e.js b/docs/cpp/search/all_e.js
index 0e0a579e3..26fb235f2 100644
--- a/docs/cpp/search/all_e.js
+++ b/docs/cpp/search/all_e.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['write_34',['write',['../classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b',1,'opendal::Operator']]]
+  ['type_47',['type',['../structopendal_1_1Metadata.html#a0ebe6721b204029a4e842bcb80d0fb91',1,'opendal::Metadata']]]
 ];
diff --git a/docs/cpp/search/all_f.js b/docs/cpp/search/all_f.js
index 2f3991cee..e3c433f6d 100644
--- a/docs/cpp/search/all_f.js
+++ b/docs/cpp/search/all_f.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['_7eoperator_35',['~Operator',['../classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e',1,'opendal::Operator']]]
+  ['unknown_48',['UNKNOWN',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a3524be472e62f8172244804c48b0c3a4',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/classes_0.js b/docs/cpp/search/classes_0.js
index 8a8e7b488..ad8b9b4c2 100644
--- a/docs/cpp/search/classes_0.js
+++ b/docs/cpp/search/classes_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['entry_36',['Entry',['../structopendal_1_1Entry.html',1,'opendal']]]
+  ['entry_52',['Entry',['../structopendal_1_1Entry.html',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/classes_1.js b/docs/cpp/search/classes_1.js
index 3474f9256..99097ac3e 100644
--- a/docs/cpp/search/classes_1.js
+++ b/docs/cpp/search/classes_1.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['metadata_37',['Metadata',['../structopendal_1_1Metadata.html',1,'opendal']]]
+  ['lister_53',['Lister',['../classopendal_1_1Lister.html',1,'opendal']]],
+  ['listeriterator_54',['ListerIterator',['../classopendal_1_1Lister_1_1ListerIterator.html',1,'opendal::Lister']]]
 ];
diff --git a/docs/cpp/search/classes_2.js b/docs/cpp/search/classes_2.js
index 469df86a7..8ab9fa51b 100644
--- a/docs/cpp/search/classes_2.js
+++ b/docs/cpp/search/classes_2.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['operator_38',['Operator',['../classopendal_1_1Operator.html',1,'opendal']]]
+  ['metadata_55',['Metadata',['../structopendal_1_1Metadata.html',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/classes_3.js b/docs/cpp/search/classes_3.js
index 618110cc8..a764a2ad4 100644
--- a/docs/cpp/search/classes_3.js
+++ b/docs/cpp/search/classes_3.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['reader_39',['Reader',['../classopendal_1_1Reader.html',1,'opendal']]],
-  ['readerstream_40',['ReaderStream',['../classopendal_1_1ReaderStream.html',1,'opendal']]]
+  ['operator_56',['Operator',['../classopendal_1_1Operator.html',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/classes_4.html b/docs/cpp/search/classes_4.html
new file mode 100644
index 000000000..8430b07fe
--- /dev/null
+++ b/docs/cpp/search/classes_4.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/classes_4.js b/docs/cpp/search/classes_4.js
new file mode 100644
index 000000000..927125315
--- /dev/null
+++ b/docs/cpp/search/classes_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['reader_57',['Reader',['../classopendal_1_1Reader.html',1,'opendal']]],
+  ['readerstream_58',['ReaderStream',['../classopendal_1_1ReaderStream.html',1,'opendal']]]
+];
diff --git a/docs/cpp/search/enums_0.js b/docs/cpp/search/enums_0.js
index ae092b158..0e5611fa4 100644
--- a/docs/cpp/search/enums_0.js
+++ b/docs/cpp/search/enums_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['entrymode_72',['EntryMode',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878',1,'opendal']]]
+  ['entrymode_104',['EntryMode',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/enumvalues_0.js b/docs/cpp/search/enumvalues_0.js
index a45718d94..0804084af 100644
--- a/docs/cpp/search/enumvalues_0.js
+++ b/docs/cpp/search/enumvalues_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['dir_73',['DIR',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878ad6eda605749ea5500d74ebc5f0204f07',1,'opendal']]]
+  ['dir_105',['DIR',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878ad6eda605749ea5500d74ebc5f0204f07',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/enumvalues_1.js b/docs/cpp/search/enumvalues_1.js
index 551f2e67a..20567d0be 100644
--- a/docs/cpp/search/enumvalues_1.js
+++ b/docs/cpp/search/enumvalues_1.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['file_74',['FILE',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a2afb4c058126f654340802330f779534',1,'opendal']]]
+  ['file_106',['FILE',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a2afb4c058126f654340802330f779534',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/enumvalues_2.js b/docs/cpp/search/enumvalues_2.js
index 6f42a9510..3e8616f7b 100644
--- a/docs/cpp/search/enumvalues_2.js
+++ b/docs/cpp/search/enumvalues_2.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['unknown_75',['UNKNOWN',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a3524be472e62f8172244804c48b0c3a4',1,'opendal']]]
+  ['unknown_107',['UNKNOWN',['../namespaceopendal.html#a775d61a6897136a7bcb0cea1a8af4878a3524be472e62f8172244804c48b0c3a4',1,'opendal']]]
 ];
diff --git a/docs/cpp/search/files_0.js b/docs/cpp/search/files_0.js
index d3c24176e..1059da011 100644
--- a/docs/cpp/search/files_0.js
+++ b/docs/cpp/search/files_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['opendal_2ehpp_42',['opendal.hpp',['../opendal_8hpp.html',1,'']]]
+  ['opendal_2ehpp_60',['opendal.hpp',['../opendal_8hpp.html',1,'']]]
 ];
diff --git a/docs/cpp/search/files_1.js b/docs/cpp/search/files_1.js
index 0ea92500c..ad507193f 100644
--- a/docs/cpp/search/files_1.js
+++ b/docs/cpp/search/files_1.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['readme_2emd_43',['README.md',['../README_8md.html',1,'']]]
+  ['readme_2emd_61',['README.md',['../README_8md.html',1,'']]]
 ];
diff --git a/docs/cpp/search/functions_0.js b/docs/cpp/search/functions_0.js
index 774d0ce16..a9f5e0c0b 100644
--- a/docs/cpp/search/functions_0.js
+++ b/docs/cpp/search/functions_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['available_44',['available',['../classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f',1,'opendal::Operator']]]
+  ['available_62',['available',['../classopendal_1_1Operator.html#ad994ed0f63cd572a3df5d9650b3a918f',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/functions_1.js b/docs/cpp/search/functions_1.js
index 5474c9a98..86b4311fb 100644
--- a/docs/cpp/search/functions_1.js
+++ b/docs/cpp/search/functions_1.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['copy_45',['copy',['../classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5',1,'opendal::Operator']]],
-  ['create_5fdir_46',['create_dir',['../classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44',1,'opendal::Operator']]]
+  ['begin_63',['begin',['../classopendal_1_1Lister.html#a573ef941c31ac3af265b1e1446605aa2',1,'opendal::Lister']]]
 ];
diff --git a/docs/cpp/search/functions_2.js b/docs/cpp/search/functions_2.js
index b751859bd..48ece4df8 100644
--- a/docs/cpp/search/functions_2.js
+++ b/docs/cpp/search/functions_2.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['entry_47',['Entry',['../structopendal_1_1Entry.html#a6d1eb12504c36cd820aa2f12a1a49bc1',1,'opendal::Entry']]]
+  ['copy_64',['copy',['../classopendal_1_1Operator.html#ad1ec2bbb9f63a726c36a50702ca57dd5',1,'opendal::Operator']]],
+  ['create_5fdir_65',['create_dir',['../classopendal_1_1Operator.html#a2468eddb8de7adbf6f96219e3e0c9c44',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/functions_3.js b/docs/cpp/search/functions_3.js
index 6930040c7..f119d0cad 100644
--- a/docs/cpp/search/functions_3.js
+++ b/docs/cpp/search/functions_3.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['is_5fexist_48',['is_exist',['../classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240',1,'opendal::Operator']]]
+  ['end_66',['end',['../classopendal_1_1Lister.html#a2f84fe66951f247b64c6171eba8ef8d7',1,'opendal::Lister']]],
+  ['entry_67',['Entry',['../structopendal_1_1Entry.html#a6d1eb12504c36cd820aa2f12a1a49bc1',1,'opendal::Entry']]]
 ];
diff --git a/docs/cpp/search/functions_4.js b/docs/cpp/search/functions_4.js
index 4dbe4fdb0..6a6bb34b9 100644
--- a/docs/cpp/search/functions_4.js
+++ b/docs/cpp/search/functions_4.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['list_49',['list',['../classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0',1,'opendal::Operator']]]
+  ['is_5fexist_68',['is_exist',['../classopendal_1_1Operator.html#a91e105a6112112586fa699371f270240',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/functions_5.js b/docs/cpp/search/functions_5.js
index e97da198c..39a8bbe65 100644
--- a/docs/cpp/search/functions_5.js
+++ b/docs/cpp/search/functions_5.js
@@ -1,4 +1,7 @@
 var searchData=
 [
-  ['metadata_50',['Metadata',['../structopendal_1_1Metadata.html#a3e4aaecc764fb2223d2eb79d10712f91',1,'opendal::Metadata']]]
+  ['list_69',['list',['../classopendal_1_1Operator.html#a6707d6095415cffa28ceb210368a30a0',1,'opendal::Operator']]],
+  ['lister_70',['Lister',['../classopendal_1_1Lister.html#a225152ef3bd17697946f480518046fcf',1,'opendal::Lister']]],
+  ['lister_71',['lister',['../classopendal_1_1Operator.html#a211bb0ef86d66d334cf47b9a16525848',1,'opendal::Operator']]],
+  ['listeriterator_72',['ListerIterator',['../classopendal_1_1Lister_1_1ListerIterator.html#a48d53709ece77b321d6dbce6eaead166',1,'opendal::Lister::ListerIterator::ListerIterator(Lister &amp;lister)'],['../classopendal_1_1Lister_1_1ListerIterator.html#a3d996eb5068d50dcf827c378dfa85a4d',1,'opendal::Lister::ListerIterator::ListerIterator(Lister &amp;lister, bool)']]]
 ];
diff --git a/docs/cpp/search/functions_6.js b/docs/cpp/search/functions_6.js
index 489cb6f61..19602e32e 100644
--- a/docs/cpp/search/functions_6.js
+++ b/docs/cpp/search/functions_6.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['operator_51',['Operator',['../classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab',1,'opendal::Operator::Operator()=default'],['../classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee',1,'opendal::Operator::Operator(std::string_view scheme, const std::unordered_map&lt; std::string, std::string &gt; &amp;config={})'],['../classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20',1,'opendal::Operator::Operator(const Operator &amp;)=delete'],['../classopend [...]
-  ['operator_3d_52',['operator=',['../classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754',1,'opendal::Operator::operator=(const Operator &amp;)=delete'],['../classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de',1,'opendal::Operator::operator=(Operator &amp;&amp;)=default']]]
+  ['metadata_73',['Metadata',['../structopendal_1_1Metadata.html#a3e4aaecc764fb2223d2eb79d10712f91',1,'opendal::Metadata']]]
 ];
diff --git a/docs/cpp/search/functions_7.js b/docs/cpp/search/functions_7.js
index 6147ec8af..4970b4ec6 100644
--- a/docs/cpp/search/functions_7.js
+++ b/docs/cpp/search/functions_7.js
@@ -1,9 +1,4 @@
 var searchData=
 [
-  ['read_53',['read',['../classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be',1,'opendal::Operator::read()'],['../classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c',1,'opendal::Reader::read(void *s, std::streamsize n)']]],
-  ['reader_54',['Reader',['../classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421',1,'opendal::Reader']]],
-  ['reader_55',['reader',['../classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7',1,'opendal::Operator']]],
-  ['readerstream_56',['ReaderStream',['../classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433',1,'opendal::ReaderStream']]],
-  ['remove_57',['remove',['../classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5',1,'opendal::Operator']]],
-  ['rename_58',['rename',['../classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af',1,'opendal::Operator']]]
+  ['next_74',['next',['../classopendal_1_1Lister.html#a67448e82f1c4c087d0bafab7ba5108f8',1,'opendal::Lister']]]
 ];
diff --git a/docs/cpp/search/functions_8.js b/docs/cpp/search/functions_8.js
index 32b3cbfe0..217056127 100644
--- a/docs/cpp/search/functions_8.js
+++ b/docs/cpp/search/functions_8.js
@@ -1,5 +1,8 @@
 var searchData=
 [
-  ['seek_59',['seek',['../classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7',1,'opendal::Reader']]],
-  ['stat_60',['stat',['../classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e',1,'opendal::Operator']]]
+  ['operator_75',['Operator',['../classopendal_1_1Operator.html#a6c91ce32cc67aadb5a4d2736d6e713ab',1,'opendal::Operator::Operator()=default'],['../classopendal_1_1Operator.html#aa31eda4e80c50287698cfec92a6c52ee',1,'opendal::Operator::Operator(std::string_view scheme, const std::unordered_map&lt; std::string, std::string &gt; &amp;config={})'],['../classopendal_1_1Operator.html#a82ff5d64072c83adc557385519669c20',1,'opendal::Operator::Operator(const Operator &amp;)=delete'],['../classopend [...]
+  ['operator_21_3d_76',['operator!=',['../classopendal_1_1Lister_1_1ListerIterator.html#a165806bfd933758670188ddb82899e90',1,'opendal::Lister::ListerIterator']]],
+  ['operator_2a_77',['operator*',['../classopendal_1_1Lister_1_1ListerIterator.html#a384eb9fa5edb3bf4006f5dac5a6aba15',1,'opendal::Lister::ListerIterator']]],
+  ['operator_2b_2b_78',['operator++',['../classopendal_1_1Lister_1_1ListerIterator.html#a28acbed0253a87f8899634efca4784fa',1,'opendal::Lister::ListerIterator']]],
+  ['operator_3d_79',['operator=',['../classopendal_1_1Operator.html#abcd6aad18d31f28886def363cc630754',1,'opendal::Operator::operator=(const Operator &amp;)=delete'],['../classopendal_1_1Operator.html#a344530c78c84d04cf0de5532c2aeb1de',1,'opendal::Operator::operator=(Operator &amp;&amp;)=default']]]
 ];
diff --git a/docs/cpp/search/functions_9.js b/docs/cpp/search/functions_9.js
index 2c5fb7bf4..2bb2b106a 100644
--- a/docs/cpp/search/functions_9.js
+++ b/docs/cpp/search/functions_9.js
@@ -1,4 +1,9 @@
 var searchData=
 [
-  ['write_61',['write',['../classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b',1,'opendal::Operator']]]
+  ['read_80',['read',['../classopendal_1_1Operator.html#accaa3b92894d80a3eed25b988778d1be',1,'opendal::Operator::read()'],['../classopendal_1_1Reader.html#ac930aa3695f924c92c06330256a9e04c',1,'opendal::Reader::read()']]],
+  ['reader_81',['reader',['../classopendal_1_1Operator.html#acb1cc25bef3e5c56045629959ec790e7',1,'opendal::Operator']]],
+  ['reader_82',['Reader',['../classopendal_1_1Reader.html#ad82fa5e92679db05e182ca9a60afb421',1,'opendal::Reader']]],
+  ['readerstream_83',['ReaderStream',['../classopendal_1_1ReaderStream.html#af71bab51de8f4edfe8788313c93af433',1,'opendal::ReaderStream']]],
+  ['remove_84',['remove',['../classopendal_1_1Operator.html#a2ebd89e6bd4274414757b594e398b9e5',1,'opendal::Operator']]],
+  ['rename_85',['rename',['../classopendal_1_1Operator.html#a0effdc74c828055d6c31dce1d76cb9af',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/functions_a.js b/docs/cpp/search/functions_a.js
index 1819ed9fc..156739efa 100644
--- a/docs/cpp/search/functions_a.js
+++ b/docs/cpp/search/functions_a.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['_7eoperator_62',['~Operator',['../classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e',1,'opendal::Operator']]]
+  ['seek_86',['seek',['../classopendal_1_1Reader.html#a9ec1455536ea7d6d6245e0f287048fa7',1,'opendal::Reader']]],
+  ['stat_87',['stat',['../classopendal_1_1Operator.html#a37517487cc2fad6f5f175ce377d7383e',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/functions_b.html b/docs/cpp/search/functions_b.html
new file mode 100644
index 000000000..e301fedd7
--- /dev/null
+++ b/docs/cpp/search/functions_b.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/all_e.js b/docs/cpp/search/functions_b.js
similarity index 53%
copy from docs/cpp/search/all_e.js
copy to docs/cpp/search/functions_b.js
index 0e0a579e3..7eff8252f 100644
--- a/docs/cpp/search/all_e.js
+++ b/docs/cpp/search/functions_b.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['write_34',['write',['../classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b',1,'opendal::Operator']]]
+  ['write_88',['write',['../classopendal_1_1Operator.html#a3bfa933634917127b3fdc8027b3ee45b',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/functions_c.html b/docs/cpp/search/functions_c.html
new file mode 100644
index 000000000..c4f326877
--- /dev/null
+++ b/docs/cpp/search/functions_c.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/all_f.js b/docs/cpp/search/functions_c.js
similarity index 57%
copy from docs/cpp/search/all_f.js
copy to docs/cpp/search/functions_c.js
index 2f3991cee..bb83df0cb 100644
--- a/docs/cpp/search/all_f.js
+++ b/docs/cpp/search/functions_c.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['_7eoperator_35',['~Operator',['../classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e',1,'opendal::Operator']]]
+  ['_7eoperator_89',['~Operator',['../classopendal_1_1Operator.html#aa77e710779e1a12f793ed6ab06e5d89e',1,'opendal::Operator']]]
 ];
diff --git a/docs/cpp/search/namespaces_0.js b/docs/cpp/search/namespaces_0.js
index 806ebe257..27c1f6afa 100644
--- a/docs/cpp/search/namespaces_0.js
+++ b/docs/cpp/search/namespaces_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['opendal_41',['opendal',['../namespaceopendal.html',1,'']]]
+  ['opendal_59',['opendal',['../namespaceopendal.html',1,'']]]
 ];
diff --git a/docs/cpp/search/pages_0.js b/docs/cpp/search/pages_0.js
index 1b63898b0..985036b37 100644
--- a/docs/cpp/search/pages_0.js
+++ b/docs/cpp/search/pages_0.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['opendal_20cpp_20binding_20_28wip_29_76',['OpenDAL CPP Binding (WIP)',['../index.html',1,'']]]
+  ['opendal_20cpp_20binding_20_28wip_29_109',['OpenDAL CPP Binding (WIP)',['../index.html',1,'']]]
 ];
diff --git a/docs/cpp/search/related_0.html b/docs/cpp/search/related_0.html
new file mode 100644
index 000000000..506aaecc0
--- /dev/null
+++ b/docs/cpp/search/related_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="related_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/related_0.js b/docs/cpp/search/related_0.js
new file mode 100644
index 000000000..b715e59d3
--- /dev/null
+++ b/docs/cpp/search/related_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['lister_108',['Lister',['../classopendal_1_1Lister_1_1ListerIterator.html#ad42567fe562d05806c9ab86ac07f7945',1,'opendal::Lister::ListerIterator']]]
+];
diff --git a/docs/cpp/search/searchdata.js b/docs/cpp/search/searchdata.js
index 81bf38368..da125953b 100644
--- a/docs/cpp/search/searchdata.js
+++ b/docs/cpp/search/searchdata.js
@@ -1,14 +1,16 @@
 var indexSectionsWithContent =
 {
-  0: "acdefilmoprstuw~",
-  1: "emor",
+  0: "abcdefilmnoprstuvw~",
+  1: "elmor",
   2: "o",
   3: "or",
-  4: "aceilmorsw~",
+  4: "abceilmnorsw~",
   5: "celpt",
-  6: "e",
-  7: "dfu",
-  8: "o"
+  6: "diprv",
+  7: "e",
+  8: "dfu",
+  9: "l",
+  10: "o"
 };
 
 var indexSectionNames =
@@ -19,9 +21,11 @@ var indexSectionNames =
   3: "files",
   4: "functions",
   5: "variables",
-  6: "enums",
-  7: "enumvalues",
-  8: "pages"
+  6: "typedefs",
+  7: "enums",
+  8: "enumvalues",
+  9: "related",
+  10: "pages"
 };
 
 var indexSectionLabels =
@@ -32,8 +36,10 @@ var indexSectionLabels =
   3: "Files",
   4: "Functions",
   5: "Variables",
-  6: "Enumerations",
-  7: "Enumerator",
-  8: "Pages"
+  6: "Typedefs",
+  7: "Enumerations",
+  8: "Enumerator",
+  9: "Friends",
+  10: "Pages"
 };
 
diff --git a/docs/cpp/search/typedefs_0.html b/docs/cpp/search/typedefs_0.html
new file mode 100644
index 000000000..a4684c4ad
--- /dev/null
+++ b/docs/cpp/search/typedefs_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/typedefs_0.js b/docs/cpp/search/typedefs_0.js
new file mode 100644
index 000000000..e603394e7
--- /dev/null
+++ b/docs/cpp/search/typedefs_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['difference_5ftype_99',['difference_type',['../classopendal_1_1Lister_1_1ListerIterator.html#a52f114d04a653ce28839bd74cd7f4822',1,'opendal::Lister::ListerIterator']]]
+];
diff --git a/docs/cpp/search/typedefs_1.html b/docs/cpp/search/typedefs_1.html
new file mode 100644
index 000000000..46cf01e62
--- /dev/null
+++ b/docs/cpp/search/typedefs_1.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/typedefs_1.js b/docs/cpp/search/typedefs_1.js
new file mode 100644
index 000000000..83e923070
--- /dev/null
+++ b/docs/cpp/search/typedefs_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['iterator_5fcategory_100',['iterator_category',['../classopendal_1_1Lister_1_1ListerIterator.html#ada15a4395c8bc384db1f036095d4b94d',1,'opendal::Lister::ListerIterator']]]
+];
diff --git a/docs/cpp/search/typedefs_2.html b/docs/cpp/search/typedefs_2.html
new file mode 100644
index 000000000..6835ee65b
--- /dev/null
+++ b/docs/cpp/search/typedefs_2.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/typedefs_2.js b/docs/cpp/search/typedefs_2.js
new file mode 100644
index 000000000..64a1cec54
--- /dev/null
+++ b/docs/cpp/search/typedefs_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['pointer_101',['pointer',['../classopendal_1_1Lister_1_1ListerIterator.html#a7d6a8ce5603507b8a4e4aa8f639933e8',1,'opendal::Lister::ListerIterator']]]
+];
diff --git a/docs/cpp/search/typedefs_3.html b/docs/cpp/search/typedefs_3.html
new file mode 100644
index 000000000..017004765
--- /dev/null
+++ b/docs/cpp/search/typedefs_3.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/typedefs_3.js b/docs/cpp/search/typedefs_3.js
new file mode 100644
index 000000000..2d95e564b
--- /dev/null
+++ b/docs/cpp/search/typedefs_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['reference_102',['reference',['../classopendal_1_1Lister_1_1ListerIterator.html#ae250948d8aa8e89596d84000868b3a53',1,'opendal::Lister::ListerIterator']]]
+];
diff --git a/docs/cpp/search/typedefs_4.html b/docs/cpp/search/typedefs_4.html
new file mode 100644
index 000000000..81466a5d2
--- /dev/null
+++ b/docs/cpp/search/typedefs_4.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/cpp/search/typedefs_4.js b/docs/cpp/search/typedefs_4.js
new file mode 100644
index 000000000..e32a03820
--- /dev/null
+++ b/docs/cpp/search/typedefs_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['value_5ftype_103',['value_type',['../classopendal_1_1Lister_1_1ListerIterator.html#af9d274811f7953981f65ae7c1de8e638',1,'opendal::Lister::ListerIterator']]]
+];
diff --git a/docs/cpp/search/variables_0.js b/docs/cpp/search/variables_0.js
index cdcc966f7..36af4623d 100644
--- a/docs/cpp/search/variables_0.js
+++ b/docs/cpp/search/variables_0.js
@@ -1,8 +1,8 @@
 var searchData=
 [
-  ['cache_5fcontrol_63',['cache_control',['../structopendal_1_1Metadata.html#a54aa48a42c283dae626fae2f15197ecd',1,'opendal::Metadata']]],
-  ['content_5fdisposition_64',['content_disposition',['../structopendal_1_1Metadata.html#a03bb80ddc8a734bf3568397070b9c25c',1,'opendal::Metadata']]],
-  ['content_5flength_65',['content_length',['../structopendal_1_1Metadata.html#abac7ec36113aec8c3e7ad885ffbf3141',1,'opendal::Metadata']]],
-  ['content_5fmd5_66',['content_md5',['../structopendal_1_1Metadata.html#ac62a1144f48e70b73cb99a9172b52c7a',1,'opendal::Metadata']]],
-  ['content_5ftype_67',['content_type',['../structopendal_1_1Metadata.html#a63bec27aebb286fec3e280924e311949',1,'opendal::Metadata']]]
+  ['cache_5fcontrol_90',['cache_control',['../structopendal_1_1Metadata.html#a54aa48a42c283dae626fae2f15197ecd',1,'opendal::Metadata']]],
+  ['content_5fdisposition_91',['content_disposition',['../structopendal_1_1Metadata.html#a03bb80ddc8a734bf3568397070b9c25c',1,'opendal::Metadata']]],
+  ['content_5flength_92',['content_length',['../structopendal_1_1Metadata.html#abac7ec36113aec8c3e7ad885ffbf3141',1,'opendal::Metadata']]],
+  ['content_5fmd5_93',['content_md5',['../structopendal_1_1Metadata.html#ac62a1144f48e70b73cb99a9172b52c7a',1,'opendal::Metadata']]],
+  ['content_5ftype_94',['content_type',['../structopendal_1_1Metadata.html#a63bec27aebb286fec3e280924e311949',1,'opendal::Metadata']]]
 ];
diff --git a/docs/cpp/search/variables_1.js b/docs/cpp/search/variables_1.js
index 5ca75ab48..889b49ed3 100644
--- a/docs/cpp/search/variables_1.js
+++ b/docs/cpp/search/variables_1.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['etag_68',['etag',['../structopendal_1_1Metadata.html#a53f7daea35cf3b0b374a956b7cfb568e',1,'opendal::Metadata']]]
+  ['etag_95',['etag',['../structopendal_1_1Metadata.html#a53f7daea35cf3b0b374a956b7cfb568e',1,'opendal::Metadata']]]
 ];
diff --git a/docs/cpp/search/variables_2.js b/docs/cpp/search/variables_2.js
index c6d204a16..e29674292 100644
--- a/docs/cpp/search/variables_2.js
+++ b/docs/cpp/search/variables_2.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['last_5fmodified_69',['last_modified',['../structopendal_1_1Metadata.html#ace9b06b10c6e26c5a13524ce600be506',1,'opendal::Metadata']]]
+  ['last_5fmodified_96',['last_modified',['../structopendal_1_1Metadata.html#ace9b06b10c6e26c5a13524ce600be506',1,'opendal::Metadata']]]
 ];
diff --git a/docs/cpp/search/variables_3.js b/docs/cpp/search/variables_3.js
index 2822ebdde..757269ed1 100644
--- a/docs/cpp/search/variables_3.js
+++ b/docs/cpp/search/variables_3.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['path_70',['path',['../structopendal_1_1Entry.html#a0a305260835f4c01e413282ea458a48e',1,'opendal::Entry']]]
+  ['path_97',['path',['../structopendal_1_1Entry.html#a0a305260835f4c01e413282ea458a48e',1,'opendal::Entry']]]
 ];
diff --git a/docs/cpp/search/variables_4.js b/docs/cpp/search/variables_4.js
index 374ff0038..663013b9b 100644
--- a/docs/cpp/search/variables_4.js
+++ b/docs/cpp/search/variables_4.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['type_71',['type',['../structopendal_1_1Metadata.html#a0ebe6721b204029a4e842bcb80d0fb91',1,'opendal::Metadata']]]
+  ['type_98',['type',['../structopendal_1_1Metadata.html#a0ebe6721b204029a4e842bcb80d0fb91',1,'opendal::Metadata']]]
 ];
diff --git a/docs/lua/classes/opendal.metadata.html b/docs/lua/classes/opendal.metadata.html
index 8d3614db2..46279ea53 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-09-05 17:42:50 </i>
+<i style="float:right;">Last updated 2023-09-06 02:58:39 </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 2000d635e..cda37aff1 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-09-05 17:42:50 </i>
+<i style="float:right;">Last updated 2023-09-06 02:58:39 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/lua/index.html b/docs/lua/index.html
index a57dc04ab..1a925174f 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-09-05 17:42:50 </i>
+<i style="float:right;">Last updated 2023-09-06 02:58:39 </i>
 </div> <!-- id="about" -->
 </div> <!-- id="container" -->
 </body>
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index 8fdda905c..65ccdf1fa 100644
--- a/docs/nodejs/classes/BlockingLister.html
+++ b/docs/nodejs/classes/BlockingLister.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">BlockingLister</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L435">index.d.ts:435</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L435">index.d.ts:435</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -51,7 +51,7 @@
 <li class="tsd-description">
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L436">index.d.ts:436</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L436">index.d.ts:436</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index ac88de651..13942846e 100644
--- a/docs/nodejs/classes/Entry.html
+++ b/docs/nodejs/classes/Entry.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Entry</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L398">index.d.ts:398</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L398">index.d.ts:398</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -53,7 +53,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L400">index.d.ts:400</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L400">index.d.ts:400</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index 56745164e..c0df974c9 100644
--- a/docs/nodejs/classes/Lister.html
+++ b/docs/nodejs/classes/Lister.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Lister</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L424">index.d.ts:424</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L424">index.d.ts:424</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -57,7 +57,7 @@ thing internally.</p>
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L433">index.d.ts:433</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L433">index.d.ts:433</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index 0f8ffc936..06551d93e 100644
--- a/docs/nodejs/classes/Metadata.html
+++ b/docs/nodejs/classes/Metadata.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Metadata</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L402">index.d.ts:402</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L402">index.d.ts:402</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -63,7 +63,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L408">index.d.ts:408</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L408">index.d.ts:408</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="contentLength" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Length</span><a href="#contentLength" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -73,7 +73,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L410">index.d.ts:410</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L410">index.d.ts:410</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="contentMd5" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Md5</span><a href="#contentMd5" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -83,7 +83,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L412">index.d.ts:412</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L412">index.d.ts:412</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="contentType" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Type</span><a href="#contentType" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -93,7 +93,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L414">index.d.ts:414</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L414">index.d.ts:414</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="etag" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>etag</span><a href="#etag" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -103,7 +103,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L416">index.d.ts:416</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L416">index.d.ts:416</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="lastModified" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>last<wbr/>Modified</span><a href="#lastModified" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -114,7 +114,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L422">index.d.ts:422</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L422">index.d.ts:422</a></li></ul></aside></li></ul></section></section>
 <section class="tsd-panel-group tsd-member-group">
 <h2>Methods</h2>
 <section class="tsd-panel tsd-member"><a id="isDirectory" class="tsd-anchor"></a>
@@ -126,7 +126,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L404">index.d.ts:404</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L404">index.d.ts:404</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="isFile" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>File</span><a href="#isFile" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -136,7 +136,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L406">index.d.ts:406</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L406">index.d.ts:406</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index ec39439e7..0a93f78ce 100644
--- a/docs/nodejs/classes/Operator.html
+++ b/docs/nodejs/classes/Operator.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Operator</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L33">index.d.ts:33</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L33">index.d.ts:33</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -79,7 +79,7 @@
 <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="Operator.html" class="tsd-signature-type tsd-kind-class">Operator</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L35">index.d.ts:35</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L35">index.d.ts:35</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>
@@ -104,7 +104,7 @@
 <h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L170">index.d.ts:170</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L170">index.d.ts:170</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="check" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>check</span><a href="#check" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -117,7 +117,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L78">index.d.ts:78</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L78">index.d.ts:78</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="copy" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>copy</span><a href="#copy" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -136,7 +136,7 @@
 <h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L179">index.d.ts:179</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L179">index.d.ts:179</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="copySync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>copy<wbr/>Sync</span><a href="#copySync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -155,7 +155,7 @@
 <h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L188">index.d.ts:188</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L188">index.d.ts:188</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="createDir" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a href="#createDir" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -172,7 +172,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L105">index.d.ts:105</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L105">index.d.ts:105</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="createDirSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>create<wbr/>Dir<wbr/>Sync</span><a href="#createDirSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -189,7 +189,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L114">index.d.ts:114</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L114">index.d.ts:114</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -207,7 +207,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L269">index.d.ts:269</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L269">index.d.ts:269</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="deleteSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>delete<wbr/>Sync</span><a href="#deleteSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -224,7 +224,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L278">index.d.ts:278</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L278">index.d.ts:278</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="isExist" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>Exist</span><a href="#isExist" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -241,7 +241,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L87">index.d.ts:87</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L87">index.d.ts:87</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="isExistSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>Exist<wbr/>Sync</span><a href="#isExistSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -258,7 +258,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L96">index.d.ts:96</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L96">index.d.ts:96</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="list" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -277,7 +277,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L325">index.d.ts:325</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L325">index.d.ts:325</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="listSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>list<wbr/>Sync</span><a href="#listSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -296,7 +296,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L348">index.d.ts:348</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L348">index.d.ts:348</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="presignRead" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a href="#presignRead" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -316,7 +316,7 @@
 <h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L364">index.d.ts:364</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L364">index.d.ts:364</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="presignStat" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a href="#presignStat" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -336,7 +336,7 @@
 <h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L396">index.d.ts:396</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L396">index.d.ts:396</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="presignWrite" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span><a href="#presignWrite" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -356,7 +356,7 @@
 <h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L380">index.d.ts:380</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L380">index.d.ts:380</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="read" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -373,7 +373,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L123">index.d.ts:123</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L123">index.d.ts:123</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="readSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>read<wbr/>Sync</span><a href="#readSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -390,7 +390,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Buffer</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L132">index.d.ts:132</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L132">index.d.ts:132</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="remove" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>remove</span><a href="#remove" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -408,7 +408,7 @@
 <h5><span class="tsd-kind-parameter">paths</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L290">index.d.ts:290</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L290">index.d.ts:290</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="removeAll" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>remove<wbr/>All</span><a href="#removeAll" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -426,7 +426,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L302">index.d.ts:302</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L302">index.d.ts:302</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="rename" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -446,7 +446,7 @@
 <h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L199">index.d.ts:199</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L199">index.d.ts:199</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="renameSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>rename<wbr/>Sync</span><a href="#renameSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -466,7 +466,7 @@
 <h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L210">index.d.ts:210</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L210">index.d.ts:210</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="scan" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>scan</span><a href="#scan" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -485,7 +485,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L234">index.d.ts:234</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L234">index.d.ts:234</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="scanSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>scan<wbr/>Sync</span><a href="#scanSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -504,7 +504,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type tsd-kind-class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L257">index.d.ts:257</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L257">index.d.ts:257</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="stat" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -527,7 +527,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L55">index.d.ts:55</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L55">index.d.ts:55</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="statSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>stat<wbr/>Sync</span><a href="#statSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -544,7 +544,7 @@
 <h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L67">index.d.ts:67</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L67">index.d.ts:67</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="write" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -563,7 +563,7 @@
 <h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L143">index.d.ts:143</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L143">index.d.ts:143</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member"><a id="writeSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>write<wbr/>Sync</span><a href="#writeSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures">
@@ -582,7 +582,7 @@
 <h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L154">index.d.ts:154</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L154">index.d.ts:154</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
diff --git a/docs/nodejs/interfaces/PresignedRequest.html b/docs/nodejs/interfaces/PresignedRequest.html
index bb921c391..59e90026d 100644
--- a/docs/nodejs/interfaces/PresignedRequest.html
+++ b/docs/nodejs/interfaces/PresignedRequest.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">PresignedRequest</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L25">index.d.ts:25</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L25">index.d.ts:25</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -40,21 +40,21 @@
 <div class="tsd-comment tsd-typography"><p>HTTP headers of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L31">index.d.ts:31</a></li></ul></aside></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L31">index.d.ts:31</a></li></ul></aside></section>
 <section class="tsd-panel tsd-member"><a id="method" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <div class="tsd-signature"><span class="tsd-kind-property">method</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 <div class="tsd-comment tsd-typography"><p>HTTP method of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside></section>
 <section class="tsd-panel tsd-member"><a id="url" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <div class="tsd-signature"><span class="tsd-kind-property">url</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 <div class="tsd-comment tsd-typography"><p>URL of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/0dc5031/bindings/nodejs/index.d.ts#L29">index.d.ts:29</a></li></ul></aside></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/3760176/bindings/nodejs/index.d.ts#L29">index.d.ts:29</a></li></ul></aside></section></section></div>
 <div class="col-sidebar">
 <div class="page-menu">
 <div class="tsd-navigation settings">
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 02427ef07..86a351db5 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Overview | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/overview"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 622bf226b..add72fc4b 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -165,19 +165,19 @@
                     <a class="class" href="#Metadata">Metadata</a>
                             <ul class="memberlist">
                         <li>
-                                <a class="variable" href="#Metadata.mode">mode</a>
+                                <a class="variable" href="#Metadata.content_md5">content_md5</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_length">content_length</a>
+                                <a class="variable" href="#Metadata.mode">mode</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_type">content_type</a>
+                                <a class="variable" href="#Metadata.content_disposition">content_disposition</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_disposition">content_disposition</a>
+                                <a class="variable" href="#Metadata.content_length">content_length</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_md5">content_md5</a>
+                                <a class="variable" href="#Metadata.content_type">content_type</a>
                         </li>
                         <li>
                                 <a class="variable" href="#Metadata.etag">etag</a>
@@ -192,10 +192,10 @@
                                 <a class="variable" href="#PresignedRequest.headers">headers</a>
                         </li>
                         <li>
-                                <a class="variable" href="#PresignedRequest.method">method</a>
+                                <a class="variable" href="#PresignedRequest.url">url</a>
                         </li>
                         <li>
-                                <a class="variable" href="#PresignedRequest.url">url</a>
+                                <a class="variable" href="#PresignedRequest.method">method</a>
                         </li>
                 </ul>
 
@@ -924,65 +924,65 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <div id="Metadata.mode" class="classattr">
+                            <div id="Metadata.content_md5" class="classattr">
                                 <div class="attr variable">
-            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
+            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.mode"></a>
+    <a class="headerlink" href="#Metadata.content_md5"></a>
     
-            <div class="docstring"><p>mode represent this entry's mode.</p>
+            <div class="docstring"><p>Content MD5 of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_length" class="classattr">
+                            <div id="Metadata.mode" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_length</span><span class="annotation">: int</span>
+            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_length"></a>
+    <a class="headerlink" href="#Metadata.mode"></a>
     
-            <div class="docstring"><p>Content length of this entry.</p>
+            <div class="docstring"><p>mode represent this entry's mode.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_type" class="classattr">
+                            <div id="Metadata.content_disposition" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_disposition</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_type"></a>
+    <a class="headerlink" href="#Metadata.content_disposition"></a>
+    
     
-            <div class="docstring"><p>Content Type of this entry.</p>
-</div>
-
 
                             </div>
-                            <div id="Metadata.content_disposition" class="classattr">
+                            <div id="Metadata.content_length" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_disposition</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_length</span><span class="annotation">: int</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_disposition"></a>
-    
+    <a class="headerlink" href="#Metadata.content_length"></a>
     
+            <div class="docstring"><p>Content length of this entry.</p>
+</div>
+
 
                             </div>
-                            <div id="Metadata.content_md5" class="classattr">
+                            <div id="Metadata.content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_md5"></a>
+    <a class="headerlink" href="#Metadata.content_type"></a>
     
-            <div class="docstring"><p>Content MD5 of this entry.</p>
+            <div class="docstring"><p>Content Type of this entry.</p>
 </div>
 
 
@@ -1026,28 +1026,28 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
 
 
                             </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.method" class="classattr">
                                 <div class="attr variable">
-            <span class="name">url</span><span class="annotation">: str</span>
+            <span class="name">method</span><span class="annotation">: str</span>
 
         
     </div>
-    <a class="headerlink" href="#PresignedRequest.url"></a>
+    <a class="headerlink" href="#PresignedRequest.method"></a>
     
-            <div class="docstring"><p>Return the URL of this request.</p>
+            <div class="docstring"><p>Return the HTTP method of this request.</p>
 </div>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index 88f78f99f..ccae8713f 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/services/azblob/index.html b/docs/services/azblob/index.html
index 9049e9924..929c41650 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/azdfs/index.html b/docs/services/azdfs/index.html
index 25060f253..551e0a75e 100644
--- a/docs/services/azdfs/index.html
+++ b/docs/services/azdfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Azdfs | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/azdfs"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta d [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 47cafcfd1..fee9c9fe5 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 26b2c0d9a..be20654d2 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 b8c121ea3..fcdea9fd8 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 add67729e..642b0b2b0 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 864a8fc35..2eac00fc1 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 81338fc0b..27de40e46 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 e6a62c187..835e4f1ba 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 39d696d5c..2b77a5cf7 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 29ee3cada..a6a133c67 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 75624a036..fbf7d9ec8 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 e00a592fd..5bf18827e 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 e1ba7e828..4824f4883 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 7abdb3511..b94b1b974 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 e90d69f30..7af42561b 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 c255fbf03..b52b261b3 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 250d76436..afc84a466 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 5202ee860..c91caf2e1 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 b7b38627f..e7ed0c686 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 a5cb76643..5046f04e7 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 ac7281481..d5651de34 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 42bfd0210..d78eb89eb 100644
--- a/docs/services/sftp/index.html
+++ b/docs/services/sftp/index.html
@@ -5,15 +5,15 @@
 <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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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 [...]
-Welcome to leave your comments or make contributions.</p><p>You can refer to <!-- -->[<code>SftpBuilder</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" [...]
-<script src="/assets/js/runtime~main.ce968d03.js"></script>
+Welcome to leave your comments or make contributions.</p><p>You can refer to <!-- -->[<code>SftpBuilder</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" [...]
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 853601d5e..fcf8a2792 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 ccd4da184..f4454103e 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/wasabi/index.html b/docs/services/wasabi/index.html
index c6308948a..b5a92393b 100644
--- a/docs/services/wasabi/index.html
+++ b/docs/services/wasabi/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Wasabi | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=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/wasabi"><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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 3651e0abf..c728fcfb9 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.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 87eb4d4d3..a64da9f4a 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/vision/index.html b/docs/vision/index.html
index 2666c6577..30b16d6f2 100644
--- a/docs/vision/index.html
+++ b/docs/vision/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.4.1">
 <title data-rh="true">Vision | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/vision"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.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.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/download/index.html b/download/index.html
index 65fba5b55..100191102 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 314c1b256..907717944 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.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.ce968d03.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.bb5b6511.js" as="script">
 <link rel="preload" href="/assets/js/main.5c2e863e.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.ce968d03.js"></script>
+<script src="/assets/js/runtime~main.bb5b6511.js"></script>
 <script src="/assets/js/main.5c2e863e.js"></script>
 </body>
 </html>
\ No newline at end of file