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/10/17 11:06:41 UTC
[incubator-opendal] branch gh-pages updated: deploy: 8c6e7db4f37e1cadf7d39b734d33ea7e5b63813e
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 0e1d7f892 deploy: 8c6e7db4f37e1cadf7d39b734d33ea7e5b63813e
0e1d7f892 is described below
commit 0e1d7f892f316ddd9ddf98b7e34d21623f9b7693
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Tue Oct 17 11:06:36 2023 +0000
deploy: 8c6e7db4f37e1cadf7d39b734d33ea7e5b63813e
---
404.html | 4 +-
.../{054cd2fb.05b1ca11.js => 054cd2fb.f1e82e6a.js} | 2 +-
.../{0605a481.c5b4ff11.js => 0605a481.74018a23.js} | 2 +-
.../{093f5f04.ebab9b4e.js => 093f5f04.5e9be7b7.js} | 2 +-
.../{09d8124e.ca58abe6.js => 09d8124e.65a5992e.js} | 2 +-
.../{136e1c50.49be407c.js => 136e1c50.8c20c409.js} | 2 +-
.../{151cd40f.cf833781.js => 151cd40f.8a384fd2.js} | 2 +-
.../{1957547a.8c41877a.js => 1957547a.a6757b5a.js} | 2 +-
assets/js/1db64337.6fbdf30a.js | 1 -
assets/js/1db64337.f5041b1a.js | 1 +
.../{22d8fa67.632f6255.js => 22d8fa67.c0c4dc9d.js} | 2 +-
.../{29b208a4.30158041.js => 29b208a4.30ec9272.js} | 2 +-
.../{2cbf1097.c56bd0f3.js => 2cbf1097.6e552529.js} | 2 +-
.../{3632610d.17aec297.js => 3632610d.5f639458.js} | 2 +-
.../{42347498.c9357ac2.js => 42347498.d601bddb.js} | 2 +-
.../{434bbc94.112eceeb.js => 434bbc94.c7d16213.js} | 2 +-
.../{4e2d8f56.399939e6.js => 4e2d8f56.77567fd6.js} | 2 +-
.../{500d55cb.9e6f440b.js => 500d55cb.26a222ec.js} | 2 +-
.../{57a16c1d.3b7a0b05.js => 57a16c1d.9f34ef4e.js} | 2 +-
.../{592d1076.6ae0d15a.js => 592d1076.0b8ec832.js} | 2 +-
.../{621b831b.b20be609.js => 621b831b.6099f5c9.js} | 2 +-
.../{65bf2b43.544b33e6.js => 65bf2b43.e2552d92.js} | 2 +-
.../{67ecc70e.137fb3f6.js => 67ecc70e.c4cd5020.js} | 2 +-
.../{6dc695d1.baaa37c2.js => 6dc695d1.49401c10.js} | 2 +-
.../{6f4d3fa1.cfc2b5ce.js => 6f4d3fa1.0ea17113.js} | 2 +-
.../{7263c0b5.33fedbc8.js => 7263c0b5.a8f81849.js} | 2 +-
assets/js/8070e160.2ebaf0e6.js | 1 +
assets/js/8070e160.cef6e78c.js | 1 -
.../{8b18d929.727b33e6.js => 8b18d929.e8a5211f.js} | 2 +-
assets/js/8cc9519e.c1a3c1a6.js | 1 +
assets/js/8cc9519e.d2d2c228.js | 1 -
.../{8f4159f2.d4696ecd.js => 8f4159f2.d8c07b90.js} | 2 +-
.../{8fb00c63.24de9bd8.js => 8fb00c63.bd4216a0.js} | 2 +-
.../{939f74f6.40b4cce7.js => 939f74f6.b2fa9dae.js} | 2 +-
.../{a0405932.3c1b9a2b.js => a0405932.866b72a6.js} | 2 +-
.../{b114cefa.a998203a.js => b114cefa.89f08969.js} | 2 +-
.../{b56f9725.12edfff6.js => b56f9725.af705236.js} | 2 +-
.../{bb5b2057.ee60e2b8.js => bb5b2057.5e780037.js} | 2 +-
.../{c0600a1b.0328eef1.js => c0600a1b.0484067a.js} | 2 +-
.../{c46c6b55.2d1624db.js => c46c6b55.10ed998e.js} | 2 +-
.../{c6ab695b.cd668bfd.js => c6ab695b.e9216ba4.js} | 2 +-
.../{cc62039a.898c9019.js => cc62039a.ecc00c98.js} | 2 +-
.../{d3c0d8d5.1fec8af6.js => d3c0d8d5.6693dd3a.js} | 2 +-
.../{ddccef4c.70d6b40c.js => ddccef4c.55441dd9.js} | 2 +-
.../{e892cec6.e0602fb1.js => e892cec6.3e2f0973.js} | 2 +-
.../{f1ca5a39.efaa9f05.js => f1ca5a39.1fd2d3bb.js} | 2 +-
.../{f9145722.f47d470f.js => f9145722.4b9d4a86.js} | 2 +-
.../{fde7cc64.dab59345.js => fde7cc64.b82e39f2.js} | 2 +-
...e~main.c025a2a9.js => runtime~main.7228dc69.js} | 2 +-
blog/archive/index.html | 4 +-
blog/how-opendal-read-data/index.html | 4 +-
blog/index.html | 4 +-
blog/opendal-access-data-freely/index.html | 4 +-
blog/opendal-entered-apache-incubator/index.html | 4 +-
blog/owo-1/index.html | 4 +-
blog/tags/announcement/index.html | 4 +-
blog/tags/index.html | 4 +-
blog/tags/internal/index.html | 4 +-
blog/tags/owo/index.html | 4 +-
community/category/committers/index.html | 4 +-
community/category/reference/index.html | 4 +-
community/committers/committer/index.html | 4 +-
community/committers/podling-report/index.html | 4 +-
.../reference/generate_release_note/index.html | 4 +-
.../committers/reference/setup_gpg/index.html | 4 +-
community/committers/release/index.html | 4 +-
community/committers/verify/index.html | 4 +-
community/index.html | 4 +-
docs/category/services/index.html | 4 +-
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 | 72 +-
docs/python/search.js | 2 +-
docs/quickstart/index.html | 6 +-
docs/rust/implementors/core/clone/trait.Clone.js | 2 +-
docs/rust/implementors/core/cmp/trait.Eq.js | 2 +-
docs/rust/implementors/core/cmp/trait.PartialEq.js | 2 +-
docs/rust/implementors/core/convert/trait.From.js | 2 +-
.../implementors/core/default/trait.Default.js | 2 +-
docs/rust/implementors/core/fmt/trait.Debug.js | 2 +-
docs/rust/implementors/core/fmt/trait.Display.js | 2 +-
.../core/future/future/trait.Future.js | 2 +-
docs/rust/implementors/core/hash/trait.Hash.js | 2 +-
.../core/iter/traits/iterator/trait.Iterator.js | 2 +-
docs/rust/implementors/core/marker/trait.Copy.js | 2 +-
docs/rust/implementors/core/marker/trait.Freeze.js | 2 +-
docs/rust/implementors/core/marker/trait.Send.js | 2 +-
.../implementors/core/marker/trait.StructuralEq.js | 2 +-
.../core/marker/trait.StructuralPartialEq.js | 2 +-
docs/rust/implementors/core/marker/trait.Sync.js | 2 +-
docs/rust/implementors/core/marker/trait.Unpin.js | 2 +-
.../core/panic/unwind_safe/trait.RefUnwindSafe.js | 2 +-
.../core/panic/unwind_safe/trait.UnwindSafe.js | 2 +-
.../implementors/core/str/traits/trait.FromStr.js | 2 +-
.../futures_core/stream/trait.Stream.js | 2 +-
docs/rust/implementors/std/io/trait.Read.js | 2 +-
docs/rust/implementors/std/io/trait.Seek.js | 2 +-
docs/rust/opendal/all.html | 2 +-
docs/rust/opendal/enum.EntryMode.html | 2 +-
docs/rust/opendal/enum.Metakey.html | 4 +-
docs/rust/opendal/enum.Scheme.html | 10 +-
docs/rust/opendal/raw/enum.Operation.html | 2 +-
docs/rust/opendal/raw/enum.PresignOperation.html | 2 +-
docs/rust/opendal/raw/oio/enum.ReadOperation.html | 2 +-
docs/rust/opendal/raw/oio/enum.WriteOperation.html | 2 +-
docs/rust/opendal/raw/oio/struct.ChunkedBytes.html | 4 +-
docs/rust/opendal/raw/oio/struct.Cursor.html | 4 +-
docs/rust/opendal/raw/oio/trait.BlockingRead.html | 6 +-
docs/rust/opendal/raw/oio/trait.BlockingWrite.html | 4 +-
docs/rust/opendal/raw/oio/trait.Page.html | 8 +-
docs/rust/opendal/raw/oio/trait.Read.html | 18 +-
docs/rust/opendal/raw/oio/trait.Stream.html | 4 +-
docs/rust/opendal/raw/oio/trait.WriteBuf.html | 2 +-
.../azfile/backend/struct.AzfileBuilder.html | 11 +
docs/rust/opendal/services/index.html | 4 +-
docs/rust/opendal/services/sidebar-items.js | 2 +-
docs/rust/opendal/services/struct.Azdls.html | 4 +-
.../struct.Azfile.html} | 160 ++--
docs/rust/opendal/struct.BlockingReader.html | 4 +-
docs/rust/opendal/struct.Error.html | 2 +-
docs/rust/opendal/struct.Reader.html | 16 +-
docs/rust/opendal/trait.Builder.html | 2 +-
docs/rust/search-index.js | 2 +-
docs/rust/src-files.js | 2 +-
docs/rust/src/opendal/services/azdls/error.rs.html | 2 +-
.../src/opendal/services/azfile/backend.rs.html | 885 +++++++++++++++++++++
docs/rust/src/opendal/services/azfile/core.rs.html | 837 +++++++++++++++++++
.../services/{azdls => azfile}/error.rs.html | 24 +-
docs/rust/src/opendal/services/azfile/mod.rs.html | 49 ++
.../rust/src/opendal/services/azfile/pager.rs.html | 463 +++++++++++
.../src/opendal/services/azfile/writer.rs.html | 227 ++++++
docs/rust/src/opendal/services/mod.rs.html | 10 +
docs/rust/src/opendal/types/scheme.rs.html | 8 +
docs/services/atomicserver/index.html | 6 +-
docs/services/azblob/index.html | 6 +-
docs/services/azdls/index.html | 6 +-
docs/services/cacache/index.html | 6 +-
docs/services/cos/index.html | 6 +-
docs/services/d1/index.html | 6 +-
docs/services/dashmap/index.html | 6 +-
docs/services/dropbox/index.html | 6 +-
docs/services/etcd/index.html | 6 +-
docs/services/foundationdb/index.html | 6 +-
docs/services/fs/index.html | 6 +-
docs/services/ftp/index.html | 6 +-
docs/services/gcs/index.html | 6 +-
docs/services/gdrive/index.html | 6 +-
docs/services/ghac/index.html | 6 +-
docs/services/hdfs/index.html | 6 +-
docs/services/http/index.html | 6 +-
docs/services/ipfs/index.html | 6 +-
docs/services/ipmfs/index.html | 6 +-
docs/services/libsql/index.html | 6 +-
docs/services/memcached/index.html | 6 +-
docs/services/memory/index.html | 6 +-
docs/services/moka/index.html | 6 +-
docs/services/mysql/index.html | 6 +-
docs/services/obs/index.html | 6 +-
docs/services/onedrive/index.html | 6 +-
docs/services/oss/index.html | 6 +-
docs/services/persy/index.html | 6 +-
docs/services/postgresql/index.html | 6 +-
docs/services/redb/index.html | 6 +-
docs/services/redis/index.html | 6 +-
docs/services/rocksdb/index.html | 6 +-
docs/services/s3/index.html | 6 +-
docs/services/sftp/index.html | 6 +-
docs/services/sled/index.html | 6 +-
docs/services/sqlite/index.html | 6 +-
docs/services/supabase/index.html | 6 +-
docs/services/tikv/index.html | 6 +-
docs/services/vercel_artifacts/index.html | 6 +-
docs/services/wasabi/index.html | 6 +-
docs/services/webdav/index.html | 6 +-
docs/services/webhdfs/index.html | 6 +-
download/index.html | 4 +-
index.html | 4 +-
185 files changed, 3009 insertions(+), 449 deletions(-)
diff --git a/404.html b/404.html
index 1c3a9cea0..39975d341 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/assets/js/054cd2fb.05b1ca11.js b/assets/js/054cd2fb.f1e82e6a.js
similarity index 84%
rename from assets/js/054cd2fb.05b1ca11.js
rename to assets/js/054cd2fb.f1e82e6a.js
index d9dceab4f..38d881395 100644
--- a/assets/js/054cd2fb.05b1ca11.js
+++ b/assets/js/054cd2fb.f1e82e6a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1846],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1846],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/0605a481.c5b4ff11.js b/assets/js/0605a481.74018a23.js
similarity index 83%
rename from assets/js/0605a481.c5b4ff11.js
rename to assets/js/0605a481.74018a23.js
index 3bdd0b31d..899192437 100644
--- a/assets/js/0605a481.c5b4ff11.js
+++ b/assets/js/0605a481.74018a23.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2113],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2113],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/093f5f04.ebab9b4e.js b/assets/js/093f5f04.5e9be7b7.js
similarity index 84%
rename from assets/js/093f5f04.ebab9b4e.js
rename to assets/js/093f5f04.5e9be7b7.js
index edd93569a..d3fc6206f 100644
--- a/assets/js/093f5f04.ebab9b4e.js
+++ b/assets/js/093f5f04.5e9be7b7.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 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([[6915],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/09d8124e.ca58abe6.js b/assets/js/09d8124e.65a5992e.js
similarity index 85%
rename from assets/js/09d8124e.ca58abe6.js
rename to assets/js/09d8124e.65a5992e.js
index db761a0b9..a6cb6b674 100644
--- a/assets/js/09d8124e.ca58abe6.js
+++ b/assets/js/09d8124e.65a5992e.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4543],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4543],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/136e1c50.49be407c.js b/assets/js/136e1c50.8c20c409.js
similarity index 83%
rename from assets/js/136e1c50.49be407c.js
rename to assets/js/136e1c50.8c20c409.js
index 09f23d335..183e3e203 100644
--- a/assets/js/136e1c50.49be407c.js
+++ b/assets/js/136e1c50.8c20c409.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.cf833781.js b/assets/js/151cd40f.8a384fd2.js
similarity index 86%
rename from assets/js/151cd40f.cf833781.js
rename to assets/js/151cd40f.8a384fd2.js
index 6a756bf1e..e24a2f279 100644
--- a/assets/js/151cd40f.cf833781.js
+++ b/assets/js/151cd40f.8a384fd2.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.8c41877a.js b/assets/js/1957547a.a6757b5a.js
similarity index 72%
rename from assets/js/1957547a.8c41877a.js
rename to assets/js/1957547a.a6757b5a.js
index f9f079c4c..9774bf92e 100644
--- a/assets/js/1957547a.8c41877a.js
+++ b/assets/js/1957547a.a6757b5a.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.6fbdf30a.js b/assets/js/1db64337.6fbdf30a.js
deleted file mode 100644
index 0cf7c192e..000000000
--- a/assets/js/1db64337.6fbdf30a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.f5041b1a.js b/assets/js/1db64337.f5041b1a.js
new file mode 100644
index 000000000..35d936ff4
--- /dev/null
+++ b/assets/js/1db64337.f5041b1a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1372],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/22d8fa67.632f6255.js b/assets/js/22d8fa67.c0c4dc9d.js
similarity index 72%
rename from assets/js/22d8fa67.632f6255.js
rename to assets/js/22d8fa67.c0c4dc9d.js
index 7f5bfbf1c..35d1b3888 100644
--- a/assets/js/22d8fa67.632f6255.js
+++ b/assets/js/22d8fa67.c0c4dc9d.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.30158041.js b/assets/js/29b208a4.30ec9272.js
similarity index 84%
rename from assets/js/29b208a4.30158041.js
rename to assets/js/29b208a4.30ec9272.js
index c68989ee8..68b1014d0 100644
--- a/assets/js/29b208a4.30158041.js
+++ b/assets/js/29b208a4.30ec9272.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.c56bd0f3.js b/assets/js/2cbf1097.6e552529.js
similarity index 91%
rename from assets/js/2cbf1097.c56bd0f3.js
rename to assets/js/2cbf1097.6e552529.js
index 5b2bfd859..dd6ac2d47 100644
--- a/assets/js/2cbf1097.c56bd0f3.js
+++ b/assets/js/2cbf1097.6e552529.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2804],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2804],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/3632610d.17aec297.js b/assets/js/3632610d.5f639458.js
similarity index 73%
rename from assets/js/3632610d.17aec297.js
rename to assets/js/3632610d.5f639458.js
index eb892858f..32beb52c3 100644
--- a/assets/js/3632610d.17aec297.js
+++ b/assets/js/3632610d.5f639458.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2963],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2963],{3905:(e,t,a)=>{a.d(t,{Zo:()=>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/42347498.c9357ac2.js b/assets/js/42347498.d601bddb.js
similarity index 85%
rename from assets/js/42347498.c9357ac2.js
rename to assets/js/42347498.d601bddb.js
index 6f36a3e87..a1225ea2d 100644
--- a/assets/js/42347498.c9357ac2.js
+++ b/assets/js/42347498.d601bddb.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7254],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7254],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retu [...]
\ No newline at end of file
diff --git a/assets/js/434bbc94.112eceeb.js b/assets/js/434bbc94.c7d16213.js
similarity index 85%
rename from assets/js/434bbc94.112eceeb.js
rename to assets/js/434bbc94.c7d16213.js
index 9505f20ef..f290e5fec 100644
--- a/assets/js/434bbc94.112eceeb.js
+++ b/assets/js/434bbc94.c7d16213.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1163],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1163],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/4e2d8f56.399939e6.js b/assets/js/4e2d8f56.77567fd6.js
similarity index 83%
rename from assets/js/4e2d8f56.399939e6.js
rename to assets/js/4e2d8f56.77567fd6.js
index bf1fd5fdb..e012382ee 100644
--- a/assets/js/4e2d8f56.399939e6.js
+++ b/assets/js/4e2d8f56.77567fd6.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6752],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6752],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/500d55cb.9e6f440b.js b/assets/js/500d55cb.26a222ec.js
similarity index 82%
rename from assets/js/500d55cb.9e6f440b.js
rename to assets/js/500d55cb.26a222ec.js
index beba4251a..bbeca80c5 100644
--- a/assets/js/500d55cb.9e6f440b.js
+++ b/assets/js/500d55cb.26a222ec.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7489],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7489],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/57a16c1d.3b7a0b05.js b/assets/js/57a16c1d.9f34ef4e.js
similarity index 83%
rename from assets/js/57a16c1d.3b7a0b05.js
rename to assets/js/57a16c1d.9f34ef4e.js
index 6aac666c1..4b00462f9 100644
--- a/assets/js/57a16c1d.3b7a0b05.js
+++ b/assets/js/57a16c1d.9f34ef4e.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.6ae0d15a.js b/assets/js/592d1076.0b8ec832.js
similarity index 83%
rename from assets/js/592d1076.6ae0d15a.js
rename to assets/js/592d1076.0b8ec832.js
index de6a474a3..9c39195d2 100644
--- a/assets/js/592d1076.6ae0d15a.js
+++ b/assets/js/592d1076.0b8ec832.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[990],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[990],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/621b831b.b20be609.js b/assets/js/621b831b.6099f5c9.js
similarity index 69%
rename from assets/js/621b831b.b20be609.js
rename to assets/js/621b831b.6099f5c9.js
index be78f175e..841d0a4d8 100644
--- a/assets/js/621b831b.b20be609.js
+++ b/assets/js/621b831b.6099f5c9.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4551],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4551],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/65bf2b43.544b33e6.js b/assets/js/65bf2b43.e2552d92.js
similarity index 82%
rename from assets/js/65bf2b43.544b33e6.js
rename to assets/js/65bf2b43.e2552d92.js
index 3c07293ba..e46734c53 100644
--- a/assets/js/65bf2b43.544b33e6.js
+++ b/assets/js/65bf2b43.e2552d92.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2115],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2115],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/67ecc70e.137fb3f6.js b/assets/js/67ecc70e.c4cd5020.js
similarity index 85%
rename from assets/js/67ecc70e.137fb3f6.js
rename to assets/js/67ecc70e.c4cd5020.js
index 0dba073a6..7e8c80ded 100644
--- a/assets/js/67ecc70e.137fb3f6.js
+++ b/assets/js/67ecc70e.c4cd5020.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4434],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4434],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/6dc695d1.baaa37c2.js b/assets/js/6dc695d1.49401c10.js
similarity index 81%
rename from assets/js/6dc695d1.baaa37c2.js
rename to assets/js/6dc695d1.49401c10.js
index 9fe301386..8942c8a31 100644
--- a/assets/js/6dc695d1.baaa37c2.js
+++ b/assets/js/6dc695d1.49401c10.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5982],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5982],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/6f4d3fa1.cfc2b5ce.js b/assets/js/6f4d3fa1.0ea17113.js
similarity index 85%
rename from assets/js/6f4d3fa1.cfc2b5ce.js
rename to assets/js/6f4d3fa1.0ea17113.js
index ad10d49fb..bea170f1f 100644
--- a/assets/js/6f4d3fa1.cfc2b5ce.js
+++ b/assets/js/6f4d3fa1.0ea17113.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5885],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5885],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/7263c0b5.33fedbc8.js b/assets/js/7263c0b5.a8f81849.js
similarity index 86%
rename from assets/js/7263c0b5.33fedbc8.js
rename to assets/js/7263c0b5.a8f81849.js
index bf6b67283..88b2da537 100644
--- a/assets/js/7263c0b5.33fedbc8.js
+++ b/assets/js/7263c0b5.a8f81849.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4649],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4649],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8070e160.2ebaf0e6.js b/assets/js/8070e160.2ebaf0e6.js
new file mode 100644
index 000000000..41d740c41
--- /dev/null
+++ b/assets/js/8070e160.2ebaf0e6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2651],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>g});var a=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8070e160.cef6e78c.js b/assets/js/8070e160.cef6e78c.js
deleted file mode 100644
index 1e7424936..000000000
--- a/assets/js/8070e160.cef6e78c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2651],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>g});var a=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8b18d929.727b33e6.js b/assets/js/8b18d929.e8a5211f.js
similarity index 89%
rename from assets/js/8b18d929.727b33e6.js
rename to assets/js/8b18d929.e8a5211f.js
index 65f0e34c7..a2852c14a 100644
--- a/assets/js/8b18d929.727b33e6.js
+++ b/assets/js/8b18d929.e8a5211f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6299],{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 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:()=>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 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.c1a3c1a6.js b/assets/js/8cc9519e.c1a3c1a6.js
new file mode 100644
index 000000000..f5dd273d9
--- /dev/null
+++ b/assets/js/8cc9519e.c1a3c1a6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1652],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>k});var r=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8cc9519e.d2d2c228.js b/assets/js/8cc9519e.d2d2c228.js
deleted file mode 100644
index 830d225fd..000000000
--- a/assets/js/8cc9519e.d2d2c228.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[1652],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>k});var r=a(7294);function 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.d4696ecd.js b/assets/js/8f4159f2.d8c07b90.js
similarity index 88%
rename from assets/js/8f4159f2.d4696ecd.js
rename to assets/js/8f4159f2.d8c07b90.js
index 60e085d1f..accda3240 100644
--- a/assets/js/8f4159f2.d4696ecd.js
+++ b/assets/js/8f4159f2.d8c07b90.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4719],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>k});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4719],{3905:(e,t,a)=>{a.d(t,{Zo:()=>o,kt:()=>k});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}retu [...]
\ No newline at end of file
diff --git a/assets/js/8fb00c63.24de9bd8.js b/assets/js/8fb00c63.bd4216a0.js
similarity index 84%
rename from assets/js/8fb00c63.24de9bd8.js
rename to assets/js/8fb00c63.bd4216a0.js
index 2f3b1596d..945a2118d 100644
--- a/assets/js/8fb00c63.24de9bd8.js
+++ b/assets/js/8fb00c63.bd4216a0.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4600],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4600],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/939f74f6.40b4cce7.js b/assets/js/939f74f6.b2fa9dae.js
similarity index 86%
rename from assets/js/939f74f6.40b4cce7.js
rename to assets/js/939f74f6.b2fa9dae.js
index 3cbd3a01b..0414068de 100644
--- a/assets/js/939f74f6.40b4cce7.js
+++ b/assets/js/939f74f6.b2fa9dae.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4277],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4277],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/a0405932.3c1b9a2b.js b/assets/js/a0405932.866b72a6.js
similarity index 84%
rename from assets/js/a0405932.3c1b9a2b.js
rename to assets/js/a0405932.866b72a6.js
index f719e1218..15ba80e94 100644
--- a/assets/js/a0405932.3c1b9a2b.js
+++ b/assets/js/a0405932.866b72a6.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[716],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[716],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
diff --git a/assets/js/b114cefa.a998203a.js b/assets/js/b114cefa.89f08969.js
similarity index 84%
rename from assets/js/b114cefa.a998203a.js
rename to assets/js/b114cefa.89f08969.js
index 272e6e72a..3ce6f130d 100644
--- a/assets/js/b114cefa.a998203a.js
+++ b/assets/js/b114cefa.89f08969.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2161],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[2161],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/b56f9725.12edfff6.js b/assets/js/b56f9725.af705236.js
similarity index 84%
rename from assets/js/b56f9725.12edfff6.js
rename to assets/js/b56f9725.af705236.js
index 524d9881a..34283d9bc 100644
--- a/assets/js/b56f9725.12edfff6.js
+++ b/assets/js/b56f9725.af705236.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[217],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[217],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/bb5b2057.ee60e2b8.js b/assets/js/bb5b2057.5e780037.js
similarity index 83%
rename from assets/js/bb5b2057.ee60e2b8.js
rename to assets/js/bb5b2057.5e780037.js
index 915de2f9f..43b7c7d02 100644
--- a/assets/js/bb5b2057.ee60e2b8.js
+++ b/assets/js/bb5b2057.5e780037.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5214],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[5214],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retu [...]
\ No newline at end of file
diff --git a/assets/js/c0600a1b.0328eef1.js b/assets/js/c0600a1b.0484067a.js
similarity index 82%
rename from assets/js/c0600a1b.0328eef1.js
rename to assets/js/c0600a1b.0484067a.js
index 758c42f1a..c91ada3f5 100644
--- a/assets/js/c0600a1b.0328eef1.js
+++ b/assets/js/c0600a1b.0484067a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8874],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8874],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/c46c6b55.2d1624db.js b/assets/js/c46c6b55.10ed998e.js
similarity index 83%
rename from assets/js/c46c6b55.2d1624db.js
rename to assets/js/c46c6b55.10ed998e.js
index e832e2881..6341e449b 100644
--- a/assets/js/c46c6b55.2d1624db.js
+++ b/assets/js/c46c6b55.10ed998e.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.cd668bfd.js b/assets/js/c6ab695b.e9216ba4.js
similarity index 72%
rename from assets/js/c6ab695b.cd668bfd.js
rename to assets/js/c6ab695b.e9216ba4.js
index 899df986f..7a0e20db8 100644
--- a/assets/js/c6ab695b.cd668bfd.js
+++ b/assets/js/c6ab695b.e9216ba4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7289],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[7289],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/cc62039a.898c9019.js b/assets/js/cc62039a.ecc00c98.js
similarity index 89%
rename from assets/js/cc62039a.898c9019.js
rename to assets/js/cc62039a.ecc00c98.js
index b890157cd..50a39bcc8 100644
--- a/assets/js/cc62039a.898c9019.js
+++ b/assets/js/cc62039a.ecc00c98.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.1fec8af6.js b/assets/js/d3c0d8d5.6693dd3a.js
similarity index 84%
rename from assets/js/d3c0d8d5.1fec8af6.js
rename to assets/js/d3c0d8d5.6693dd3a.js
index 31198b36f..20331ab8e 100644
--- a/assets/js/d3c0d8d5.1fec8af6.js
+++ b/assets/js/d3c0d8d5.6693dd3a.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/ddccef4c.70d6b40c.js b/assets/js/ddccef4c.55441dd9.js
similarity index 86%
rename from assets/js/ddccef4c.70d6b40c.js
rename to assets/js/ddccef4c.55441dd9.js
index a85f07c0a..060253b54 100644
--- a/assets/js/ddccef4c.70d6b40c.js
+++ b/assets/js/ddccef4c.55441dd9.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.e0602fb1.js b/assets/js/e892cec6.3e2f0973.js
similarity index 86%
rename from assets/js/e892cec6.e0602fb1.js
rename to assets/js/e892cec6.3e2f0973.js
index 64529fab8..2cdc876fd 100644
--- a/assets/js/e892cec6.e0602fb1.js
+++ b/assets/js/e892cec6.3e2f0973.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.efaa9f05.js b/assets/js/f1ca5a39.1fd2d3bb.js
similarity index 87%
rename from assets/js/f1ca5a39.efaa9f05.js
rename to assets/js/f1ca5a39.1fd2d3bb.js
index 0e50c144d..4590377af 100644
--- a/assets/js/f1ca5a39.efaa9f05.js
+++ b/assets/js/f1ca5a39.1fd2d3bb.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4538],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[4538],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/f9145722.f47d470f.js b/assets/js/f9145722.4b9d4a86.js
similarity index 87%
rename from assets/js/f9145722.f47d470f.js
rename to assets/js/f9145722.4b9d4a86.js
index c84134ef5..2644364b0 100644
--- a/assets/js/f9145722.f47d470f.js
+++ b/assets/js/f9145722.4b9d4a86.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6529],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retu [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[6529],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retu [...]
\ No newline at end of file
diff --git a/assets/js/fde7cc64.dab59345.js b/assets/js/fde7cc64.b82e39f2.js
similarity index 85%
rename from assets/js/fde7cc64.dab59345.js
rename to assets/js/fde7cc64.b82e39f2.js
index 7a3f6b040..8891399a0 100644
--- a/assets/js/fde7cc64.dab59345.js
+++ b/assets/js/fde7cc64.b82e39f2.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.c025a2a9.js b/assets/js/runtime~main.7228dc69.js
similarity index 82%
rename from assets/js/runtime~main.c025a2a9.js
rename to assets/js/runtime~main.7228dc69.js
index c27599fae..d677af48d 100644
--- a/assets/js/runtime~main.c025a2a9.js
+++ b/assets/js/runtime~main.7228dc69.js
@@ -1 +1 @@
-(()=>{"use strict";var e,c,a,f,b,d={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,b)=>{if(!a){var d=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,c,a,f,b,d={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,b)=>{if(!a){var d=1/0;for(i=0;i<e.length;i++){a=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<a.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index d33150373..01f0e4bbf 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 21d71ac35..810e634a4 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index a2b58e023..9232dcc59 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 07da396cc..24de561f2 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 8f7803626..312c70763 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/blog/owo-1/index.html b/blog/owo-1/index.html
index e032f8498..696f5bb52 100644
--- a/blog/owo-1/index.html
+++ b/blog/owo-1/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">OwO #1: The v0.40 Release | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/owo-1"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"> [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 d8555d371..fe4facf57 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 "announcement" | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index f26416aa3..795ae0b6f 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 d9455e22d..8d0459a25 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 "internal" | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/blog/tags/owo/index.html b/blog/tags/owo/index.html
index 55dc55eef..a10d2cf64 100644
--- a/blog/tags/owo/index.html
+++ b/blog/tags/owo/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">One post tagged with "owo" | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/owo"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" conten [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/category/committers/index.html b/community/category/committers/index.html
index 479f63e4c..2ed473b9e 100644
--- a/community/category/committers/index.html
+++ b/community/category/committers/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Committers | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/committers"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="c [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/category/reference/index.html b/community/category/reference/index.html
index a8c13a6ea..ef3934b62 100644
--- a/community/category/reference/index.html
+++ b/community/category/reference/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Reference | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/reference"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="cur [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/committers/committer/index.html b/community/committers/committer/index.html
index ea6fe6418..380a806dc 100644
--- a/community/committers/committer/index.html
+++ b/community/committers/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/community/committers/committer"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/committers/podling-report/index.html b/community/committers/podling-report/index.html
index 4c24c7fd9..e67698900 100644
--- a/community/committers/podling-report/index.html
+++ b/community/committers/podling-report/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Podling status reports | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/podling-report"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_v [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/committers/reference/generate_release_note/index.html b/community/committers/reference/generate_release_note/index.html
index 88fdb3dd4..7b2a5d7ab 100644
--- a/community/committers/reference/generate_release_note/index.html
+++ b/community/committers/reference/generate_release_note/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Generate release note | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/reference/generate_release_note"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" na [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/committers/reference/setup_gpg/index.html b/community/committers/reference/setup_gpg/index.html
index a2b1ff0d8..b130d9fb8 100644
--- a/community/committers/reference/setup_gpg/index.html
+++ b/community/committers/reference/setup_gpg/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Setup GPG key | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/reference/setup_gpg"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_versi [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/committers/release/index.html b/community/committers/release/index.html
index 1e74916e9..abfd876c4 100644
--- a/community/committers/release/index.html
+++ b/community/committers/release/index.html
@@ -5,7 +5,7 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Create a OpenDAL Release | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/release"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_versio [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.js" as="script">
</head>
<body class="navigation-with-keyboard">
@@ -20,7 +20,7 @@ please cancel the release for the current <code>release_version</code>,
<em>increase th RC counting</em> and re-initiate a release with the new <code>release_version</code>.
And remember to delete the wrong artifacts from the SVN dist repo.
Additionally, you should also drop the staging Maven artifacts on <a href="https://repository.apache.org" target="_blank" rel="noopener noreferrer">https://repository.apache.org</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="voting">Voting<a href="#voting" class="hash-link" aria-label="Direct link to Voting" title="Direct link to Voting"></a></h2><p>As an incubating project, OpenDAL requires votes from both the OpenDAL Community and Incubator Community.</p><h3 class="anchor [...]
-<script src="/assets/js/runtime~main.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/committers/verify/index.html b/community/committers/verify/index.html
index 439449a72..fcca78e07 100644
--- a/community/committers/verify/index.html
+++ b/community/committers/verify/index.html
@@ -5,7 +5,7 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Verify a release candidate | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/verify"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_versi [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.js" as="script">
</head>
<body class="navigation-with-keyboard">
@@ -13,7 +13,7 @@
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
You can download it directly from <a href="https://raw.githubusercontent.com/apache/incubator-opendal/main/scripts/check.sh" target="_blank" rel="noopener noreferrer">here</a>
or check it out from the repository:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone git@github.com:apache/incuba [...]
-<script src="/assets/js/runtime~main.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index e011d3d3f..6f3073d09 100644
--- a/community/index.html
+++ b/community/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Community | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-r [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 9f0374544..6ca82875f 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/lua/classes/opendal.metadata.html b/docs/lua/classes/opendal.metadata.html
index 9031f8fe9..6c36b1bb9 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-10-17 09:30:15 </i>
+<i style="float:right;">Last updated 2023-10-17 10:55:42 </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 122a8c13b..1efb1bb87 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-10-17 09:30:15 </i>
+<i style="float:right;">Last updated 2023-10-17 10:55:42 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
diff --git a/docs/lua/index.html b/docs/lua/index.html
index 27f8b93ef..cd42e4402 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-10-17 09:30:15 </i>
+<i style="float:right;">Last updated 2023-10-17 10:55:42 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index 1cf6aa776..27c815c41 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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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 d5459b0a9..397144e4e 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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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 815237717..e13f29a4f 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/12becec/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/8c6e7db/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"><</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">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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 aafa9ee8a..66c31c6ce 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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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 5a59bcca3..377ab5246 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/12becec/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/8c6e7db/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"><</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">></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/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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"><</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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"><</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type tsd-kind-interface">PresignedRequest</a><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><a href="Lister.html" class="tsd-signature-type tsd-kind-class">Lister</a><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><aside class="tsd-sources">
<ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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 a5d6e52d4..eaed49c8b 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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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/12becec/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/8c6e7db/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 8a2039017..6d5075676 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Welcome to Apache OpenDAL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/overview"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="cu [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 3ea69d624..0d65e2824 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -168,20 +168,20 @@
<a class="variable" href="#Metadata.content_type">content_type</a>
</li>
<li>
- <a class="variable" href="#Metadata.mode">mode</a>
- </li>
- <li>
- <a class="variable" href="#Metadata.etag">etag</a>
+ <a class="variable" href="#Metadata.content_length">content_length</a>
</li>
<li>
<a class="variable" href="#Metadata.content_disposition">content_disposition</a>
</li>
<li>
- <a class="variable" href="#Metadata.content_length">content_length</a>
+ <a class="variable" href="#Metadata.etag">etag</a>
</li>
<li>
<a class="variable" href="#Metadata.content_md5">content_md5</a>
</li>
+ <li>
+ <a class="variable" href="#Metadata.mode">mode</a>
+ </li>
</ul>
</li>
@@ -189,10 +189,10 @@
<a class="class" href="#PresignedRequest">PresignedRequest</a>
<ul class="memberlist">
<li>
- <a class="variable" href="#PresignedRequest.headers">headers</a>
+ <a class="variable" href="#PresignedRequest.url">url</a>
</li>
<li>
- <a class="variable" href="#PresignedRequest.url">url</a>
+ <a class="variable" href="#PresignedRequest.headers">headers</a>
</li>
<li>
<a class="variable" href="#PresignedRequest.method">method</a>
@@ -937,28 +937,15 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
</div>
- <div id="Metadata.mode" class="classattr">
- <div class="attr variable">
- <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">EntryMode</a></span>
-
-
- </div>
- <a class="headerlink" href="#Metadata.mode"></a>
-
- <div class="docstring"><p>mode represent this entry's mode.</p>
-</div>
-
-
- </div>
- <div id="Metadata.etag" class="classattr">
+ <div id="Metadata.content_length" class="classattr">
<div class="attr variable">
- <span class="name">etag</span><span class="annotation">: Optional[str]</span>
+ <span class="name">content_length</span><span class="annotation">: int</span>
</div>
- <a class="headerlink" href="#Metadata.etag"></a>
+ <a class="headerlink" href="#Metadata.content_length"></a>
- <div class="docstring"><p>ETag of this entry.</p>
+ <div class="docstring"><p>Content length of this entry.</p>
</div>
@@ -974,15 +961,15 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
</div>
- <div id="Metadata.content_length" class="classattr">
+ <div id="Metadata.etag" class="classattr">
<div class="attr variable">
- <span class="name">content_length</span><span class="annotation">: int</span>
+ <span class="name">etag</span><span class="annotation">: Optional[str]</span>
</div>
- <a class="headerlink" href="#Metadata.content_length"></a>
+ <a class="headerlink" href="#Metadata.etag"></a>
- <div class="docstring"><p>Content length of this entry.</p>
+ <div class="docstring"><p>ETag of this entry.</p>
</div>
@@ -999,6 +986,19 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
</div>
+ </div>
+ <div id="Metadata.mode" class="classattr">
+ <div class="attr variable">
+ <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">EntryMode</a></span>
+
+
+ </div>
+ <a class="headerlink" href="#Metadata.mode"></a>
+
+ <div class="docstring"><p>mode represent this entry's mode.</p>
+</div>
+
+
</div>
</section>
<section id="PresignedRequest">
@@ -1013,28 +1013,28 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
- <div id="PresignedRequest.headers" class="classattr">
+ <div id="PresignedRequest.url" class="classattr">
<div class="attr variable">
- <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
+ <span class="name">url</span><span class="annotation">: str</span>
</div>
- <a class="headerlink" href="#PresignedRequest.headers"></a>
+ <a class="headerlink" href="#PresignedRequest.url"></a>
- <div class="docstring"><p>Return the HTTP headers of this request.</p>
+ <div class="docstring"><p>Return the URL of this request.</p>
</div>
</div>
- <div id="PresignedRequest.url" class="classattr">
+ <div id="PresignedRequest.headers" class="classattr">
<div class="attr variable">
- <span class="name">url</span><span class="annotation">: str</span>
+ <span class="name">headers</span><span class="annotation">: dict[str, str]</span>
</div>
- <a class="headerlink" href="#PresignedRequest.url"></a>
+ <a class="headerlink" href="#PresignedRequest.headers"></a>
- <div class="docstring"><p>Return the URL of this request.</p>
+ <div class="docstring"><p>Return the HTTP headers of this request.</p>
</div>
diff --git a/docs/python/search.js b/docs/python/search.js
index b7696eb5d..c41bfd5e3 100644
--- a/docs/python/search.js
+++ b/docs/python/search.js
@@ -1,6 +1,6 @@
window.pdocSearch = (function(){
/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.wa [...]
- /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\"w\"> </span> [...]
+ /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\"w\"> </span> [...]
// mirrored in build-search-index.js (part 1)
// Also split on html tags. this is a cheap heuristic, but good enough.
diff --git a/docs/quickstart/index.html b/docs/quickstart/index.html
index d5475a9e1..596188622 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Quickstart | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/quickstart"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/rust/implementors/core/clone/trait.Clone.js b/docs/rust/implementors/core/clone/trait.Clone.js
index 1ca521d4f..224d13ab5 100644
--- a/docs/rust/implementors/core/clone/trait.Clone.js
+++ b/docs/rust/implementors/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"opendal/raw/enum.Operation.html\" title=\"enum opendal::raw::Operation\">Operation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct open [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/raw/struct.RpCreateDir.html\" title=\"struct opendal::raw::RpCreateDir\">RpCreateDir</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/raw/struct.HttpClient.html\" t [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/cmp/trait.Eq.js b/docs/rust/implementors/core/cmp/trait.Eq.js
index cbdd11c0d..f68815aca 100644
--- a/docs/rust/implementors/core/cmp/trait.Eq.js
+++ b/docs/rust/implementors/core/cmp/trait.Eq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"opendal/raw/oio/struct.Entry.html\" title=\"struct opendal::raw::oio::Entry\">Entry</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange.html\" title=\"struct opendal::raw:: [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"opendal/enum.ErrorKind.html\" title=\"enum opendal::ErrorKind\">ErrorKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct opendal::Metadata\">Metadata</a>"],["im [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/cmp/trait.PartialEq.js b/docs/rust/implementors/core/cmp/trait.PartialEq.js
index f536b2e7a..e787f456e 100644
--- a/docs/rust/implementors/core/cmp/trait.PartialEq.js
+++ b/docs/rust/implementors/core/cmp/trait.PartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"opendal/enum.Metakey.html\" title=\"enum opendal::Metakey\">Metakey</a>> for <a class=\"enum\" href=\"opendal/enum.Metakey.html\" title=\"enum opendal::Metakey\">Metakey</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::Pa [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange.html\" title=\"struct opendal::raw::BytesContentRange\">BytesContentRange</a>> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange.html\" title=\"struct opendal::raw::BytesContentRange\">BytesContentRange</a>"],["impl <a class=\"trait\" href=\"ht [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/convert/trait.From.js b/docs/rust/implementors/core/convert/trait.From.js
index dbf958dea..81a241ef6 100644
--- a/docs/rust/implementors/core/convert/trait.From.js
+++ b/docs/rust/implementors/core/convert/trait.From.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl<T: <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"opendal/raw/struct.PresignedRequest.html\" title=\"struct opendal::raw::PresignedRequest\">PresignedRequest</a>> for <a class=\"struct\" href=\"https:// [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"struct\" href=\"opendal/raw/struct.OpStat.html\" title=\"struct opendal::raw::OpStat\">OpStat</a>> for <a class=\"enum\" href=\"opendal/raw/enum.PresignOperation.html\" title=\"enum opendal::raw::PresignOperation\">PresignOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/convert/trait [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/default/trait.Default.js b/docs/rust/implementors/core/default/trait.Default.js
index de3436d7f..4b2d0e863 100644
--- a/docs/rust/implementors/core/default/trait.Default.js
+++ b/docs/rust/implementors/core/default/trait.Default.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesRange.html\" title=\"struct opendal::raw::BytesRange\">BytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/services/stru [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/services/struct.Memcached.html\" title=\"struct opendal::services::Memcached\">MemcachedBuilder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/fmt/trait.Debug.js b/docs/rust/implementors/core/fmt/trait.Debug.js
index 6bd0a0940..db9ea947e 100644
--- a/docs/rust/implementors/core/fmt/trait.Debug.js
+++ b/docs/rust/implementors/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/layers/struct.LoggingLayer.html\" title=\"struct opendal::layers::LoggingLayer\">LoggingLayer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/layers/struct.MadsimLayer.htm [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/raw/struct.PresignedRequest.html\" title=\"struct opendal::raw::PresignedRequest\">PresignedRequest</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"opendal/enum.Metakey.html\" title [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/fmt/trait.Display.js b/docs/rust/implementors/core/fmt/trait.Display.js
index 3c4ecafaf..d2af89f46 100644
--- a/docs/rust/implementors/core/fmt/trait.Display.js
+++ b/docs/rust/implementors/core/fmt/trait.Display.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesRange.html\" title=\"struct opendal::raw::BytesRange\">BytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange. [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange.html\" title=\"struct opendal::raw::BytesContentRange\">BytesContentRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"opendal/raw/oio/en [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/future/future/trait.Future.js b/docs/rust/implementors/core/future/future/trait.Future.js
index 5f1cf42d6..69c361c89 100644
--- a/docs/rust/implementors/core/future/future/trait.Future.js
+++ b/docs/rust/implementors/core/future/future/trait.Future.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a class=\"struct\" href=\"opendal/operator_futures/struct.FutureWrite.html\" title=\"struct opendal::operator_futures::FutureWrite\">FutureWrite</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a class=\"struct\" href=\"opendal/operator_futures/struct.FutureRead.html\" title=\"struct opendal::operator_futures::FutureRead\">FutureRead</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/hash/trait.Hash.js b/docs/rust/implementors/core/hash/trait.Hash.js
index cc5c40303..24879a3a8 100644
--- a/docs/rust/implementors/core/hash/trait.Hash.js
+++ b/docs/rust/implementors/core/hash/trait.Hash.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/enum.Scheme.html\" title=\"enum opendal::Scheme\">Scheme</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/raw/enum.Operation.html\" title=\"enum opendal::raw::Operation\">Operati [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/enum.Scheme.html\" title=\"enum opendal::Scheme\">Scheme</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"opendal/raw/oio/enum.ReadOperation.html\" title=\"enum opendal::raw::oio::ReadOp [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js b/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
index 9c3d6203f..8090b64c0 100644
--- a/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
+++ b/docs/rust/implementors/core/iter/traits/iterator/trait.Iterator.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"opendal/struct.BlockingReader.html\" title=\"struct opendal::BlockingReader\">BlockingReader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"> [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"opendal/struct.BlockingLister.html\" title=\"struct opendal::BlockingLister\">BlockingLister</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\"> [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Copy.js b/docs/rust/implementors/core/marker/trait.Copy.js
index cd8af6717..a12bc1ec2 100644
--- a/docs/rust/implementors/core/marker/trait.Copy.js
+++ b/docs/rust/implementors/core/marker/trait.Copy.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"opendal/layers/struct.LoggingLayer.html\" title=\"struct opendal::layers::LoggingLayer\">LoggingLayer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContent [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"opendal/enum.ErrorKind.html\" title=\"enum opendal::ErrorKind\">ErrorKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"opendal/raw/enum.Operation.html\" title=\"enum opendal::raw::Op [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Freeze.js b/docs/rust/implementors/core/marker/trait.Freeze.js
index 284bd2f31..2e64b72af 100644
--- a/docs/rust/implementors/core/marker/trait.Freeze.js
+++ b/docs/rust/implementors/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl Freeze for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" title=\"struct opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct opendal::Metadata\">Metadata</a>",1,["opendal::types::metadata::Metadata"]],[ [...]
+"opendal":[["impl Freeze for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" title=\"struct opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct opendal::Metadata\">Metadata</a>",1,["opendal::types::metadata::Metadata"]],[ [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Send.js b/docs/rust/implementors/core/marker/trait.Send.js
index 46458e0a9..e4a694ff4 100644
--- a/docs/rust/implementors/core/marker/trait.Send.js
+++ b/docs/rust/implementors/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.StructuralEq.js b/docs/rust/implementors/core/marker/trait.StructuralEq.js
index a9f28f455..2144589e8 100644
--- a/docs/rust/implementors/core/marker/trait.StructuralEq.js
+++ b/docs/rust/implementors/core/marker/trait.StructuralEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesRange.html\" title=\"struct opendal::raw::BytesRange\">BytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" hr [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"opendal/enum.ErrorKind.html\" title=\"enum opendal::ErrorKind\">ErrorKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"opendal/raw/enu [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js b/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js
index 1fcdf42a9..0366763e1 100644
--- a/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js
+++ b/docs/rust/implementors/core/marker/trait.StructuralPartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesRange.html\" title=\"struct opendal::raw::BytesRange\">BytesRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">Structur [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"opendal/enum.Metakey.html\" title=\"enum opendal::Metakey\">Metakey</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a c [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Sync.js b/docs/rust/implementors/core/marker/trait.Sync.js
index 79560369e..dd9e29fcf 100644
--- a/docs/rust/implementors/core/marker/trait.Sync.js
+++ b/docs/rust/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Unpin.js b/docs/rust/implementors/core/marker/trait.Unpin.js
index 7bfd4ce65..425ec84a8 100644
--- a/docs/rust/implementors/core/marker/trait.Unpin.js
+++ b/docs/rust/implementors/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"opendal/struct.En [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"opendal/struct.En [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index aae71b5df..c7813fcbe 100644
--- a/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::u [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::u [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 9b1b5aee8..e14dc863b 100644
--- a/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe:: [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe:: [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/str/traits/trait.FromStr.js b/docs/rust/implementors/core/str/traits/trait.FromStr.js
index 86f60e448..ef4fb807f 100644
--- a/docs/rust/implementors/core/str/traits/trait.FromStr.js
+++ b/docs/rust/implementors/core/str/traits/trait.FromStr.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange.html\" title=\"struct opendal::raw::BytesContentRange\">BytesContentRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"en [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"enum\" href=\"opendal/enum.Scheme.html\" title=\"enum opendal::Scheme\">Scheme</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesRange.html [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/futures_core/stream/trait.Stream.js b/docs/rust/implementors/futures_core/stream/trait.Stream.js
index 9bc697ff2..c339c069e 100644
--- a/docs/rust/implementors/futures_core/stream/trait.Stream.js
+++ b/docs/rust/implementors/futures_core/stream/trait.Stream.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl Stream for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.Stream.html\" title=\"trait opendal::raw::oio::Stream\">Stream</a>"],["impl Stream for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.Read.html\" title=\"trait opendal::raw::oio::Read\">Read</a>"],["impl Stream for <a class=\"struct\" href=\"opendal/raw/oio/struct.ChunkedBytes.html\" title=\"struct opendal::raw::oio::ChunkedBytes\">ChunkedBytes</a>"],["impl Stream for <a class=\"struct\" href=\"opendal/ [...]
+"opendal":[["impl Stream for <a class=\"struct\" href=\"opendal/struct.Lister.html\" title=\"struct opendal::Lister\">Lister</a>"],["impl Stream for <a class=\"struct\" href=\"opendal/struct.Reader.html\" title=\"struct opendal::Reader\">Reader</a>"],["impl Stream for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.Stream.html\" title=\"trait opendal::raw::oio::Stream\">Stream</a>"],["impl Stream for <a class=\"struct\" href=\"opendal/raw/oio/struct.ChunkedBytes.html\" title=\"struct [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/std/io/trait.Read.js b/docs/rust/implementors/std/io/trait.Read.js
index 684d1ae3b..4497bc5cd 100644
--- a/docs/rust/implementors/std/io/trait.Read.js
+++ b/docs/rust/implementors/std/io/trait.Read.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.BlockingRead.html\" title=\"trait opendal::raw::oio::BlockingRead\">BlockingRead</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for <a class=\"struct\" href=\"opendal/struct.BlockingReader.html\" title=\"st [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for <a class=\"struct\" href=\"opendal/struct.BlockingReader.html\" title=\"struct opendal::BlockingReader\">BlockingReader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.BlockingRead.html\" title=\"trait o [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/std/io/trait.Seek.js b/docs/rust/implementors/std/io/trait.Seek.js
index 3e3a0254e..6472b5188 100644
--- a/docs/rust/implementors/std/io/trait.Seek.js
+++ b/docs/rust/implementors/std/io/trait.Seek.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Seek.html\" title=\"trait std::io::Seek\">Seek</a> for <a class=\"struct\" href=\"opendal/struct.BlockingReader.html\" title=\"struct opendal::BlockingReader\">BlockingReader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Seek.html\" title=\"trait std::io::Seek\">Seek</a> for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.BlockingRead.html\" title=\"trait o [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Seek.html\" title=\"trait std::io::Seek\">Seek</a> for dyn <a class=\"trait\" href=\"opendal/raw/oio/trait.BlockingRead.html\" title=\"trait opendal::raw::oio::BlockingRead\">BlockingRead</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.73.0/std/io/trait.Seek.html\" title=\"trait std::io::Seek\">Seek</a> for <a class=\"struct\" href=\"opendal/struct.BlockingReader.html\" title=\"st [...]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/opendal/all.html b/docs/rust/opendal/all.html
index d826f4d4a..c50bc7753 100644
--- a/docs/rust/opendal/all.html
+++ b/docs/rust/opendal/all.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/enum.EntryMode.html b/docs/rust/opendal/enum.EntryMode.html
index fd88a285f..c4fc3a6d8 100644
--- a/docs/rust/opendal/enum.EntryMode.html
+++ b/docs/rust/opendal/enum.EntryMode.html
@@ -8,7 +8,7 @@
</div><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section><div class="docblock"><p>Unknown means we don’t know what we can do on this path.</p>
</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#32-41">source</a><a href="#impl-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.EntryMode.html" title="enum opendal::EntryMo [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_dir" class="method"><a class="src rightside" href="../src/opendal/types/mode.rs.html#38-40">source</a><h4 class="code-header">pub fn <a href="#method.is_dir" class="fn">is_dir</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if this mode is DIR.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#22">source</a><a href="#impl-Clone-for-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#22">source</a><a href="#impl-Clone-for-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a c [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/core/cmp.rs.html#226">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html#method.ne" class="f [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#22">source</a><a href="#impl-Copy-for-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.EntryMode.html" title= [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/docs/rust/opendal/enum.Metakey.html b/docs/rust/opendal/enum.Metakey.html
index b05a35f54..592b12094 100644
--- a/docs/rust/opendal/enum.Metakey.html
+++ b/docs/rust/opendal/enum.Metakey.html
@@ -31,9 +31,9 @@ already contains all metadata.</p>
</div><section id="variant.Etag" class="variant"><a href="#variant.Etag" class="anchor">§</a><h3 class="code-header">Etag</h3></section><div class="docblock"><p>Key for etag.</p>
</div><section id="variant.LastModified" class="variant"><a href="#variant.LastModified" class="anchor">§</a><h3 class="code-header">LastModified</h3></section><div class="docblock"><p>Key for last last modified.</p>
</div><section id="variant.Version" class="variant"><a href="#variant.Version" class="anchor">§</a><h3 class="code-header">Version</h3></section><div class="docblock"><p>Key for version.</p>
-</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BitAnd%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#513-553">source</a><a href="#impl-BitAnd%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a [...]
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BitAnd%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#513-553">source</a><a href="#impl-BitAnd%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/core/cmp.rs.html#226">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html#method.ne" class="f [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Rem%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#513-553">source</a><a href="#impl-Rem%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Rem%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#513-553">source</a><a href="#impl-Rem%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
diff --git a/docs/rust/opendal/enum.Scheme.html b/docs/rust/opendal/enum.Scheme.html
index 75ff0286e..588a52390 100644
--- a/docs/rust/opendal/enum.Scheme.html
+++ b/docs/rust/opendal/enum.Scheme.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Services that OpenDAL supports"><title>Scheme in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/Fira [...]
-<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 44 variants</span></summary> Atomicserver,
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Services that OpenDAL supports"><title>Scheme in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/Fira [...]
+<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 45 variants</span></summary> Atomicserver,
Azblob,
Azdls,
Cacache,
@@ -42,6 +42,7 @@
Webhdfs,
Redb,
Tikv,
+ Azfile,
Custom(&'static <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.str.html">str</a>),
</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Services that OpenDAL supports</p>
<h2 id="notes"><a href="#notes">Notes</a></h2>
@@ -93,14 +94,15 @@
</div><section id="variant.Webhdfs" class="variant"><a href="#variant.Webhdfs" class="anchor">§</a><h3 class="code-header">Webhdfs</h3></section><div class="docblock"><p><a href="services/struct.Webhdfs.html" title="struct opendal::services::Webhdfs">webhdfs</a>: WebHDFS RESTful API Services</p>
</div><section id="variant.Redb" class="variant"><a href="#variant.Redb" class="anchor">§</a><h3 class="code-header">Redb</h3></section><div class="docblock"><p><a href="services/struct.Redb.html" title="struct opendal::services::Redb">redb</a>: Redb Services</p>
</div><section id="variant.Tikv" class="variant"><a href="#variant.Tikv" class="anchor">§</a><h3 class="code-header">Tikv</h3></section><div class="docblock"><p>[tikv][crate::services::tikv]: Tikv Services</p>
+</div><section id="variant.Azfile" class="variant"><a href="#variant.Azfile" class="anchor">§</a><h3 class="code-header">Azfile</h3></section><div class="docblock"><p>[azfile][crate::services::azfile]: Azfile Services</p>
</div><section id="variant.Custom" class="variant"><a href="#variant.Custom" class="anchor">§</a><h3 class="code-header">Custom(&'static <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.str.html">str</a>)</h3></section><div class="docblock"><p>Custom that allow users to implement services outside of OpenDAL.</p>
<h4 id="note"><a href="#note">NOTE</a></h4>
<ul>
<li>Custom must not overwrite any existing services name.</li>
<li>Custom must be lowed cases.</li>
</ul>
-</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Scheme" class="impl"><a class="src rightside" href="../src/opendal/types/scheme.rs.html#130-135">source</a><a href="#impl-Scheme" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Sche [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Scheme" class="impl"><a class="src rightside" href="../src/opendal/types/scheme.rs.html#31">source</a><a href="#impl-Clone-for-Scheme" class="anchor">§</a><h3 class="code-header">impl <a class [...]
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Scheme" class="impl"><a class="src rightside" href="../src/opendal/types/scheme.rs.html#132-137">source</a><a href="#impl-Scheme" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Sche [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Scheme" class="impl"><a class="src rightside" href="../src/opendal/types/scheme.rs.html#31">source</a><a href="#impl-Clone-for-Scheme" class="anchor">§</a><h3 class="code-header">impl <a class [...]
H: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></det [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/core/cmp.rs.html#226">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html#method.ne" class="f [...]
diff --git a/docs/rust/opendal/raw/enum.Operation.html b/docs/rust/opendal/raw/enum.Operation.html
index c66ae3a74..b0bf07add 100644
--- a/docs/rust/opendal/raw/enum.Operation.html
+++ b/docs/rust/opendal/raw/enum.Operation.html
@@ -39,7 +39,7 @@
</div><section id="variant.BlockingDelete" class="variant"><a href="#variant.BlockingDelete" class="anchor">§</a><h3 class="code-header">BlockingDelete</h3></section><div class="docblock"><p>Operation for <a href="trait.Accessor.html#method.blocking_delete" title="method opendal::raw::Accessor::blocking_delete"><code>crate::raw::Accessor::blocking_delete</code></a></p>
</div><section id="variant.BlockingList" class="variant"><a href="#variant.BlockingList" class="anchor">§</a><h3 class="code-header">BlockingList</h3></section><div class="docblock"><p>Operation for <a href="trait.Accessor.html#method.blocking_list" title="method opendal::raw::Accessor::blocking_list"><code>crate::raw::Accessor::blocking_list</code></a></p>
</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Operation" class="impl"><a class="src rightside" href="../../src/opendal/raw/operation.rs.html#66-71">source</a><a href="#impl-Operation" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Operation.html" title="enum opendal::r [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Operation" class="impl"><a class="src rightside" href="../../src/opendal/raw/operation.rs.html#22">source</a><a href="#impl-Clone-for-Operation" class="anchor">§</a><h3 class="code-header">imp [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Operation" class="impl"><a class="src rightside" href="../../src/opendal/raw/operation.rs.html#22">source</a><a href="#impl-Clone-for-Operation" class="anchor">§</a><h3 class="code-header">imp [...]
H: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></det [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/core/cmp.rs.html#226">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html#method.ne" class="f [...]
diff --git a/docs/rust/opendal/raw/enum.PresignOperation.html b/docs/rust/opendal/raw/enum.PresignOperation.html
index adbafd9b7..7eddd41bd 100644
--- a/docs/rust/opendal/raw/enum.PresignOperation.html
+++ b/docs/rust/opendal/raw/enum.PresignOperation.html
@@ -6,7 +6,7 @@
</div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
</div><section id="variant.Read" class="variant"><a href="#variant.Read" class="anchor">§</a><h3 class="code-header">Read(<a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>)</h3></section><div class="docblock"><p>Presign a read operation.</p>
</div><section id="variant.Write" class="variant"><a href="#variant.Write" class="anchor">§</a><h3 class="code-header">Write(<a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>)</h3></section><div class="docblock"><p>Presign a write operation.</p>
-</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PresignOperation" class="impl"><a class="src rightside" href="../../src/opendal/raw/ops.rs.html#183">source</a><a href="#impl-Clone-for-PresignOperation" class="anchor">§</a><h3 class="code-header">impl <a class="trait [...]
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PresignOperation" class="impl"><a class="src rightside" href="../../src/opendal/raw/ops.rs.html#183">source</a><a href="#impl-Clone-for-PresignOperation" class="anchor">§</a><h3 class="code-header">impl <a class="trait [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
diff --git a/docs/rust/opendal/raw/oio/enum.ReadOperation.html b/docs/rust/opendal/raw/oio/enum.ReadOperation.html
index 9727abe91..00c426597 100644
--- a/docs/rust/opendal/raw/oio/enum.ReadOperation.html
+++ b/docs/rust/opendal/raw/oio/enum.ReadOperation.html
@@ -13,7 +13,7 @@
</div><section id="variant.BlockingSeek" class="variant"><a href="#variant.BlockingSeek" class="anchor">§</a><h3 class="code-header">BlockingSeek</h3></section><div class="docblock"><p>Operation for <a href="trait.BlockingRead.html#tymethod.seek" title="method opendal::raw::oio::BlockingRead::seek"><code>BlockingRead::seek</code></a></p>
</div><section id="variant.BlockingNext" class="variant"><a href="#variant.BlockingNext" class="anchor">§</a><h3 class="code-header">BlockingNext</h3></section><div class="docblock"><p>Operation for <a href="trait.BlockingRead.html#tymethod.next" title="method opendal::raw::oio::BlockingRead::next"><code>BlockingRead::next</code></a></p>
</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ReadOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#49-54">source</a><a href="#impl-ReadOperation" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.ReadOperation.html" titl [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ReadOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#32">source</a><a href="#impl-Clone-for-ReadOperation" class="anchor">§</a><h3 class="co [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ReadOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#32">source</a><a href="#impl-Clone-for-ReadOperation" class="anchor">§</a><h3 class="co [...]
H: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></det [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/core/cmp.rs.html#226">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html#method.ne" class="f [...]
diff --git a/docs/rust/opendal/raw/oio/enum.WriteOperation.html b/docs/rust/opendal/raw/oio/enum.WriteOperation.html
index 6597e4f1d..953893233 100644
--- a/docs/rust/opendal/raw/oio/enum.WriteOperation.html
+++ b/docs/rust/opendal/raw/oio/enum.WriteOperation.html
@@ -11,7 +11,7 @@
</div><section id="variant.BlockingWrite" class="variant"><a href="#variant.BlockingWrite" class="anchor">§</a><h3 class="code-header">BlockingWrite</h3></section><div class="docblock"><p>Operation for <a href="trait.BlockingWrite.html#tymethod.write" title="method opendal::raw::oio::BlockingWrite::write"><code>BlockingWrite::write</code></a></p>
</div><section id="variant.BlockingClose" class="variant"><a href="#variant.BlockingClose" class="anchor">§</a><h3 class="code-header">BlockingClose</h3></section><div class="docblock"><p>Operation for <a href="trait.BlockingWrite.html#tymethod.close" title="method opendal::raw::oio::BlockingWrite::close"><code>BlockingWrite::close</code></a></p>
</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-WriteOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#47-52">source</a><a href="#impl-WriteOperation" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.WriteOperation.html" [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-WriteOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#32">source</a><a href="#impl-Clone-for-WriteOperation" class="anchor">§</a><h3 class= [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-WriteOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#32">source</a><a href="#impl-Clone-for-WriteOperation" class="anchor">§</a><h3 class= [...]
H: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></det [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/core/cmp.rs.html#226">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html#method.ne" class="f [...]
diff --git a/docs/rust/opendal/raw/oio/struct.ChunkedBytes.html b/docs/rust/opendal/raw/oio/struct.ChunkedBytes.html
index 2ec0b12ee..ecd78d928 100644
--- a/docs/rust/opendal/raw/oio/struct.ChunkedBytes.html
+++ b/docs/rust/opendal/raw/oio/struct.ChunkedBytes.html
@@ -15,12 +15,12 @@ or allocate any additional memory.</p>
size: <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>,
buf: &dyn <a class="trait" href="trait.WriteBuf.html" title="trait opendal::raw::oio::WriteBuf">WriteBuf</a>
) -> <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Pull data from <a href="trait.WriteBuf.html" title="trait opendal::raw::oio::WriteBuf"><code>oio::WriteBuf</code></a> into ChunkedBytes.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ChunkedBytes" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/chunked_bytes.rs.html#36">source</a><a href="#impl-Clone-for-ChunkedBytes" class="anchor">§</a><h3 cl [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ChunkedBytes" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/chunked_bytes.rs.html#36">source</a><a href="#impl-Clone-for-ChunkedBytes" class="anchor">§</a><h3 cl [...]
self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
_: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>
) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self::Item>></h4></section></summary><div class='docblock'>Attempt to pull out the next value of this stream, registering the
current task for wakeup if the value is not yet available, and returning
-<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&self) -> (<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" ti [...]
+<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&self) -> (<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" ti [...]
Buf::remaining(). Note that this can return shorter slice (this allows non-continuous
internal representation). <a href="trait.WriteBuf.html#tymethod.chunk">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.vectored_chunk" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/chunked_bytes.rs.html#225-233">source</a><a href="#method.vectored_chunk" class="anchor">§</a><h4 class="code-header">fn <a href="trait.WriteBuf.html#tymethod.vectored_chunk" class="fn">vectored_chunk</a>(&self [...]
length between 0 and Buf::remaining(). Note that this can return shorter slice
diff --git a/docs/rust/opendal/raw/oio/struct.Cursor.html b/docs/rust/opendal/raw/oio/struct.Cursor.html
index 2c90a7ec3..52d82b4e6 100644
--- a/docs/rust/opendal/raw/oio/struct.Cursor.html
+++ b/docs/rust/opendal/raw/oio/struct.Cursor.html
@@ -3,11 +3,11 @@
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#42-44">source</a><h4 class="code-header">pub fn <a href="#method.is_empty" class="fn">is_empty</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the remaining sl [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.remaining_slice" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#47-50">source</a><h4 class="code-header">pub fn <a href="#method.remaining_slice" class="fn">remaining_slice</a>(&self) -> &[<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&[u8]">ⓘ</a></h4></se [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.len" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#53-55">source</a><h4 class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Return the length of remaining slice.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-Cursor" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#116-157">source</a><a href="#impl-BlockingRead-for-Cursor" class="anchor">§</a><h3 class= [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-Cursor" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/cursor.rs.html#116-157">source</a><a href="#impl-BlockingRead-for-Cursor" class="anchor">§</a><h3 class= [...]
&mut self,
_: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
buf: &mut [<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>]
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="meth [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="meth [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
diff --git a/docs/rust/opendal/raw/oio/trait.BlockingRead.html b/docs/rust/opendal/raw/oio/trait.BlockingRead.html
index 679a7ccb0..b67cbaca3 100644
--- a/docs/rust/opendal/raw/oio/trait.BlockingRead.html
+++ b/docs/rust/opendal/raw/oio/trait.BlockingRead.html
@@ -17,9 +17,9 @@ is optional. We use <code>Read</code> to make users life easier.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.next" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#280">source</a><h4 class="code-header">fn <a href="#tymethod.next" class="fn">next</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="type" href="../../type.Result.html" title="type opend [...]
</div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Iterator-for-dyn+BlockingRead" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#339-347">source</a><a href="#impl-Iterator-for-dyn+BlockingRead" class="anchor">§</a><h3 class="c [...]
how many bytes were read. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html#tymethod.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.read_vectored" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/std/io/mod.rs.html#662">source</a></span><a href="#method.read_vectored" class="ancho [...]
-implementation. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html#method.is_read_vectored">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.read_to_end" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/std/io/mod.rs.html#726">source</a></span><a href="#method.read_to_end" class="anchor">§</ [...]
+implementation. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html#method.is_read_vectored">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.read_to_end" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/std/io/mod.rs.html#726">source</a></span><a href="#method.read_to_end" class="anchor">§</ [...]
To make BlockingReader work as expected, we must add this impl.</p>
-</div><div class="impl-items"><section id="method.read-1" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#310-312">source</a><a href="#method.read-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.read" class="fn">read</a>(&mut self, buf: &mut [<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>]) -> <a class="type" href="../../type.Result.html" title="type opendal:: [...]
+</div><div class="impl-items"><section id="method.read-2" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#310-312">source</a><a href="#method.read-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.read" class="fn">read</a>(&mut self, buf: &mut [<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>]) -> <a class="type" href="../../type.Result.html" title="type opendal:: [...]
A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a><BlockingReader = R>,
R: <a class="trait" href="trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>,</span></h3></section><section id="impl-BlockingRead-for-FromFileReader%3CR%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/into_read_from_file.rs.html#134-192">source</a><a href="#impl-BlockingRead-for-FromFileReader%3CR%3E" class="anchor">§</a><h3 class="code-header">impl<R> <a class="trait" href="trait.BlockingRead.html" title="t [...]
- R: <a class="trait" href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/std/io/trait.Seek.html" title="trait std::io::Seek">Seek</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html" title="trait core::marker::Sync"> [...]
\ No newline at end of file
+ R: <a class="trait" href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/std/io/trait.Seek.html" title="trait std::io::Seek">Seek</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html" title="trait core::marker::Sync"> [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.BlockingWrite.html b/docs/rust/opendal/raw/oio/trait.BlockingWrite.html
index b18fe5b5f..fd3ba3abe 100644
--- a/docs/rust/opendal/raw/oio/trait.BlockingWrite.html
+++ b/docs/rust/opendal/raw/oio/trait.BlockingWrite.html
@@ -5,6 +5,6 @@
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>BlockingWrite is the trait that OpenDAL returns to callers.</p>
</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.write" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#219">source</a><h4 class="code-header">fn <a href="#tymethod.write" class="fn">write</a>(&mut self, bs: &dyn <a class="trait" href="trait.WriteBuf.ht [...]
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.close" class="method"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#222">source</a><h4 class="code-header">fn <a href="#tymethod.close" class="fn">close</a>(&mut self) -> <a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.unit.html">()</a>></h4></s [...]
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-BlockingWrite-for-Box%3CT%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#243-251">source</a><a href="#impl-BlockingWrite-for-Box%3CT%3E" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="tr [...]
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-BlockingWrite-for-()" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#225-238">source</a><a href="#impl-BlockingWrite-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BlockingWrite.html [...]
<p>To make BlockingWriter work as expected, we must add this impl.</p>
-</div><div class="impl-items"><section id="method.write" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#244-246">source</a><a href="#method.write" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.write" class="fn">write</a>(&mut self, bs: &dyn <a class="trait" href="trait.WriteBuf.html" title="trait opendal::raw::oio::WriteBuf">WriteBuf</a>) -> <a class="type" href="../../type.Result.html" title="type op [...]
\ No newline at end of file
+</div><div class="impl-items"><section id="method.write-1" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/api.rs.html#244-246">source</a><a href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.write" class="fn">write</a>(&mut self, bs: &dyn <a class="trait" href="trait.WriteBuf.html" title="trait opendal::raw::oio::WriteBuf">WriteBuf</a>) -> <a class="type" href="../../type.Result.html" title="typ [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.Page.html b/docs/rust/opendal/raw/oio/trait.Page.html
index f629d3f99..ec408b5c7 100644
--- a/docs/rust/opendal/raw/oio/trait.Page.html
+++ b/docs/rust/opendal/raw/oio/trait.Page.html
@@ -14,18 +14,18 @@ or <code>scan</code> operation.</p>
'life0: 'async_trait,</span></h4></section></summary><div class="docblock"><p>Fetch a new page of <a href="struct.Entry.html" title="struct opendal::raw::oio::Entry"><code>Entry</code></a></p>
<p><code>Ok(None)</code> means all pages have been returned. Any following call
to <code>next</code> will always get the same result.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Page-for-Option%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/api.rs.html#89-96">source</a><a href="#impl-Page-for-Option%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.Page.html" [...]
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Page-for-()" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/api.rs.html#82-86">source</a><a href="#impl-Page-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Page.html" title="trait opendal::raw::o [...]
&'life0 mut self
) -> <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="struct" href="https://doc.rust-lang.org/1.73.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a><Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
Self: 'async_trait,
- 'life0: 'async_trait,</span></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Page-for-()" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/api.rs.html#82-86">source</a><a href="#impl-Page-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a> for <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primit [...]
+ 'life0: 'async_trait,</span></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Page-for-Box%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/api.rs.html#75-79">source</a><a href="#impl-Page-for-Box%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a> + ?<a class="trait" href="https://doc.rust-lang.org/ [...]
&'life0 mut self
) -> <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="struct" href="https://doc.rust-lang.org/1.73.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a><Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
Self: 'async_trait,
- 'life0: 'async_trait,</span></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Page-for-Box%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/api.rs.html#75-79">source</a><a href="#impl-Page-for-Box%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a> + ?<a class="trait" href="https://doc.rust-lang.org/ [...]
+ 'life0: 'async_trait,</span></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Page-for-Option%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/api.rs.html#89-96">source</a><a href="#impl-Page-for-Option%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>> <a class="trait" href="trait.Page.html" ti [...]
&'life0 mut self
) -> <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="struct" href="https://doc.rust-lang.org/1.73.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a><Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
Self: 'async_trait,
'life0: 'async_trait,</span></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Page-for-FlatPager%3CA,+P%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/into_flat_page.rs.html#93-151">source</a><a href="#impl-Page-for-FlatPager%3CA,+P%3E" class="anchor">§</a><h3 class="code-header">impl<A, P> <a class="trait" [...]
A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a><Pager = P>,
- P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>,</span></h3></section><section id="impl-Page-for-HierarchyPager%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/into_hierarchy_pager.rs.html#120-134">source</a><a href="#impl-Page-for-HierarchyPager%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>> <a clas [...]
\ No newline at end of file
+ P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>,</span></h3></section><section id="impl-Page-for-HierarchyPager%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/page/into_hierarchy_pager.rs.html#120-134">source</a><a href="#impl-Page-for-HierarchyPager%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>> <a clas [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.Read.html b/docs/rust/opendal/raw/oio/trait.Read.html
index 8ce1fca8c..01f9940dd 100644
--- a/docs/rust/opendal/raw/oio/trait.Read.html
+++ b/docs/rust/opendal/raw/oio/trait.Read.html
@@ -49,32 +49,32 @@ IO operations. <a>Read more</a></div></details></div></details><details class="t
self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
pos: <a class="enum" href="https://doc.rust-lang.org/1.73.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>
) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self::Item>></h4></section></summary><div class='docblock'>Attempt to pull out the next value of this stream, registering the
current task for wakeup if the value is not yet available, and returning
-<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&self) -> (<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" ti [...]
-work as expected, we must add this impl.</p>
-</div><div class="impl-items"><section id="method.poll_read-1" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#138-140">source</a><a href="#method.poll_read-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.poll_read" class="fn">poll_read</a>(
+<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&self) -> (<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" ti [...]
&mut self,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
buf: &mut [<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>]
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section><section id="method.poll_seek-1" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#142-144 [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section><section id="method.poll_seek-1" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#116-123 [...]
&mut self,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
pos: <a class="enum" href="https://doc.rust-lang.org/1.73.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section><section id="method.poll_next-2" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#146-148">so [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section><section id="method.poll_next-2" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#125-132">so [...]
+work as expected, we must add this impl.</p>
+</div><div class="impl-items"><section id="method.poll_read-2" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#138-140">source</a><a href="#method.poll_read-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.poll_read" class="fn">poll_read</a>(
&mut self,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
buf: &mut [<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>]
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section><section id="method.poll_seek-2" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#116-123 [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section><section id="method.poll_seek-2" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#142-144 [...]
&mut self,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
pos: <a class="enum" href="https://doc.rust-lang.org/1.73.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section><section id="method.poll_next-3" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#125-132">so [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section><section id="method.poll_next-3" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#146-148">so [...]
A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a><Reader = R>,
R: <a class="trait" href="trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>,</span></h3></section><section id="impl-Read-for-FromFileReader%3CR%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/into_read_from_file.rs.html#60-132">source</a><a href="#impl-Read-for-FromFileReader%3CR%3E" class="anchor">§</a><h3 class="code-header">impl<R> <a class="trait" href="trait.Read.html" title="trait opendal::raw::oio::Read">Read</a> for <a cla [...]
R: AsyncRead + AsyncSeek + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Read-for-CloneableReaderWithinStd [...]
S: Stream<Item = <a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a><T>> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Unpin.html" title="trait core::mark [...]
- T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><Bytes>,</span></h3></section></div><script src="../../../implementors/opendal/raw/oio/read/api/trait.Read.js" data-ignore-extern-crates="alloc,std" async></script></section></div></main></body></html>
\ No newline at end of file
+ T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><Bytes>,</span></h3></section></div><script src="../../../implementors/opendal/raw/oio/read/api/trait.Read.js" data-ignore-extern-crates="std,alloc" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.Stream.html b/docs/rust/opendal/raw/oio/trait.Stream.html
index 434af6fa1..bd0dfaef6 100644
--- a/docs/rust/opendal/raw/oio/trait.Stream.html
+++ b/docs/rust/opendal/raw/oio/trait.Stream.html
@@ -12,6 +12,6 @@
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>
) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self::Item>></h4></section></summary><div class='docblock'>Attempt to pull out the next value of this stream, registering the
current task for wakeup if the value is not yet available, and returning
-<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&self) -> (<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" ti [...]
+<code>None</code> if the stream is exhausted. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.size_hint" class="method trait-impl"><a href="#method.size_hint" class="anchor">§</a><h4 class="code-header">fn <a class="fn">size_hint</a>(&self) -> (<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>, <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/option/enum.Option.html" ti [...]
To make Streamer work as expected, we must add this impl.</p>
-</div><div class="impl-items"><section id="method.poll_next-3" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/stream/api.rs.html#63-65">source</a><a href="#method.poll_next-3" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.poll_next" class="fn">poll_next</a>(&mut self, cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&l [...]
\ No newline at end of file
+</div><div class="impl-items"><section id="method.poll_next-1" class="method trait-impl"><a class="src rightside" href="../../../src/opendal/raw/oio/stream/api.rs.html#63-65">source</a><a href="#method.poll_next-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.poll_next" class="fn">poll_next</a>(&mut self, cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&l [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.WriteBuf.html b/docs/rust/opendal/raw/oio/trait.WriteBuf.html
index 9355f5055..358b9152e 100644
--- a/docs/rust/opendal/raw/oio/trait.WriteBuf.html
+++ b/docs/rust/opendal/raw/oio/trait.WriteBuf.html
@@ -54,4 +54,4 @@ the given <code>self.bytes(size)</code> could be done without cost. For example,
buffer is <code>Bytes</code>.</p>
<h5 id="panics-3"><a href="#panics-3">Panics</a></h5>
<p>This function will panic if size > self.remaining().</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-WriteBuf-for-%26mut+T" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/write_buf.rs.html#143-145">source</a><a href="#impl-WriteBuf-for-%26mut+T" class="anchor">§</a><h3 class="code-header">impl<T: <a class="trait" href="trait.WriteB [...]
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-WriteBuf-for-%26%5Bu8%5D" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/buf/write_buf.rs.html#151-181">source</a><a href="#impl-WriteBuf-for-%26%5Bu8%5D" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.WriteB [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/services/azfile/backend/struct.AzfileBuilder.html b/docs/rust/opendal/services/azfile/backend/struct.AzfileBuilder.html
new file mode 100644
index 000000000..cba11254c
--- /dev/null
+++ b/docs/rust/opendal/services/azfile/backend/struct.AzfileBuilder.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta http-equiv="refresh" content="0;URL=../../../../opendal/services/struct.Azfile.html">
+ <title>Redirection</title>
+</head>
+<body>
+ <p>Redirecting to <a href="../../../../opendal/services/struct.Azfile.html">../../../../opendal/services/struct.Azfile.html</a>...</p>
+ <script>location.replace("../../../../opendal/services/struct.Azfile.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/services/index.html b/docs/rust/opendal/services/index.html
index c40fb1a59..15cd96f2d 100644
--- a/docs/rust/opendal/services/index.html
+++ b/docs/rust/opendal/services/index.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Services will provide builders to build underlying backends."><title>opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Services will provide builders to build underlying backends."><title>opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
<p>More ongoing services support is tracked at <a href="https://github.com/apache/incubator-opendal/issues/5">opendal#5</a>. Please feel free to submit issues if there are services not covered.</p>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Atomicserver.html" title="struct opendal::services::Atomicserver">Atomicserver</a></div><div class="desc docblock-short">Atomicserver service support.</div></li><li><div class="item-name"><a class="struct" href="struct.Azblob.html" title="struct opendal::services::Azblob">Azblob</a></div><div class="desc docblock [...]
-As known as <code>abfs</code>, <code>azdls</code> or <code>azdls</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.Cacache.html" title="struct opendal::services::Cacache">Cacache</a></div><div class="desc docblock-short">cacache service support.</div></li><li><div class="item-name"><a class="struct" href="struct.Cos.html" title="struct opendal::services::Cos">Cos</a></div><div class="desc docblock-short">Tencent-Cloud COS services support.</div></li><li><div cla [...]
+As known as <code>abfs</code>, <code>azdls</code> or <code>azdls</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.Azfile.html" title="struct opendal::services::Azfile">Azfile</a></div><div class="desc docblock-short">Azure File services support.</div></li><li><div class="item-name"><a class="struct" href="struct.Cacache.html" title="struct opendal::services::Cacache">Cacache</a></div><div class="desc docblock-short">cacache service support.</div></li><li><div c [...]
A distributed file system that provides high-throughput access to application data.</div></li><li><div class="item-name"><a class="struct" href="struct.Http.html" title="struct opendal::services::Http">Http</a></div><div class="desc docblock-short">HTTP Read-only service support like <a href="https://www.nginx.com/">Nginx</a> and <a href="https://caddyserver.com/">Caddy</a>.</div></li><li><div class="item-name"><a class="struct" href="struct.Ipfs.html" title="struct opendal::services::Ip [...]
For more information about s3-compatible services, refer to <a href="#compatible-services">Compatible Services</a>.</div></li><li><div class="item-name"><a class="struct" href="struct.Sftp.html" title="struct opendal::services::Sftp">Sftp</a></div><div class="desc docblock-short">SFTP services support. (only works on unix)</div></li><li><div class="item-name"><a class="struct" href="struct.Sled.html" title="struct opendal::services::Sled">Sled</a></div><div class="desc docblock-short">Sl [...]
There two implementations of WebHDFS REST API:</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/opendal/services/sidebar-items.js b/docs/rust/opendal/services/sidebar-items.js
index 0e6d594de..8c597fd33 100644
--- a/docs/rust/opendal/services/sidebar-items.js
+++ b/docs/rust/opendal/services/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"struct":["Atomicserver","Azblob","Azdls","Cacache","Cos","D1","Dashmap","Dropbox","Etcd","Foundationdb","Fs","Ftp","Gcs","Gdrive","Ghac","Hdfs","Http","Ipfs","Ipmfs","Libsql","Memcached","Memory","MiniMoka","Moka","Mysql","Obs","Onedrive","Oss","Persy","Postgresql","Redb","Redis","Rocksdb","S3","Sftp","Sled","Sqlite","Supabase","Tikv","VercelArtifacts","Wasabi","Webdav","Webhdfs"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":["Atomicserver","Azblob","Azdls","Azfile","Cacache","Cos","D1","Dashmap","Dropbox","Etcd","Foundationdb","Fs","Ftp","Gcs","Gdrive","Ghac","Hdfs","Http","Ipfs","Ipmfs","Libsql","Memcached","Memory","MiniMoka","Moka","Mysql","Obs","Onedrive","Oss","Persy","Postgresql","Redb","Redis","Rocksdb","S3","Sftp","Sled","Sqlite","Supabase","Tikv","VercelArtifacts","Wasabi","Webdav","Webhdfs"]};
\ No newline at end of file
diff --git a/docs/rust/opendal/services/struct.Azdls.html b/docs/rust/opendal/services/struct.Azdls.html
index 5499fd1ab..dff03261e 100644
--- a/docs/rust/opendal/services/struct.Azdls.html
+++ b/docs/rust/opendal/services/struct.Azdls.html
@@ -47,9 +47,9 @@ blocking</li>
<span class="attr">#[tokio::main]
</span><span class="kw">async fn </span>main() -> <span class="prelude-ty">Result</span><()> {
- <span class="comment">// Create azblob backend builder.
+ <span class="comment">// Create azdls backend builder.
</span><span class="kw">let </span><span class="kw-2">mut </span>builder = Azdls::default();
- <span class="comment">// Set the root for azblob, all operations will happen under this root.
+ <span class="comment">// Set the root for azdls, all operations will happen under this root.
//
// NOTE: the root must be absolute path.
</span>builder.root(<span class="string">"/path/to/dir"</span>);
diff --git a/docs/rust/opendal/raw/oio/enum.ReadOperation.html b/docs/rust/opendal/services/struct.Azfile.html
similarity index 56%
copy from docs/rust/opendal/raw/oio/enum.ReadOperation.html
copy to docs/rust/opendal/services/struct.Azfile.html
index 9727abe91..aacbfebbe 100644
--- a/docs/rust/opendal/raw/oio/enum.ReadOperation.html
+++ b/docs/rust/opendal/services/struct.Azfile.html
@@ -1,38 +1,101 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="PageOperation is the name for APIs of pager."><title>ReadOperation in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" c [...]
- Read,
- Seek,
- Next,
- BlockingRead,
- BlockingSeek,
- BlockingNext,
-}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>PageOperation is the name for APIs of pager.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
-</div><section id="variant.Seek" class="variant"><a href="#variant.Seek" class="anchor">§</a><h3 class="code-header">Seek</h3></section><div class="docblock"><p>Operation for <a href="trait.Read.html#tymethod.poll_seek" title="method opendal::raw::oio::Read::poll_seek"><code>Read::poll_seek</code></a></p>
-</div><section id="variant.Next" class="variant"><a href="#variant.Next" class="anchor">§</a><h3 class="code-header">Next</h3></section><div class="docblock"><p>Operation for <a href="trait.Read.html#tymethod.poll_next" title="method opendal::raw::oio::Read::poll_next"><code>Read::poll_next</code></a></p>
-</div><section id="variant.BlockingRead" class="variant"><a href="#variant.BlockingRead" class="anchor">§</a><h3 class="code-header">BlockingRead</h3></section><div class="docblock"><p>Operation for <a href="trait.BlockingRead.html#tymethod.read" title="method opendal::raw::oio::BlockingRead::read"><code>BlockingRead::read</code></a></p>
-</div><section id="variant.BlockingSeek" class="variant"><a href="#variant.BlockingSeek" class="anchor">§</a><h3 class="code-header">BlockingSeek</h3></section><div class="docblock"><p>Operation for <a href="trait.BlockingRead.html#tymethod.seek" title="method opendal::raw::oio::BlockingRead::seek"><code>BlockingRead::seek</code></a></p>
-</div><section id="variant.BlockingNext" class="variant"><a href="#variant.BlockingNext" class="anchor">§</a><h3 class="code-header">BlockingNext</h3></section><div class="docblock"><p>Operation for <a href="trait.BlockingRead.html#tymethod.next" title="method opendal::raw::oio::BlockingRead::next"><code>BlockingRead::next</code></a></p>
-</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ReadOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#49-54">source</a><a href="#impl-ReadOperation" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.ReadOperation.html" titl [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ReadOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#32">source</a><a href="#impl-Clone-for-ReadOperation" class="anchor">§</a><h3 class="co [...]
- H: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
- Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></det [...]
-by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.73.0/src/core/cmp.rs.html#226">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.PartialEq.html#method.ne" class="f [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-ReadOperation" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/read/api.rs.html#32">source</a><a href="#impl-Copy-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.Re [...]
- T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
- T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
- T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
- T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><section id="method.get_hash" class="method trait-impl"><a href="#method.get_hash" class="anchor">§</a><h4 class="code-header">fn <a class="fn">get_hash</a><H, B>(valu [...]
- H: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
- B: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</span></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CompatExt-for-ReadOperation" class="impl"><a href="#impl-CompatExt-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T> CompatExt for T</h3></section></summary><div class="impl-items"><details class="toggle m [...]
- Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h4></section></summary><div class='docblock'>Converts <code>self</code> into <code>T</code> using <code>Into<T></code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CoproductSubsetter%3CCNil,+HNil%3E-for-ReadOperation" class="impl"><a href="#impl-Coproduc [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Azure File services support."><title>Azfile in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../sta [...]
+<h3 id="capabilities"><a href="#capabilities">Capabilities</a></h3>
+<p>This service can be used to:</p>
+<ul>
+<li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
+read</li>
+<li><input disabled="" type="checkbox" checked=""/>
+write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox" checked=""/>
+rename</li>
+<li><input disabled="" type="checkbox" checked=""/>
+list</li>
+<li><input disabled="" type="checkbox"/>
+<del>scan</del></li>
+<li><input disabled="" type="checkbox"/>
+presign</li>
+<li><input disabled="" type="checkbox"/>
+blocking</li>
+</ul>
+<h3 id="configuration"><a href="#configuration">Configuration</a></h3>
+<ul>
+<li><code>root</code>: Set the work dir for backend.</li>
+<li><code>endpoint</code>: Set the endpoint for backend.</li>
+<li><code>account_name</code>: Set the account_name for backend.</li>
+<li><code>account_key</code>: Set the account_key for backend.</li>
+<li><code>share_name</code>: Set the share_name for backend.</li>
+</ul>
+<p>Refer to public API docs for more information.</p>
+<h3 id="example"><a href="#example">Example</a></h3><h4 id="via-builder"><a href="#via-builder">Via Builder</a></h4>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>anyhow::Result;
+<span class="kw">use </span>opendal::services::Azfile;
+<span class="kw">use </span>opendal::Operator;
+
+<span class="attr">#[tokio::main]
+</span><span class="kw">async fn </span>main() -> <span class="prelude-ty">Result</span><()> {
+ <span class="comment">// Create azfile backend builder.
+ </span><span class="kw">let </span><span class="kw-2">mut </span>builder = Azfile::default();
+ <span class="comment">// Set the root for azfile, all operations will happen under this root.
+ //
+ // NOTE: the root must be absolute path.
+ </span>builder.root(<span class="string">"/path/to/dir"</span>);
+ <span class="comment">// Set the filesystem name, this is required.
+ </span>builder.share_name(<span class="string">"test"</span>);
+ <span class="comment">// Set the endpoint, this is required.
+ //
+ // For examples:
+ // - "https://accountname.file.core.windows.net"
+ </span>builder.endpoint(<span class="string">"https://accountname.file.core.windows.net"</span>);
+ <span class="comment">// Set the account_name and account_key.
+ //
+ // OpenDAL will try load credential from the env.
+ // If credential not set and no valid credential in env, OpenDAL will
+ // send request without signing like anonymous user.
+ </span>builder.account_name(<span class="string">"account_name"</span>);
+ builder.account_key(<span class="string">"account_key"</span>);
+
+ <span class="comment">// `Accessor` provides the low level APIs, we will use `Operator` normally.
+ </span><span class="kw">let </span>op: Operator = Operator::new(builder)<span class="question-mark">?</span>.finish();
+
+ <span class="prelude-val">Ok</span>(())
+}</code></pre></div>
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AzfileBuilder" class="impl"><a class="src rightside" href="../../src/opendal/services/azfile/backend.rs.html#73-141">source</a><a href="#impl-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Azfile.html [...]
+<p>All operations will happen under this root.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="src rightside" href="../../src/opendal/services/azfile/backend.rs.html#86-93">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&mut self, endpoint: &<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primit [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.account_name" class="method"><a class="src rightside" href="../../src/opendal/services/azfile/backend.rs.html#99-105">source</a><h4 class="code-header">pub fn <a href="#method.account_name" class="fn">account_name</a>(&mut self, account_name: &<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/ [...]
+<ul>
+<li>If account_name is set, we will take user’s input first.</li>
+<li>If not, we will try to load it from environment.</li>
+</ul>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.account_key" class="method"><a class="src rightside" href="../../src/opendal/services/azfile/backend.rs.html#111-117">source</a><h4 class="code-header">pub fn <a href="#method.account_key" class="fn">account_key</a>(&mut self, account_key: &<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.7 [...]
+<ul>
+<li>If account_key is set, we will take user’s input first.</li>
+<li>If not, we will try to load it from environment.</li>
+</ul>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.share_name" class="method"><a class="src rightside" href="../../src/opendal/services/azfile/backend.rs.html#123-129">source</a><h4 class="code-header">pub fn <a href="#method.share_name" class="fn">share_name</a>(&mut self, share_name: &<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.73.0/ [...]
+<h5 id="notes"><a href="#notes">Notes</a></h5>
+<p>You can find more about from: https://learn.microsoft.com/en-us/rest/api/storageservices/operations-on-shares–file-service</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="src rightside" href="../../src/opendal/services/azfile/backend.rs.html#137-140">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -> <a class="primitive" href="https://doc.rust-lang [...]
+<h5 id="notes-1"><a href="#notes-1">Notes</a></h5>
+<p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
+during minor updates.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-AzfileBuilder" class="impl"><a class="src rightside" href="../../src/opendal/services/azfile/backend.rs.html#143-218">source</a><a href="#impl-Builder-for-AzfileBuilder" class="anchor">§</a> [...]
+ T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
+ T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
+ T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
+ Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h4></section></summary><div class='docblock'>Converts <code>self</code> into <code>T</code> using <code>Into<T></code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CoproductSubsetter%3CCNil,+HNil%3E-for-AzfileBuilder" class="impl"><a href="#impl-Coproduc [...]
self
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder></h4></section></summary><div class='docblock'>Extract a subset of the possible types in a coproduct (or get the remaining possibilities) <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Equivalent%3CK%3E- [...]
- Q: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
- K: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><Q> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a class="src rightside" href="https://docs. [...]
- Q: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
- K: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><Q> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-1" class="method trait-impl"><a href="#method.equivalent-1" class="anch [...]
- Q: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
- K: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><Q> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent-2" class="method trait-impl"><a href="#method.equivalent-2" class="anch [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder></h4></section></summary><div class='docblock'>Extract a subset of the possible types in a coproduct (or get the remaining possibilities) <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FmtForward-for-Azf [...]
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/fmt/trait.Binary.html" title="trait core::fmt::Binary">Binary</a>,</span></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Binary</code> implementation when <code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_display" class="method trait-impl"><a href="#method.fmt_display" class="anchor">§</a><h4 class="code-hea [...]
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,</span></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Display</code> implementation when
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_lower_exp" class="method trait-impl"><a href="#method.fmt_lower_exp" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_lower_exp</a>(self) -> FmtLowerExp<Self><span class="where fmt-newline">where
@@ -47,18 +110,18 @@ sufficient, and should not be overridden without very good reason.</div></detail
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_upper_hex" class="method trait-impl"><a href="#method.fmt_upper_hex" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_upper_hex</a>(self) -> FmtUpperHex<Self><span class="where fmt-newline">where
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/fmt/trait.UpperHex.html" title="trait core::fmt::UpperHex">UpperHex</a>,</span></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>UpperHex</code> implementation when
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_list" class="method trait-impl"><a href="#method.fmt_list" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_list</a>(self) -> FmtList<Self><span class="where fmt-newline">where
- <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&'a Self</a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,</span></h4></section></summary><div class='docblock'>Formats each item in a sequence. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary [...]
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FromRef%3CT%3E-for-ReadOperation" class="impl"><a href="#impl-FromRef%3CT%3E-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T> FromRef<T> for T<span class="where fmt-newline">where
- T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_ref" class="method trait-impl"><a href="#method.from_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">from_ref</a>(input: <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.h [...]
+ <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&'a Self</a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,</span></h4></section></summary><div class='docblock'>Formats each item in a sequence. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary [...]
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FromRef%3CT%3E-for-AzfileBuilder" class="impl"><a href="#impl-FromRef%3CT%3E-for-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl<T> FromRef<T> for T<span class="where fmt-newline">where
+ T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_ref" class="method trait-impl"><a href="#method.from_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">from_ref</a>(input: <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.h [...]
wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_context" class="method trait-impl"><a href="#method.with_current_context" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_context</a>(self) -> WithContext<Self></h4></section></summary><div class='docblock'>Attaches the current <a href="crate::Context"><code>Context</code></a> to this type, returning a <code>WithContext</code>
-wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-ReadOperation" class="impl"><a href="#impl-Instrument-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T> Instrument for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl"><a href="#method.instrument" class="anchor" [...]
+wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-AzfileBuilder" class="impl"><a href="#impl-Instrument-for-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl<T> Instrument for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl"><a href="#method.instrument" class="anchor" [...]
<code>Instrumented</code> wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl"><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a class="fn">in_current_span</a>(self) -> Instrumented<Self></h4></section></summary><div class='docblock'>Instruments this type with the <a href="super::Span::current()">current</a> <a href="crate::Span"><code>Span</co [...]
-<code>Instrumented</code> wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ReadOperation" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/convert/mod.rs.html#706">source</a><a href="#impl-Into%3CU%3E-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into [...]
+<code>Instrumented</code> wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-AzfileBuilder" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/convert/mod.rs.html#706">source</a><a href="#impl-Into%3CU%3E-for-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into [...]
U: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/convert/mod.rs.html#715">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.73.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for U</code> chooses to do.</p>
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoRequest%3CT%3E-for-ReadOperation" class="impl"><a class="src rightside" href="https://docs.rs/tonic/0.9.2/src/tonic/request.rs.html#384">source</a><a href="#impl-IntoRequest%3CT%3E-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/tonic/0.9.2/tonic/request/trait.IntoRequest.html" title="trait tonic::request::IntoReque [...]
- U: LiftFrom<T, I>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.lift_into" class="method trait-impl"><a href="#method.lift_into" class="anchor">§</a><h4 class="code-header">fn <a class="fn">lift_into</a>(self) -> U</h4></section></summary><div class='docblock'>Performs the indexed conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-P [...]
+</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoRequest%3CT%3E-for-AzfileBuilder" class="impl"><a class="src rightside" href="https://docs.rs/tonic/0.9.2/src/tonic/request.rs.html#384">source</a><a href="#impl-IntoRequest%3CT%3E-for-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/tonic/0.9.2/tonic/request/trait.IntoRequest.html" title="trait tonic::request::IntoReque [...]
+ U: LiftFrom<T, I>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.lift_into" class="method trait-impl"><a href="#method.lift_into" class="anchor">§</a><h4 class="code-header">fn <a class="fn">lift_into</a>(self) -> U</h4></section></summary><div class='docblock'>Performs the indexed conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-P [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.pipe" class="method trait-impl"><a href="#method.pipe" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe</a><R>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/ops/function/t [...]
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Pipes by value. This is generally the method you want to use. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_ref" class="method trait-impl"><a href="#method.pipe_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_ref [...]
R: 'a,</span></h4></section></summary><div class='docblock'>Borrows <code>self</code> and passes that borrow into the pipe function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_ref_mut" class="method trait-impl"><a href="#method.pipe_ref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_ref_mut</a><'a, R>(&'a mut self, func: impl <a class="trait" href="https://doc.rust-lang.org/1.73.0/core [...]
@@ -89,7 +152,7 @@ function.</div></details><details class="toggle method-toggle" open><summary><se
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a><Target = T> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
T: 'a + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
R: 'a,</span></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code>, then passes <code>self.deref_mut()</code> into the pipe
-function.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Pointable-for-ReadOperation" class="impl"><a href="#impl-Pointable-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl"><a href="#associatedconstant.ALIGN" class="anchor">§</a>< [...]
+function.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Pointable-for-AzfileBuilder" class="impl"><a href="#impl-Pointable-for-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl<T> Pointable for T</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl"><a href="#associatedconstant.ALIGN" class="anchor">§</a>< [...]
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><B>,
B: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Immutable access to the <code>Borrow<B></code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow_mut" class="method trait-impl"><a href="#method.tap_borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a class= [...]
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><B>,
@@ -120,13 +183,12 @@ builds.</div></details><details class="toggle method-toggle" open><summary><sect
builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref_mut_dbg" class="method trait-impl"><a href="#method.tap_deref_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_deref_mut_dbg</a><T>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/1.73.0/s [...]
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a><Target = T> + <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Calls <code>.tap_deref_mut()</code> only in debug builds, and is erased in release
-builds.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-ReadOperation" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/1.73.0/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> f [...]
- T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.73.0/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associated [...]
- T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/ [...]
- Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><T>,</span></h4></section></summary><div class='docblock'>Attempts to convert <code>self</code> into <code>T</code> using <code>TryInto<T></code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ReadOperation" class="impl"><a class="src rights [...]
- U: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryFrom.html#associatedtype.Error" class=" [...]
- U: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryInto.html#associatedtype.E [...]
- V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-WithSubscriber-for-ReadOperation" class="impl"><a href="#impl-WithSubscriber-for-ReadOperation" class="anchor">§</a><h3 class="code-header">impl<T& [...]
+builds.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-AzfileBuilder" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/1.73.0/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> f [...]
+ T: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.73.0/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associated [...]
+ Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><T>,</span></h4></section></summary><div class='docblock'>Attempts to convert <code>self</code> into <code>T</code> using <code>TryInto<T></code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-AzfileBuilder" class="impl"><a class="src rights [...]
+ U: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryFrom.html#associatedtype.Error" class=" [...]
+ U: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.73.0/core/convert/trait.TryInto.html#associatedtype.E [...]
+ V: MultiLane<T>,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-WithSubscriber-for-AzfileBuilder" class="impl"><a href="#impl-WithSubscriber-for-AzfileBuilder" class="anchor">§</a><h3 class="code-header">impl<T& [...]
S: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><Dispatch>,</span></h4></section></summary><div class='docblock'>Attaches the provided <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_subscriber" class="method trait-impl"><a href="#method.with_current_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_subscriber</a>(self) -> WithDispatch<Self></h4></section></summary><div class='docblock'>Attaches the current <a href="crate::dispatcher#setting-the-default-subscriber">defaul [...]
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details></div></details></div></section></div></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/opendal/struct.BlockingReader.html b/docs/rust/opendal/struct.BlockingReader.html
index b6eb0f9e2..aadea8bd8 100644
--- a/docs/rust/opendal/struct.BlockingReader.html
+++ b/docs/rust/opendal/struct.BlockingReader.html
@@ -1,6 +1,6 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BlockingReader is designed to read data from given path in an blocking manner."><title>BlockingReader in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" [...]
manner.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-BlockingReader" class="impl"><a class="src rightside" href="../src/opendal/types/reader.rs.html#201-216">source</a><a href="#impl-BlockingRead-for-BlockingReader" class="anchor">§</a><h3 class="code-header"> [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-BlockingReader" class="impl"><a class="src rightside" href="../src/opendal/types/reader.rs.html#201-216">source</a><a href="#impl-BlockingRead-for-BlockingReader" class="anchor">§</a><h3 class="code-header"> [...]
&mut self
) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><[Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.73.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.org/ [...]
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_next_chunk</code>)</span></div></span><div class='docblock'>Advances the iterator and returns an array containing the next <code>N</code> values. <a href="https://doc.rust-lang.org/1 [...]
@@ -193,7 +193,7 @@ implementation. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Transforms this <code>Read</code> instance to an <a href="https://doc.rust-lang.org/1.73.0/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> over its bytes. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html# [...]
R: <a class="trait" href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will chain this stream with another. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html#method.chain">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take-1" class="method trait-impl"><span class="rightside [...]
- Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will read at most <code>limit</code> bytes from it. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html#method.take">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Seek-for-BlockingReade [...]
+ Self: <a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will read at most <code>limit</code> bytes from it. <a href="https://doc.rust-lang.org/1.73.0/std/io/trait.Read.html#method.take">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Seek-for-BlockingReade [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
diff --git a/docs/rust/opendal/struct.Error.html b/docs/rust/opendal/struct.Error.html
index 270388b11..ca31b24e8 100644
--- a/docs/rust/opendal/struct.Error.html
+++ b/docs/rust/opendal/struct.Error.html
@@ -68,7 +68,7 @@ Backtrace:
<p>By setting persistent, we indicate the retry should be stopped.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.kind" class="method"><a class="src rightside" href="../src/opendal/types/error.rs.html#406-408">source</a><h4 class="code-header">pub fn <a href="#method.kind" class="fn">kind</a>(&self) -> <a class="enum" href="enum.ErrorKind.html" title="enum opendal::ErrorKind">ErrorKind</a></h4></section></summary><div class="docblock"><p>Return error’s kind.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_temporary" class="method"><a class="src rightside" href="../src/opendal/types/error.rs.html#411-413">source</a><h4 class="code-header">pub fn <a href="#method.is_temporary" class="fn">is_temporary</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if this error is temporary.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="src rightside" href="../src/opendal/types/error.rs.html#277-317">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="src rightside" href="../src/opendal/types/error.rs.html#277-317">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/any.rs.html#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:// [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/1.73.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.73.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href=" [...]
diff --git a/docs/rust/opendal/struct.Reader.html b/docs/rust/opendal/struct.Reader.html
index 1b8c8b31a..0a514e382 100644
--- a/docs/rust/opendal/struct.Reader.html
+++ b/docs/rust/opendal/struct.Reader.html
@@ -17,7 +17,7 @@ want to do copy inside IO workers. They can use <code>Stream</code> to get a <co
and consume it in side CPU workers inside.</p>
<p>Besides, <code>Stream</code> <strong>COULD</strong> reduce an extra copy if underlying reader is
stream based (like services s3, azure which based on HTTP).</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader" class="impl"><a class="src rightside" href="../src/opendal/types/reader.rs.html#93-101">source</a><a href="#impl-AsyncRead-for-Reader" class="anchor">§</a><h3 class="code-header">impl AsyncRead for <a c [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader" class="impl"><a class="src rightside" href="../src/opendal/types/reader.rs.html#93-101">source</a><a href="#impl-AsyncRead-for-Reader" class="anchor">§</a><h3 class="code-header">impl AsyncRead for <a c [...]
self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
buf: &mut [<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>]
@@ -26,22 +26,22 @@ stream based (like services s3, azure which based on HTTP).</p>
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
bufs: &mut [<a class="struct" href="https://doc.rust-lang.org/1.73.0/std/io/struct.IoSliceMut.html" title="struct std::io::IoSliceMut">IoSliceMut</a><'_>]
) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="enum" href="https://doc.rust-lang.org/1.73.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.73.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader-1" class="impl"><a class="src rightside" href="../src/opendal/types/reader.rs.html#113-127">source</a><a href="#impl-AsyncRead-for-Reader-1" class="anchor">§</a><h3 class="code-header">impl AsyncRead for <a class="struct" href="struct.Reader.html" title="struct opendal::Reader">Reader</a></h3></section></summary><div class="impl-i [...]
+IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader-1" class="impl"><a class="src rightside" href="../src/opendal/types/reader.rs.html#113-127">source</a><a href="#impl-AsyncRead-for-Reader-1" class="anchor">§</a><h3 class="code-header">impl AsyncRead for <a class="struct" href="struct.Reader.html" title="struct opendal::Reader">Reader</a></h3></section></summary><div class="impl-i [...]
self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
buf: &mut ReadBuf<'_>
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.unit.html">()</a>>></h4></section></summary><div class='docblock'>Attempts to read from the <code>AsyncRead</code> into <code>buf</cod [...]
- self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
- cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section></summary><div class='docblock'>Waits for a seek operation to complete. <a>Read more</a></div></deta [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.unit.html">()</a>>></h4></section></summary><div class='docblock'>Attempts to read from the <code>AsyncRead</code> into <code>buf</cod [...]
self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
pos: <a class="enum" href="https://doc.rust-lang.org/1.73.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
+ self: <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.reference.html">&mut Self</a>>,
+ cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="https://doc.rust-lang.org/1.73.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u64.html">u64</a>>></h4></section></summary><div class='docblock'>Waits for a seek operation to complete. <a>Read more</a></div></deta [...]
&mut self,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
buf: &mut [<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.u8.html">u8</a>]
-) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="method.pol [...]
+) -> <a class="enum" href="https://doc.rust-lang.org/1.73.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a><<a class="type" href="type.Result.html" title="type opendal::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.73.0/std/primitive.usize.html">usize</a>>></h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="method.pol [...]
&mut self,
cx: &mut <a class="struct" href="https://doc.rust-lang.org/1.73.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a><'_>,
pos: <a class="enum" href="https://doc.rust-lang.org/1.73.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
diff --git a/docs/rust/opendal/trait.Builder.html b/docs/rust/opendal/trait.Builder.html
index 3bad6161c..6f0d625db 100644
--- a/docs/rust/opendal/trait.Builder.html
+++ b/docs/rust/opendal/trait.Builder.html
@@ -22,4 +22,4 @@ We also promise that every public API will provide detailed documentation.</p>
</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.from_map" class="method"><a class="src rightside" href="../src/opendal/types/builder.rs.html#45">source</a><h4 class="code-header">fn <a href="#tymethod.from_map" class="fn">from_map</a>(map: <a class="struct" href="https://doc.rust-lang.org/1.73.0/st [...]
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.build" class="method"><a class="src rightside" href="../src/opendal/types/builder.rs.html#48">source</a><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(&mut self) -> <a class="type" href="type.Result.html" title="type opendal::Result">Result</a><Self::<a class="associatedtype" href="trait.Builder.html#associatedtype.Accessor" title="type opendal::Builder::Accessor [...]
</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Builder-for-()" class="impl"><a class="src rightside" href="../src/opendal/types/builder.rs.html#52-62">source</a><a href="#impl-Builder-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Builder.html" title="trait opendal::Builde [...]
-</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl"><a class="src rightside" href="../src/opendal/types/builder.rs.html#53">source</a><a href="#associatedconstant.SCHEME-1" class="anchor">§</a><h4 class="code-header">const <a href="#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> = _</h4></section><section id="associatedtype.Accessor-1" class=" [...]
\ No newline at end of file
+</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl"><a class="src rightside" href="../src/opendal/types/builder.rs.html#53">source</a><a href="#associatedconstant.SCHEME-1" class="anchor">§</a><h4 class="code-header">const <a href="#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> = _</h4></section><section id="associatedtype.Accessor-1" class=" [...]
\ No newline at end of file
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index 744819248..dba504431 100644
--- a/docs/rust/search-index.js
+++ b/docs/rust/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = JSON.parse('{\
-"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNNNNDDDDINNDNNNNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNNNNNDNNDENNNNNNNNDDDNNNNNDNNGNNSENNNNNNNNNNNNNDLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
+"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNNNNNDDDDINNDNNNNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNNNNNDNNDENNNNNNNNDDDNNNNNDNNGNNSENNNNNNNNNNNNNDLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
}');
if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/rust/src-files.js b/docs/rust/src-files.js
index 043594ef6..e8cd186a2 100644
--- a/docs/rust/src-files.js
+++ b/docs/rust/src-files.js
@@ -1,4 +1,4 @@
var srcIndex = JSON.parse('{\
-"opendal":["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["async_backtrace.rs","await_tree.rs","blocking.rs","chaos.rs","complete.rs","concurrent_limit.rs","error_context.rs","immutable_index.rs","logging.rs","madsim.rs","metrics.rs","minitrace.rs","mod.rs","oteltrace.rs","prometheus.rs","prometheus_client.rs","retry.rs","throttle.rs","timeout.rs","tracing.rs","type_eraser.rs" [...]
+"opendal":["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["async_backtrace.rs","await_tree.rs","blocking.rs","chaos.rs","complete.rs","concurrent_limit.rs","error_context.rs","immutable_index.rs","logging.rs","madsim.rs","metrics.rs","minitrace.rs","mod.rs","oteltrace.rs","prometheus.rs","prometheus_client.rs","retry.rs","throttle.rs","timeout.rs","tracing.rs","type_eraser.rs" [...]
}');
createSrcSidebar();
diff --git a/docs/rust/src/opendal/services/azdls/error.rs.html b/docs/rust/src/opendal/services/azdls/error.rs.html
index 75a9d7eb9..5aafc5376 100644
--- a/docs/rust/src/opendal/services/azdls/error.rs.html
+++ b/docs/rust/src/opendal/services/azdls/error.rs.html
@@ -184,7 +184,7 @@
};
<span class="kw">let </span><span class="kw-2">mut </span>message = <span class="kw">match </span>de::from_reader::<<span class="kw">_</span>, AzdlsError>(bs.clone().reader()) {
- <span class="prelude-val">Ok</span>(azblob_err) => <span class="macro">format!</span>(<span class="string">"{azblob_err:?}"</span>),
+ <span class="prelude-val">Ok</span>(azdls_err) => <span class="macro">format!</span>(<span class="string">"{azdls_err:?}"</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) => String::from_utf8_lossy(<span class="kw-2">&</span>bs).into_owned(),
};
<span class="comment">// If there is no body here, fill with error code.
diff --git a/docs/rust/src/opendal/services/azfile/backend.rs.html b/docs/rust/src/opendal/services/azfile/backend.rs.html
new file mode 100644
index 000000000..cf90c2f86
--- /dev/null
+++ b/docs/rust/src/opendal/services/azfile/backend.rs.html
@@ -0,0 +1,885 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/services/azfile/backend.rs`."><title>backend.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cr [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+<a href="#419" id="419">419</a>
+<a href="#420" id="420">420</a>
+<a href="#421" id="421">421</a>
+<a href="#422" id="422">422</a>
+<a href="#423" id="423">423</a>
+<a href="#424" id="424">424</a>
+<a href="#425" id="425">425</a>
+<a href="#426" id="426">426</a>
+<a href="#427" id="427">427</a>
+<a href="#428" id="428">428</a>
+<a href="#429" id="429">429</a>
+<a href="#430" id="430">430</a>
+<a href="#431" id="431">431</a>
+<a href="#432" id="432">432</a>
+<a href="#433" id="433">433</a>
+<a href="#434" id="434">434</a>
+<a href="#435" id="435">435</a>
+<a href="#436" id="436">436</a>
+<a href="#437" id="437">437</a>
+<a href="#438" id="438">438</a>
+<a href="#439" id="439">439</a>
+<a href="#440" id="440">440</a>
+<a href="#441" id="441">441</a>
+<a href="#442" id="442">442</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::collections::HashMap;
+<span class="kw">use </span>std::fmt::Debug;
+<span class="kw">use </span>std::fmt::Formatter;
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>async_trait::async_trait;
+<span class="kw">use </span>http::StatusCode;
+<span class="kw">use </span>log::debug;
+<span class="kw">use </span>reqsign::AzureStorageConfig;
+<span class="kw">use </span>reqsign::AzureStorageLoader;
+<span class="kw">use </span>reqsign::AzureStorageSigner;
+
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">crate</span>::services::azfile::pager::AzfilePager;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">use </span><span class="kw">super</span>::core::AzfileCore;
+<span class="kw">use </span><span class="kw">super</span>::error::parse_error;
+<span class="kw">use </span><span class="kw">super</span>::writer::AzfileWriter;
+<span class="kw">use </span><span class="kw">super</span>::writer::AzfileWriters;
+
+<span class="doccomment">/// Default endpoint of Azure File services.
+</span><span class="kw">const </span>DEFAULT_AZFILE_ENDPOINT_SUFFIX: <span class="kw-2">&</span>str = <span class="string">"file.core.windows.net"</span>;
+
+<span class="doccomment">/// Azure File services support.
+</span><span class="attr">#[doc = <span class="macro">include_str!</span>(<span class="string">"docs.md"</span>)]
+#[derive(Default, Clone)]
+</span><span class="kw">pub struct </span>AzfileBuilder {
+ root: <span class="prelude-ty">Option</span><String>,
+ endpoint: <span class="prelude-ty">Option</span><String>,
+ account_name: <span class="prelude-ty">Option</span><String>,
+ share_name: String,
+ account_key: <span class="prelude-ty">Option</span><String>,
+ sas_token: <span class="prelude-ty">Option</span><String>,
+ http_client: <span class="prelude-ty">Option</span><HttpClient>,
+}
+
+<span class="kw">impl </span>Debug <span class="kw">for </span>AzfileBuilder {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>Formatter<<span class="lifetime">'_</span>>) -> std::fmt::Result {
+ <span class="kw">let </span><span class="kw-2">mut </span>ds = f.debug_struct(<span class="string">"Builder"</span>);
+
+ ds.field(<span class="string">"root"</span>, <span class="kw-2">&</span><span class="self">self</span>.root);
+ ds.field(<span class="string">"endpoint"</span>, <span class="kw-2">&</span><span class="self">self</span>.endpoint);
+ ds.field(<span class="string">"share_name"</span>, <span class="kw-2">&</span><span class="self">self</span>.share_name);
+ <span class="kw">if </span><span class="self">self</span>.account_name.is_some() {
+ ds.field(<span class="string">"account_name"</span>, <span class="kw-2">&</span><span class="string">"<redacted>"</span>);
+ }
+ <span class="kw">if </span><span class="self">self</span>.account_key.is_some() {
+ ds.field(<span class="string">"account_key"</span>, <span class="kw-2">&</span><span class="string">"<redacted>"</span>);
+ }
+
+ ds.finish()
+ }
+}
+
+<span class="kw">impl </span>AzfileBuilder {
+ <span class="doccomment">/// Set root of this backend.
+ ///
+ /// All operations will happen under this root.
+ </span><span class="kw">pub fn </span>root(<span class="kw-2">&mut </span><span class="self">self</span>, root: <span class="kw-2">&</span>str) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="kw">if </span>!root.is_empty() {
+ <span class="self">self</span>.root = <span class="prelude-val">Some</span>(root.to_string())
+ }
+
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set endpoint of this backend.
+ </span><span class="kw">pub fn </span>endpoint(<span class="kw-2">&mut </span><span class="self">self</span>, endpoint: <span class="kw-2">&</span>str) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="kw">if </span>!endpoint.is_empty() {
+ <span class="comment">// Trim trailing `/` so that we can accept `http://127.0.0.1:9000/`
+ </span><span class="self">self</span>.endpoint = <span class="prelude-val">Some</span>(endpoint.trim_end_matches(<span class="string">'/'</span>).to_string());
+ }
+
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set account_name of this backend.
+ ///
+ /// - If account_name is set, we will take user's input first.
+ /// - If not, we will try to load it from environment.
+ </span><span class="kw">pub fn </span>account_name(<span class="kw-2">&mut </span><span class="self">self</span>, account_name: <span class="kw-2">&</span>str) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="kw">if </span>!account_name.is_empty() {
+ <span class="self">self</span>.account_name = <span class="prelude-val">Some</span>(account_name.to_string());
+ }
+
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set account_key of this backend.
+ ///
+ /// - If account_key is set, we will take user's input first.
+ /// - If not, we will try to load it from environment.
+ </span><span class="kw">pub fn </span>account_key(<span class="kw-2">&mut </span><span class="self">self</span>, account_key: <span class="kw-2">&</span>str) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="kw">if </span>!account_key.is_empty() {
+ <span class="self">self</span>.account_key = <span class="prelude-val">Some</span>(account_key.to_string());
+ }
+
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Set file share name of this backend.
+ ///
+ /// # Notes
+ /// You can find more about from: https://learn.microsoft.com/en-us/rest/api/storageservices/operations-on-shares--file-service
+ </span><span class="kw">pub fn </span>share_name(<span class="kw-2">&mut </span><span class="self">self</span>, share_name: <span class="kw-2">&</span>str) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="kw">if </span>!share_name.is_empty() {
+ <span class="self">self</span>.share_name = share_name.to_string();
+ }
+
+ <span class="self">self
+ </span>}
+
+ <span class="doccomment">/// Specify the http client that used by this service.
+ ///
+ /// # Notes
+ ///
+ /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
+ /// during minor updates.
+ </span><span class="kw">pub fn </span>http_client(<span class="kw-2">&mut </span><span class="self">self</span>, client: HttpClient) -> <span class="kw-2">&mut </span><span class="self">Self </span>{
+ <span class="self">self</span>.http_client = <span class="prelude-val">Some</span>(client);
+ <span class="self">self
+ </span>}
+}
+
+<span class="kw">impl </span>Builder <span class="kw">for </span>AzfileBuilder {
+ <span class="kw">const </span>SCHEME: Scheme = Scheme::Azfile;
+ <span class="kw">type </span>Accessor = AzfileBackend;
+
+ <span class="kw">fn </span>from_map(map: HashMap<String, String>) -> <span class="self">Self </span>{
+ <span class="kw">let </span><span class="kw-2">mut </span>builder = AzfileBuilder::default();
+
+ map.get(<span class="string">"root"</span>).map(|v| builder.root(v));
+ map.get(<span class="string">"endpoint"</span>).map(|v| builder.endpoint(v));
+ map.get(<span class="string">"account_name"</span>).map(|v| builder.account_name(v));
+ map.get(<span class="string">"account_key"</span>).map(|v| builder.account_key(v));
+ map.get(<span class="string">"share_name"</span>).map(|v| builder.share_name(v));
+
+ builder
+ }
+
+ <span class="kw">fn </span>build(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>::Accessor> {
+ <span class="macro">debug!</span>(<span class="string">"backend build started: {:?}"</span>, <span class="kw-2">&</span><span class="self">self</span>);
+
+ <span class="kw">let </span>root = normalize_root(<span class="kw-2">&</span><span class="self">self</span>.root.take().unwrap_or_default());
+ <span class="macro">debug!</span>(<span class="string">"backend use root {}"</span>, root);
+
+ <span class="kw">let </span>endpoint = <span class="kw">match </span><span class="kw-2">&</span><span class="self">self</span>.endpoint {
+ <span class="prelude-val">Some</span>(endpoint) => <span class="prelude-val">Ok</span>(endpoint.clone()),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Err</span>(Error::new(ErrorKind::ConfigInvalid, <span class="string">"endpoint is empty"</span>)
+ .with_operation(<span class="string">"Builder::build"</span>)
+ .with_context(<span class="string">"service"</span>, Scheme::Azfile)),
+ }<span class="question-mark">?</span>;
+ <span class="macro">debug!</span>(<span class="string">"backend use endpoint {}"</span>, <span class="kw-2">&</span>endpoint);
+
+ <span class="kw">let </span>client = <span class="kw">if let </span><span class="prelude-val">Some</span>(client) = <span class="self">self</span>.http_client.take() {
+ client
+ } <span class="kw">else </span>{
+ HttpClient::new().map_err(|err| {
+ err.with_operation(<span class="string">"Builder::build"</span>)
+ .with_context(<span class="string">"service"</span>, Scheme::Azfile)
+ })<span class="question-mark">?
+ </span>};
+
+ <span class="kw">let </span>account_name_option = <span class="self">self
+ </span>.account_name
+ .clone()
+ .or_else(|| infer_account_name_from_endpoint(endpoint.as_str()));
+
+ <span class="kw">let </span>account_name = <span class="kw">match </span>account_name_option {
+ <span class="prelude-val">Some</span>(account_name) => <span class="prelude-val">Ok</span>(account_name),
+ <span class="prelude-val">None </span>=> <span class="prelude-val">Err</span>(
+ Error::new(ErrorKind::ConfigInvalid, <span class="string">"account_name is empty"</span>)
+ .with_operation(<span class="string">"Builder::build"</span>)
+ .with_context(<span class="string">"service"</span>, Scheme::Azfile),
+ ),
+ }<span class="question-mark">?</span>;
+
+ <span class="kw">let </span>config_loader = AzureStorageConfig {
+ account_name: <span class="prelude-val">Some</span>(account_name),
+ sas_token: <span class="self">self</span>.sas_token.clone(),
+ ..Default::default()
+ };
+
+ <span class="kw">let </span>cred_loader = AzureStorageLoader::new(config_loader);
+
+ <span class="kw">let </span>signer = AzureStorageSigner::new();
+
+ <span class="macro">debug!</span>(<span class="string">"backend build finished: {:?}"</span>, <span class="kw-2">&</span><span class="self">self</span>);
+ <span class="prelude-val">Ok</span>(AzfileBackend {
+ core: Arc::new(AzfileCore {
+ root,
+ endpoint,
+ loader: cred_loader,
+ client,
+ signer,
+ share_name: <span class="self">self</span>.share_name.clone(),
+ }),
+ })
+ }
+}
+
+<span class="kw">fn </span>infer_account_name_from_endpoint(endpoint: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Option</span><String> {
+ <span class="kw">let </span>endpoint: <span class="kw-2">&</span>str = endpoint
+ .strip_prefix(<span class="string">"http://"</span>)
+ .or_else(|| endpoint.strip_prefix(<span class="string">"https://"</span>))
+ .unwrap_or(endpoint);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>parts = endpoint.splitn(<span class="number">2</span>, <span class="string">'.'</span>);
+ <span class="kw">let </span>account_name = parts.next();
+ <span class="kw">let </span>endpoint_suffix = parts
+ .next()
+ .unwrap_or_default()
+ .trim_end_matches(<span class="string">'/'</span>)
+ .to_lowercase();
+
+ <span class="kw">if </span>endpoint_suffix == DEFAULT_AZFILE_ENDPOINT_SUFFIX {
+ account_name.map(|s| s.to_string())
+ } <span class="kw">else </span>{
+ <span class="prelude-val">None
+ </span>}
+}
+
+<span class="doccomment">/// Backend for azfile services.
+</span><span class="attr">#[derive(Debug, Clone)]
+</span><span class="kw">pub struct </span>AzfileBackend {
+ core: Arc<AzfileCore>,
+}
+
+<span class="attr">#[async_trait]
+</span><span class="kw">impl </span>Accessor <span class="kw">for </span>AzfileBackend {
+ <span class="kw">type </span>Reader = IncomingAsyncBody;
+ <span class="kw">type </span>BlockingReader = ();
+ <span class="kw">type </span>Writer = AzfileWriters;
+ <span class="kw">type </span>BlockingWriter = ();
+ <span class="kw">type </span>Pager = AzfilePager;
+ <span class="kw">type </span>BlockingPager = ();
+
+ <span class="kw">fn </span>info(<span class="kw-2">&</span><span class="self">self</span>) -> AccessorInfo {
+ <span class="kw">let </span><span class="kw-2">mut </span>am = AccessorInfo::default();
+ am.set_scheme(Scheme::Azfile)
+ .set_root(<span class="kw-2">&</span><span class="self">self</span>.core.root)
+ .set_native_capability(Capability {
+ stat: <span class="bool-val">true</span>,
+
+ read: <span class="bool-val">true</span>,
+ read_can_next: <span class="bool-val">true</span>,
+ read_with_range: <span class="bool-val">true</span>,
+
+ write: <span class="bool-val">true</span>,
+ create_dir: <span class="bool-val">true</span>,
+ delete: <span class="bool-val">true</span>,
+ rename: <span class="bool-val">true</span>,
+
+ list: <span class="bool-val">true</span>,
+ list_with_delimiter_slash: <span class="bool-val">true</span>,
+
+ ..Default::default()
+ });
+
+ am
+ }
+
+ <span class="kw">async fn </span>create_dir(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, <span class="kw">_</span>: OpCreateDir) -> <span class="prelude-ty">Result</span><RpCreateDir> {
+ <span class="self">self</span>.core.ensure_parent_dir_exists(path).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>resp = <span class="self">self</span>.core.azfile_create_dir(path).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>status = resp.status();
+
+ <span class="kw">match </span>status {
+ StatusCode::CREATED => {
+ resp.into_body().consume().<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(RpCreateDir::default())
+ }
+ <span class="kw">_ </span>=> {
+ <span class="kw">if </span>resp
+ .headers()
+ .get(<span class="string">"x-ms-error-code"</span>)
+ .map(|value| value.to_str().unwrap_or(<span class="string">""</span>))
+ .unwrap_or_else(|| <span class="string">""</span>)
+ == <span class="string">"ResourceAlreadyExists"
+ </span>{
+ <span class="prelude-val">Ok</span>(RpCreateDir::default())
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>)
+ }
+ }
+ }
+ }
+
+ <span class="kw">async fn </span>read(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, args: OpRead) -> <span class="prelude-ty">Result</span><(RpRead, <span class="self">Self</span>::Reader)> {
+ <span class="kw">let </span>resp = <span class="self">self</span>.core.azfile_read(path, args.range()).<span class="kw">await</span><span class="question-mark">?</span>;
+
+ <span class="kw">let </span>status = resp.status();
+
+ <span class="kw">match </span>status {
+ StatusCode::OK | StatusCode::PARTIAL_CONTENT => {
+ <span class="kw">let </span>meta = parse_into_metadata(path, resp.headers())<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>((RpRead::with_metadata(meta), resp.into_body()))
+ }
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>),
+ }
+ }
+
+ <span class="kw">async fn </span>write(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, args: OpWrite) -> <span class="prelude-ty">Result</span><(RpWrite, <span class="self">Self</span>::Writer)> {
+ <span class="self">self</span>.core.ensure_parent_dir_exists(path).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>w = AzfileWriter::new(<span class="self">self</span>.core.clone(), args.clone(), path.to_string());
+ <span class="kw">let </span>w = <span class="kw">if </span>args.append() {
+ AzfileWriters::Two(oio::AppendObjectWriter::new(w))
+ } <span class="kw">else </span>{
+ AzfileWriters::One(oio::OneShotWriter::new(w))
+ };
+ <span class="kw">return </span><span class="prelude-val">Ok</span>((RpWrite::default(), w));
+ }
+
+ <span class="kw">async fn </span>stat(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, <span class="kw">_</span>: OpStat) -> <span class="prelude-ty">Result</span><RpStat> {
+ <span class="comment">// Stat root always returns a DIR.
+ </span><span class="kw">if </span>path == <span class="string">"/" </span>{
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(RpStat::new(Metadata::new(EntryMode::DIR)));
+ }
+
+ <span class="kw">if </span>path.ends_with(<span class="string">'/'</span>) {
+ <span class="kw">let </span>resp = <span class="self">self</span>.core.azfile_get_path_properties(path).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>status = resp.status();
+ <span class="kw">match </span>status {
+ StatusCode::OK => {
+ <span class="kw">let </span>meta = parse_into_metadata(path, resp.headers())<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(RpStat::new(meta))
+ }
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>),
+ }
+ } <span class="kw">else </span>{
+ <span class="kw">let </span>resp = <span class="self">self</span>.core.azfile_get_file_properties(path).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>status = resp.status();
+ <span class="kw">match </span>status {
+ StatusCode::OK => {
+ <span class="kw">let </span>meta = parse_into_metadata(path, resp.headers())<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(RpStat::new(meta))
+ }
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>),
+ }
+ }
+ }
+
+ <span class="kw">async fn </span>rename(<span class="kw-2">&</span><span class="self">self</span>, from: <span class="kw-2">&</span>str, to: <span class="kw-2">&</span>str, <span class="kw">_</span>: OpRename) -> <span class="prelude-ty">Result</span><RpRename> {
+ <span class="self">self</span>.core.ensure_parent_dir_exists(to).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>resp = <span class="self">self</span>.core.azfile_rename(from, to).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>status = resp.status();
+ <span class="kw">match </span>status {
+ StatusCode::OK => {
+ resp.into_body().consume().<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(RpRename::default())
+ }
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>),
+ }
+ }
+
+ <span class="kw">async fn </span>delete(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, <span class="kw">_</span>: OpDelete) -> <span class="prelude-ty">Result</span><RpDelete> {
+ <span class="kw">let </span>resp = <span class="kw">if </span>path.ends_with(<span class="string">'/'</span>) {
+ <span class="self">self</span>.core.azfile_delete_dir(path).<span class="kw">await</span><span class="question-mark">?
+ </span>} <span class="kw">else </span>{
+ <span class="self">self</span>.core.azfile_delete_file(path).<span class="kw">await</span><span class="question-mark">?
+ </span>};
+
+ <span class="kw">let </span>status = resp.status();
+ <span class="kw">match </span>status {
+ StatusCode::ACCEPTED => {
+ resp.into_body().consume().<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(RpDelete::default())
+ }
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>),
+ }
+ }
+
+ <span class="kw">async fn </span>list(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, args: OpList) -> <span class="prelude-ty">Result</span><(RpList, <span class="self">Self</span>::Pager)> {
+ <span class="kw">let </span>op = AzfilePager::new(<span class="self">self</span>.core.clone(), path.to_string(), args.limit());
+
+ <span class="prelude-val">Ok</span>((RpList::default(), op))
+ }
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+ <span class="kw">use </span><span class="kw">crate</span>::Builder;
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_infer_storage_name_from_endpoint() {
+ <span class="kw">let </span>cases = <span class="macro">vec!</span>[
+ (
+ <span class="string">"test infer account name from endpoint"</span>,
+ <span class="string">"https://account.file.core.windows.net"</span>,
+ <span class="string">"account"</span>,
+ ),
+ (
+ <span class="string">"test infer account name from endpoint with trailing slash"</span>,
+ <span class="string">"https://account.file.core.windows.net/"</span>,
+ <span class="string">"account"</span>,
+ ),
+ ];
+ <span class="kw">for </span>(desc, endpoint, expected) <span class="kw">in </span>cases {
+ <span class="kw">let </span>account_name = infer_account_name_from_endpoint(endpoint);
+ <span class="macro">assert_eq!</span>(account_name, <span class="prelude-val">Some</span>(expected.to_string()), <span class="string">"{}"</span>, desc);
+ }
+ }
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_builder_from_endpoint_and_key_infer_account_name() {
+ <span class="kw">let </span><span class="kw-2">mut </span>azfile_builder = AzfileBuilder::default();
+ azfile_builder.endpoint(<span class="string">"https://account.file.core.windows.net/"</span>);
+ azfile_builder.account_key(<span class="string">"account-key"</span>);
+ <span class="kw">let </span>azfile = azfile_builder
+ .build()
+ .expect(<span class="string">"build Azdls should be succeeded."</span>);
+
+ <span class="macro">assert_eq!</span>(
+ azfile.core.endpoint,
+ <span class="string">"https://account.file.core.windows.net"
+ </span>);
+
+ <span class="macro">assert_eq!</span>(
+ azfile_builder.account_key.unwrap(),
+ <span class="string">"account-key"</span>.to_string()
+ );
+ }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/azfile/core.rs.html b/docs/rust/src/opendal/services/azfile/core.rs.html
new file mode 100644
index 000000000..37c1f180c
--- /dev/null
+++ b/docs/rust/src/opendal/services/azfile/core.rs.html
@@ -0,0 +1,837 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/services/azfile/core.rs`."><title>core.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<a href="#308" id="308">308</a>
+<a href="#309" id="309">309</a>
+<a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</a>
+<a href="#316" id="316">316</a>
+<a href="#317" id="317">317</a>
+<a href="#318" id="318">318</a>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<a href="#326" id="326">326</a>
+<a href="#327" id="327">327</a>
+<a href="#328" id="328">328</a>
+<a href="#329" id="329">329</a>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<a href="#333" id="333">333</a>
+<a href="#334" id="334">334</a>
+<a href="#335" id="335">335</a>
+<a href="#336" id="336">336</a>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<a href="#361" id="361">361</a>
+<a href="#362" id="362">362</a>
+<a href="#363" id="363">363</a>
+<a href="#364" id="364">364</a>
+<a href="#365" id="365">365</a>
+<a href="#366" id="366">366</a>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<a href="#372" id="372">372</a>
+<a href="#373" id="373">373</a>
+<a href="#374" id="374">374</a>
+<a href="#375" id="375">375</a>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</a>
+<a href="#378" id="378">378</a>
+<a href="#379" id="379">379</a>
+<a href="#380" id="380">380</a>
+<a href="#381" id="381">381</a>
+<a href="#382" id="382">382</a>
+<a href="#383" id="383">383</a>
+<a href="#384" id="384">384</a>
+<a href="#385" id="385">385</a>
+<a href="#386" id="386">386</a>
+<a href="#387" id="387">387</a>
+<a href="#388" id="388">388</a>
+<a href="#389" id="389">389</a>
+<a href="#390" id="390">390</a>
+<a href="#391" id="391">391</a>
+<a href="#392" id="392">392</a>
+<a href="#393" id="393">393</a>
+<a href="#394" id="394">394</a>
+<a href="#395" id="395">395</a>
+<a href="#396" id="396">396</a>
+<a href="#397" id="397">397</a>
+<a href="#398" id="398">398</a>
+<a href="#399" id="399">399</a>
+<a href="#400" id="400">400</a>
+<a href="#401" id="401">401</a>
+<a href="#402" id="402">402</a>
+<a href="#403" id="403">403</a>
+<a href="#404" id="404">404</a>
+<a href="#405" id="405">405</a>
+<a href="#406" id="406">406</a>
+<a href="#407" id="407">407</a>
+<a href="#408" id="408">408</a>
+<a href="#409" id="409">409</a>
+<a href="#410" id="410">410</a>
+<a href="#411" id="411">411</a>
+<a href="#412" id="412">412</a>
+<a href="#413" id="413">413</a>
+<a href="#414" id="414">414</a>
+<a href="#415" id="415">415</a>
+<a href="#416" id="416">416</a>
+<a href="#417" id="417">417</a>
+<a href="#418" id="418">418</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::collections::VecDeque;
+<span class="kw">use </span>std::fmt::Debug;
+<span class="kw">use </span>std::fmt::Formatter;
+<span class="kw">use </span>std::fmt::Write;
+
+<span class="kw">use </span>http::header::CONTENT_DISPOSITION;
+<span class="kw">use </span>http::header::CONTENT_LENGTH;
+<span class="kw">use </span>http::header::CONTENT_TYPE;
+<span class="kw">use </span>http::header::RANGE;
+<span class="kw">use </span>http::HeaderName;
+<span class="kw">use </span>http::HeaderValue;
+<span class="kw">use </span>http::Request;
+<span class="kw">use </span>http::Response;
+<span class="kw">use </span>http::StatusCode;
+<span class="kw">use </span>reqsign::AzureStorageCredential;
+<span class="kw">use </span>reqsign::AzureStorageLoader;
+<span class="kw">use </span>reqsign::AzureStorageSigner;
+
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">const </span>X_MS_VERSION: <span class="kw-2">&</span>str = <span class="string">"x-ms-version"</span>;
+<span class="kw">const </span>X_MS_WRITE: <span class="kw-2">&</span>str = <span class="string">"x-ms-write"</span>;
+<span class="kw">const </span>X_MS_RENAME_SOURCE: <span class="kw-2">&</span>str = <span class="string">"x-ms-rename-source"</span>;
+<span class="kw">const </span>X_MS_CONTENT_LENGTH: <span class="kw-2">&</span>str = <span class="string">"x-ms-content-length"</span>;
+<span class="kw">const </span>X_MS_TYPE: <span class="kw-2">&</span>str = <span class="string">"x-ms-type"</span>;
+
+<span class="kw">pub struct </span>AzfileCore {
+ <span class="kw">pub </span>root: String,
+ <span class="kw">pub </span>endpoint: String,
+ <span class="kw">pub </span>share_name: String,
+ <span class="kw">pub </span>client: HttpClient,
+ <span class="kw">pub </span>loader: AzureStorageLoader,
+ <span class="kw">pub </span>signer: AzureStorageSigner,
+}
+
+<span class="kw">impl </span>Debug <span class="kw">for </span>AzfileCore {
+ <span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>Formatter<<span class="lifetime">'_</span>>) -> std::fmt::Result {
+ f.debug_struct(<span class="string">"AzfileCore"</span>)
+ .field(<span class="string">"root"</span>, <span class="kw-2">&</span><span class="self">self</span>.root)
+ .field(<span class="string">"endpoint"</span>, <span class="kw-2">&</span><span class="self">self</span>.endpoint)
+ .field(<span class="string">"share_name"</span>, <span class="kw-2">&</span><span class="self">self</span>.share_name)
+ .finish_non_exhaustive()
+ }
+}
+
+<span class="kw">impl </span>AzfileCore {
+ <span class="kw">async fn </span>load_credential(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><AzureStorageCredential> {
+ <span class="kw">let </span>cred = <span class="self">self
+ </span>.loader
+ .load()
+ .<span class="kw">await
+ </span>.map_err(new_request_credential_error)<span class="question-mark">?</span>;
+
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(cred) = cred {
+ <span class="prelude-val">Ok</span>(cred)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Err</span>(Error::new(
+ ErrorKind::ConfigInvalid,
+ <span class="string">"no valid credential found"</span>,
+ ))
+ }
+ }
+
+ <span class="kw">pub async fn </span>sign<T>(<span class="kw-2">&</span><span class="self">self</span>, req: <span class="kw-2">&mut </span>Request<T>) -> <span class="prelude-ty">Result</span><()> {
+ <span class="kw">let </span>cred = <span class="self">self</span>.load_credential().<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="comment">// Insert x-ms-version header for normal requests.
+ </span>req.headers_mut().insert(
+ HeaderName::from_static(X_MS_VERSION),
+ <span class="comment">// consistent with azdls and azblob
+ </span>HeaderValue::from_static(<span class="string">"2022-11-02"</span>),
+ );
+ <span class="self">self</span>.signer.sign(req, <span class="kw-2">&</span>cred).map_err(new_request_sign_error)
+ }
+
+ <span class="attr">#[inline]
+ </span><span class="kw">pub async fn </span>send(<span class="kw-2">&</span><span class="self">self</span>, req: Request<AsyncBody>) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="self">self</span>.client.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_read(
+ <span class="kw-2">&</span><span class="self">self</span>,
+ path: <span class="kw-2">&</span>str,
+ range: BytesRange,
+ ) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path);
+
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = Request::get(<span class="kw-2">&</span>url);
+
+ req = req.header(RANGE, range.to_header());
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_create_file(
+ <span class="kw-2">&</span><span class="self">self</span>,
+ path: <span class="kw-2">&</span>str,
+ size: usize,
+ args: <span class="kw-2">&</span>OpWrite,
+ ) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = Request::put(<span class="kw-2">&</span>url);
+
+ <span class="comment">// x-ms-content-length specifies the maximum size for the file, up to 4 tebibytes (TiB)
+ // https://learn.microsoft.com/en-us/rest/api/storageservices/create-file
+ </span>req = req.header(X_MS_CONTENT_LENGTH, size);
+
+ req = req.header(X_MS_TYPE, <span class="string">"file"</span>);
+
+ <span class="comment">// Content length must be 0 for create request.
+ </span>req = req.header(CONTENT_LENGTH, <span class="number">0</span>);
+
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(ty) = args.content_type() {
+ req = req.header(CONTENT_TYPE, ty);
+ }
+
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(pos) = args.content_disposition() {
+ req = req.header(CONTENT_DISPOSITION, pos);
+ }
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_update(
+ <span class="kw-2">&</span><span class="self">self</span>,
+ path: <span class="kw-2">&</span>str,
+ size: u64,
+ position: u64,
+ body: AsyncBody,
+ ) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}?comp=range"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = Request::put(<span class="kw-2">&</span>url);
+
+ req = req.header(CONTENT_LENGTH, size);
+
+ req = req.header(X_MS_WRITE, <span class="string">"update"</span>);
+
+ req = req.header(
+ RANGE,
+ BytesRange::from(position..position + size).to_header(),
+ );
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req.body(body).map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_get_file_properties(
+ <span class="kw-2">&</span><span class="self">self</span>,
+ path: <span class="kw-2">&</span>str,
+ ) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span>req = Request::head(<span class="kw-2">&</span>url);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_get_path_properties(
+ <span class="kw-2">&</span><span class="self">self</span>,
+ path: <span class="kw-2">&</span>str,
+ ) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}?restype=directory"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span>req = Request::head(<span class="kw-2">&</span>url);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_rename(
+ <span class="kw-2">&</span><span class="self">self</span>,
+ path: <span class="kw-2">&</span>str,
+ new_path: <span class="kw-2">&</span>str,
+ ) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>new_p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, new_path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>url = <span class="kw">if </span>path.ends_with(<span class="string">'/'</span>) {
+ <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}?restype=directory&comp=rename"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ )
+ } <span class="kw">else </span>{
+ <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}?comp=rename"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ )
+ };
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = Request::put(<span class="kw-2">&</span>url);
+
+ req = req.header(CONTENT_LENGTH, <span class="number">0</span>);
+
+ req = req.header(X_MS_RENAME_SOURCE, percent_encode_path(<span class="kw-2">&</span>new_p));
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_create_dir(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}?restype=directory"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = Request::put(<span class="kw-2">&</span>url);
+
+ req = req.header(CONTENT_LENGTH, <span class="number">0</span>);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_delete_file(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span>req = Request::delete(<span class="kw-2">&</span>url);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_delete_dir(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}?restype=directory"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p)
+ );
+
+ <span class="kw">let </span>req = Request::delete(<span class="kw-2">&</span>url);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>azfile_list(
+ <span class="kw-2">&</span><span class="self">self</span>,
+ path: <span class="kw-2">&</span>str,
+ limit: <span class="kw-2">&</span><span class="prelude-ty">Option</span><usize>,
+ continuation: <span class="kw-2">&</span>String,
+ ) -> <span class="prelude-ty">Result</span><Response<IncomingAsyncBody>> {
+ <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&</span><span class="self">self</span>.root, path)
+ .trim_start_matches(<span class="string">'/'</span>)
+ .to_string();
+
+ <span class="kw">let </span><span class="kw-2">mut </span>url = <span class="macro">format!</span>(
+ <span class="string">"{}/{}/{}?restype=directory&comp=list&include=Timestamps,ETag"</span>,
+ <span class="self">self</span>.endpoint,
+ <span class="self">self</span>.share_name,
+ percent_encode_path(<span class="kw-2">&</span>p),
+ );
+
+ <span class="kw">if </span>!continuation.is_empty() {
+ <span class="macro">write!</span>(url, <span class="string">"&marker={}"</span>, <span class="kw-2">&</span>continuation).expect(<span class="string">"write into string must succeed"</span>);
+ }
+
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(limit) = limit {
+ <span class="macro">write!</span>(url, <span class="string">"&maxresults={}"</span>, limit).expect(<span class="string">"write into string must succeed"</span>);
+ }
+
+ <span class="kw">let </span>req = Request::get(<span class="kw-2">&</span>url);
+
+ <span class="kw">let </span><span class="kw-2">mut </span>req = req
+ .body(AsyncBody::Empty)
+ .map_err(new_request_build_error)<span class="question-mark">?</span>;
+ <span class="self">self</span>.sign(<span class="kw-2">&mut </span>req).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="self">self</span>.send(req).<span class="kw">await
+ </span>}
+
+ <span class="kw">pub async fn </span>ensure_parent_dir_exists(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str) -> <span class="prelude-ty">Result</span><()> {
+ <span class="kw">let </span><span class="kw-2">mut </span>dirs = VecDeque::default();
+ <span class="comment">// azure file service does not support recursive directory creation
+ </span><span class="kw">let </span><span class="kw-2">mut </span>p = path;
+ <span class="kw">while </span>p != <span class="string">"/" </span>{
+ p = get_parent(p);
+ dirs.push_front(p);
+ }
+ <span class="kw">for </span>dir <span class="kw">in </span>dirs {
+ <span class="kw">let </span>resp = <span class="self">self</span>.azfile_create_dir(dir).<span class="kw">await</span><span class="question-mark">?</span>;
+
+ <span class="kw">if </span>resp.status() != StatusCode::CREATED {
+ <span class="kw">if </span>resp
+ .headers()
+ .get(<span class="string">"x-ms-error-code"</span>)
+ .map(|value| value.to_str().unwrap_or(<span class="string">""</span>))
+ .unwrap_or_else(|| <span class="string">""</span>)
+ == <span class="string">"ResourceAlreadyExists"
+ </span>{
+ <span class="kw">continue</span>;
+ }
+ <span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(
+ ErrorKind::Unexpected,
+ <span class="macro">format!</span>(<span class="string">"failed to create directory: {}"</span>, dir).as_str(),
+ ));
+ }
+ }
+
+ <span class="prelude-val">Ok</span>(())
+ }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/azdls/error.rs.html b/docs/rust/src/opendal/services/azfile/error.rs.html
similarity index 66%
copy from docs/rust/src/opendal/services/azdls/error.rs.html
copy to docs/rust/src/opendal/services/azfile/error.rs.html
index 75a9d7eb9..79123426e 100644
--- a/docs/rust/src/opendal/services/azdls/error.rs.html
+++ b/docs/rust/src/opendal/services/azfile/error.rs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/services/azdls/error.rs`."><title>error.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossor [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/services/azfile/error.rs`."><title>error.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crosso [...]
<a href="#2" id="2">2</a>
<a href="#3" id="3">3</a>
<a href="#4" id="4">4</a>
@@ -105,6 +105,9 @@
<a href="#105" id="105">105</a>
<a href="#106" id="106">106</a>
<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -135,10 +138,10 @@
<span class="kw">use </span><span class="kw">crate</span>::ErrorKind;
<span class="kw">use </span><span class="kw">crate</span>::Result;
-<span class="doccomment">/// AzdlsError is the error returned by azure dfs service.
+<span class="doccomment">/// AzfileError is the error returned by azure file service.
</span><span class="attr">#[derive(Default, Deserialize)]
#[serde(default, rename_all = <span class="string">"PascalCase"</span>)]
-</span><span class="kw">struct </span>AzdlsError {
+</span><span class="kw">struct </span>AzfileError {
code: String,
message: String,
query_parameter_name: String,
@@ -146,9 +149,9 @@
reason: String,
}
-<span class="kw">impl </span>Debug <span class="kw">for </span>AzdlsError {
+<span class="kw">impl </span>Debug <span class="kw">for </span>AzfileError {
<span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>std::fmt::Formatter<<span class="lifetime">'_</span>>) -> std::fmt::Result {
- <span class="kw">let </span><span class="kw-2">mut </span>de = f.debug_struct(<span class="string">"AzdlsError"</span>);
+ <span class="kw">let </span><span class="kw-2">mut </span>de = f.debug_struct(<span class="string">"AzfileError"</span>);
de.field(<span class="string">"code"</span>, <span class="kw-2">&</span><span class="self">self</span>.code);
<span class="comment">// replace `\n` to ` ` for better reading.
</span>de.field(<span class="string">"message"</span>, <span class="kw-2">&</span><span class="self">self</span>.message.replace(<span class="string">'\n'</span>, <span class="string">" "</span>));
@@ -175,7 +178,9 @@
<span class="kw">let </span>(kind, retryable) = <span class="kw">match </span>parts.status {
StatusCode::NOT_FOUND => (ErrorKind::NotFound, <span class="bool-val">false</span>),
StatusCode::FORBIDDEN => (ErrorKind::PermissionDenied, <span class="bool-val">false</span>),
- StatusCode::PRECONDITION_FAILED => (ErrorKind::ConditionNotMatch, <span class="bool-val">false</span>),
+ StatusCode::PRECONDITION_FAILED | StatusCode::NOT_MODIFIED => {
+ (ErrorKind::ConditionNotMatch, <span class="bool-val">false</span>)
+ }
StatusCode::INTERNAL_SERVER_ERROR
| StatusCode::BAD_GATEWAY
| StatusCode::SERVICE_UNAVAILABLE
@@ -183,17 +188,18 @@
<span class="kw">_ </span>=> (ErrorKind::Unexpected, <span class="bool-val">false</span>),
};
- <span class="kw">let </span><span class="kw-2">mut </span>message = <span class="kw">match </span>de::from_reader::<<span class="kw">_</span>, AzdlsError>(bs.clone().reader()) {
- <span class="prelude-val">Ok</span>(azblob_err) => <span class="macro">format!</span>(<span class="string">"{azblob_err:?}"</span>),
+ <span class="kw">let </span><span class="kw-2">mut </span>message = <span class="kw">match </span>de::from_reader::<<span class="kw">_</span>, AzfileError>(bs.clone().reader()) {
+ <span class="prelude-val">Ok</span>(azfile_err) => <span class="macro">format!</span>(<span class="string">"{azfile_err:?}"</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) => String::from_utf8_lossy(<span class="kw-2">&</span>bs).into_owned(),
};
+
<span class="comment">// If there is no body here, fill with error code.
</span><span class="kw">if </span>message.is_empty() {
<span class="kw">if let </span><span class="prelude-val">Some</span>(v) = parts.headers.get(<span class="string">"x-ms-error-code"</span>) {
<span class="kw">if let </span><span class="prelude-val">Ok</span>(code) = v.to_str() {
message = <span class="macro">format!</span>(
<span class="string">"{:?}"</span>,
- AzdlsError {
+ AzfileError {
code: code.to_string(),
..Default::default()
}
diff --git a/docs/rust/src/opendal/services/azfile/mod.rs.html b/docs/rust/src/opendal/services/azfile/mod.rs.html
new file mode 100644
index 000000000..61737ca84
--- /dev/null
+++ b/docs/rust/src/opendal/services/azfile/mod.rs.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/services/azfile/mod.rs`."><title>mod.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">pub use </span>backend::AzfileBuilder <span class="kw">as </span>Azfile;
+
+<span class="kw">mod </span>backend;
+<span class="kw">mod </span>core;
+<span class="kw">mod </span>error;
+<span class="kw">mod </span>pager;
+<span class="kw">mod </span>writer;
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/azfile/pager.rs.html b/docs/rust/src/opendal/services/azfile/pager.rs.html
new file mode 100644
index 000000000..09530e5db
--- /dev/null
+++ b/docs/rust/src/opendal/services/azfile/pager.rs.html
@@ -0,0 +1,463 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/services/azfile/pager.rs`."><title>pager.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crosso [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</a>
+<a href="#205" id="205">205</a>
+<a href="#206" id="206">206</a>
+<a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<a href="#211" id="211">211</a>
+<a href="#212" id="212">212</a>
+<a href="#213" id="213">213</a>
+<a href="#214" id="214">214</a>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</a>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>async_trait::async_trait;
+<span class="kw">use </span>http::StatusCode;
+<span class="kw">use </span>quick_xml::de::from_str;
+<span class="kw">use </span>serde::Deserialize;
+
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">use </span><span class="kw">super</span>::core::AzfileCore;
+<span class="kw">use </span><span class="kw">super</span>::error::parse_error;
+
+<span class="kw">pub struct </span>AzfilePager {
+ core: Arc<AzfileCore>,
+ path: String,
+ limit: <span class="prelude-ty">Option</span><usize>,
+ done: bool,
+ continuation: String,
+}
+
+<span class="kw">impl </span>AzfilePager {
+ <span class="kw">pub fn </span>new(core: Arc<AzfileCore>, path: String, limit: <span class="prelude-ty">Option</span><usize>) -> <span class="self">Self </span>{
+ <span class="self">Self </span>{
+ core,
+ path,
+ limit,
+ done: <span class="bool-val">false</span>,
+ continuation: <span class="string">""</span>.to_string(),
+ }
+ }
+}
+
+<span class="attr">#[async_trait]
+</span><span class="kw">impl </span>oio::Page <span class="kw">for </span>AzfilePager {
+ <span class="kw">async fn </span>next(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><<span class="prelude-ty">Option</span><Vec<oio::Entry>>> {
+ <span class="kw">if </span><span class="self">self</span>.done {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+ }
+
+ <span class="kw">let </span>resp = <span class="self">self
+ </span>.core
+ .azfile_list(<span class="kw-2">&</span><span class="self">self</span>.path, <span class="kw-2">&</span><span class="self">self</span>.limit, <span class="kw-2">&</span><span class="self">self</span>.continuation)
+ .<span class="kw">await</span><span class="question-mark">?</span>;
+
+ <span class="kw">let </span>status = resp.status();
+
+ <span class="kw">if </span>status != StatusCode::OK {
+ <span class="kw">if </span>status == StatusCode::NOT_FOUND {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>);
+ }
+ <span class="kw">return </span><span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>);
+ }
+
+ <span class="kw">let </span>bs = resp.into_body().bytes().<span class="kw">await</span><span class="question-mark">?</span>;
+
+ <span class="kw">let </span>text = String::from_utf8(bs.to_vec()).expect(<span class="string">"response convert to string must success"</span>);
+
+ <span class="kw">let </span>results: EnumerationResults = from_str(<span class="kw-2">&</span>text).map_err(|e| {
+ Error::new(ErrorKind::Unexpected, <span class="string">"deserialize xml from response"</span>).set_source(e)
+ })<span class="question-mark">?</span>;
+
+ <span class="kw">let </span><span class="kw-2">mut </span>entries = Vec::new();
+
+ <span class="kw">for </span>file <span class="kw">in </span>results.entries.file {
+ <span class="kw">let </span>meta = Metadata::new(EntryMode::FILE)
+ .with_etag(file.properties.etag)
+ .with_content_length(file.properties.content_length.unwrap_or(<span class="number">0</span>))
+ .with_last_modified(parse_datetime_from_rfc2822(<span class="kw-2">&</span>file.properties.last_modified)<span class="question-mark">?</span>);
+ <span class="kw">let </span>path = <span class="self">self</span>.path.clone().trim_start_matches(<span class="string">'/'</span>).to_string() + <span class="kw-2">&</span>file.name;
+ entries.push(oio::Entry::new(<span class="kw-2">&</span>path, meta));
+ }
+
+ <span class="kw">for </span>dir <span class="kw">in </span>results.entries.directory {
+ <span class="kw">let </span>meta = Metadata::new(EntryMode::DIR)
+ .with_etag(dir.properties.etag)
+ .with_last_modified(parse_datetime_from_rfc2822(<span class="kw-2">&</span>dir.properties.last_modified)<span class="question-mark">?</span>);
+ <span class="kw">let </span>path = <span class="self">self</span>.path.clone().trim_start_matches(<span class="string">'/'</span>).to_string() + <span class="kw-2">&</span>dir.name + <span class="string">"/"</span>;
+ entries.push(oio::Entry::new(<span class="kw-2">&</span>path, meta));
+ }
+
+ <span class="kw">if </span>results.next_marker.is_empty() {
+ <span class="self">self</span>.done = <span class="bool-val">true</span>;
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.continuation = results.next_marker;
+ }
+
+ <span class="kw">if </span>entries.is_empty() {
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>)
+ } <span class="kw">else </span>{
+ <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(entries))
+ }
+ }
+}
+
+<span class="attr">#[derive(Debug, Deserialize, PartialEq)]
+#[serde(rename_all = <span class="string">"PascalCase"</span>)]
+</span><span class="kw">struct </span>EnumerationResults {
+ marker: <span class="prelude-ty">Option</span><String>,
+ prefix: <span class="prelude-ty">Option</span><String>,
+ max_results: <span class="prelude-ty">Option</span><u32>,
+ directory_id: <span class="prelude-ty">Option</span><String>,
+ entries: Entries,
+ <span class="attr">#[serde(default)]
+ </span>next_marker: String,
+}
+
+<span class="attr">#[derive(Debug, Deserialize, PartialEq)]
+#[serde(rename_all = <span class="string">"PascalCase"</span>)]
+</span><span class="kw">struct </span>Entries {
+ <span class="attr">#[serde(default)]
+ </span>file: Vec<File>,
+ <span class="attr">#[serde(default)]
+ </span>directory: Vec<Directory>,
+}
+
+<span class="attr">#[derive(Debug, Deserialize, PartialEq)]
+#[serde(rename_all = <span class="string">"PascalCase"</span>)]
+</span><span class="kw">struct </span>File {
+ <span class="attr">#[serde(rename = <span class="string">"FileId"</span>)]
+ </span>file_id: String,
+ name: String,
+ properties: Properties,
+}
+
+<span class="attr">#[derive(Debug, Deserialize, PartialEq)]
+#[serde(rename_all = <span class="string">"PascalCase"</span>)]
+</span><span class="kw">struct </span>Directory {
+ <span class="attr">#[serde(rename = <span class="string">"FileId"</span>)]
+ </span>file_id: String,
+ name: String,
+ properties: Properties,
+}
+
+<span class="attr">#[derive(Debug, Deserialize, PartialEq)]
+#[serde(rename_all = <span class="string">"PascalCase"</span>)]
+</span><span class="kw">struct </span>Properties {
+ <span class="attr">#[serde(rename = <span class="string">"Content-Length"</span>)]
+ </span>content_length: <span class="prelude-ty">Option</span><u64>,
+ <span class="attr">#[serde(rename = <span class="string">"CreationTime"</span>)]
+ </span>creation_time: String,
+ <span class="attr">#[serde(rename = <span class="string">"LastAccessTime"</span>)]
+ </span>last_access_time: String,
+ <span class="attr">#[serde(rename = <span class="string">"LastWriteTime"</span>)]
+ </span>last_write_time: String,
+ <span class="attr">#[serde(rename = <span class="string">"ChangeTime"</span>)]
+ </span>change_time: String,
+ <span class="attr">#[serde(rename = <span class="string">"Last-Modified"</span>)]
+ </span>last_modified: String,
+ <span class="attr">#[serde(rename = <span class="string">"Etag"</span>)]
+ </span>etag: String,
+}
+
+<span class="attr">#[cfg(test)]
+</span><span class="kw">mod </span>tests {
+ <span class="kw">use super</span>::<span class="kw-2">*</span>;
+
+ <span class="attr">#[test]
+ </span><span class="kw">fn </span>test_parse_list_result() {
+ <span class="kw">let </span>xml = <span class="string">r#"
+<?xml version="1.0" encoding="utf-8"?>
+<EnumerationResults ServiceEndpoint="https://myaccount.file.core.windows.net/" ShareName="myshare" ShareSnapshot="date-time" DirectoryPath="directory-path">
+ <Marker>string-value</Marker>
+ <Prefix>string-value</Prefix>
+ <MaxResults>100</MaxResults>
+ <DirectoryId>directory-id</DirectoryId>
+ <Entries>
+ <File>
+ <Name>Rust By Example.pdf</Name>
+ <FileId>13835093239654252544</FileId>
+ <Properties>
+ <Content-Length>5832374</Content-Length>
+ <CreationTime>2023-09-25T12:43:05.8483527Z</CreationTime>
+ <LastAccessTime>2023-09-25T12:43:05.8483527Z</LastAccessTime>
+ <LastWriteTime>2023-09-25T12:43:08.6337775Z</LastWriteTime>
+ <ChangeTime>2023-09-25T12:43:08.6337775Z</ChangeTime>
+ <Last-Modified>Mon, 25 Sep 2023 12:43:08 GMT</Last-Modified>
+ <Etag>\"0x8DBBDC4F8AC4AEF\"</Etag>
+ </Properties>
+ </File>
+ <Directory>
+ <Name>test_list_rich_dir</Name>
+ <FileId>12105702186650959872</FileId>
+ <Properties>
+ <CreationTime>2023-10-15T12:03:40.7194774Z</CreationTime>
+ <LastAccessTime>2023-10-15T12:03:40.7194774Z</LastAccessTime>
+ <LastWriteTime>2023-10-15T12:03:40.7194774Z</LastWriteTime>
+ <ChangeTime>2023-10-15T12:03:40.7194774Z</ChangeTime>
+ <Last-Modified>Sun, 15 Oct 2023 12:03:40 GMT</Last-Modified>
+ <Etag>\"0x8DBCD76C58C3E96\"</Etag>
+ </Properties>
+ </Directory>
+ </Entries>
+ <NextMarker />
+</EnumerationResults>
+ "#</span>;
+
+ <span class="kw">let </span>results: EnumerationResults = from_str(xml).unwrap();
+
+ <span class="macro">assert_eq!</span>(results.entries.file[<span class="number">0</span>].name, <span class="string">"Rust By Example.pdf"</span>);
+
+ <span class="macro">assert_eq!</span>(
+ results.entries.file[<span class="number">0</span>].properties.etag,
+ <span class="string">"\\\"0x8DBBDC4F8AC4AEF\\\""
+ </span>);
+
+ <span class="macro">assert_eq!</span>(results.entries.directory[<span class="number">0</span>].name, <span class="string">"test_list_rich_dir"</span>);
+
+ <span class="macro">assert_eq!</span>(
+ results.entries.directory[<span class="number">0</span>].properties.etag,
+ <span class="string">"\\\"0x8DBCD76C58C3E96\\\""
+ </span>);
+ }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/azfile/writer.rs.html b/docs/rust/src/opendal/services/azfile/writer.rs.html
new file mode 100644
index 000000000..892482d20
--- /dev/null
+++ b/docs/rust/src/opendal/services/azfile/writer.rs.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/services/azfile/writer.rs`."><title>writer.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cros [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>async_trait::async_trait;
+<span class="kw">use </span>http::StatusCode;
+
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">use </span><span class="kw">super</span>::core::AzfileCore;
+<span class="kw">use </span><span class="kw">super</span>::error::parse_error;
+
+<span class="kw">pub type </span>AzfileWriters =
+ oio::TwoWaysWriter<oio::OneShotWriter<AzfileWriter>, oio::AppendObjectWriter<AzfileWriter>>;
+
+<span class="kw">pub struct </span>AzfileWriter {
+ core: Arc<AzfileCore>,
+ op: OpWrite,
+ path: String,
+}
+
+<span class="kw">impl </span>AzfileWriter {
+ <span class="kw">pub fn </span>new(core: Arc<AzfileCore>, op: OpWrite, path: String) -> <span class="self">Self </span>{
+ AzfileWriter { core, op, path }
+ }
+}
+
+<span class="attr">#[async_trait]
+</span><span class="kw">impl </span>oio::OneShotWrite <span class="kw">for </span>AzfileWriter {
+ <span class="kw">async fn </span>write_once(<span class="kw-2">&</span><span class="self">self</span>, bs: <span class="kw-2">&</span><span class="kw">dyn </span>oio::WriteBuf) -> <span class="prelude-ty">Result</span><()> {
+ <span class="kw">let </span>bs = oio::ChunkedBytes::from_vec(bs.vectored_bytes(bs.remaining()));
+
+ <span class="kw">let </span>resp = <span class="self">self
+ </span>.core
+ .azfile_create_file(<span class="kw-2">&</span><span class="self">self</span>.path, bs.len(), <span class="kw-2">&</span><span class="self">self</span>.op)
+ .<span class="kw">await</span><span class="question-mark">?</span>;
+
+ <span class="kw">let </span>status = resp.status();
+ <span class="kw">match </span>status {
+ StatusCode::OK | StatusCode::CREATED => {
+ resp.into_body().consume().<span class="kw">await</span><span class="question-mark">?</span>;
+ }
+ <span class="kw">_ </span>=> {
+ <span class="kw">return </span><span class="prelude-val">Err</span>(parse_error(resp)
+ .<span class="kw">await</span><span class="question-mark">?
+ </span>.with_operation(<span class="string">"Backend::azfile_create_file"</span>));
+ }
+ }
+
+ <span class="kw">let </span>resp = <span class="self">self
+ </span>.core
+ .azfile_update(<span class="kw-2">&</span><span class="self">self</span>.path, bs.len() <span class="kw">as </span>u64, <span class="number">0</span>, AsyncBody::ChunkedBytes(bs))
+ .<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="kw">let </span>status = resp.status();
+ <span class="kw">return match </span>status {
+ StatusCode::OK | StatusCode::CREATED => {
+ resp.into_body().consume().<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(())
+ }
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp)
+ .<span class="kw">await</span><span class="question-mark">?
+ </span>.with_operation(<span class="string">"Backend::azfile_update"</span>)),
+ };
+ }
+}
+
+<span class="attr">#[async_trait]
+</span><span class="kw">impl </span>oio::AppendObjectWrite <span class="kw">for </span>AzfileWriter {
+ <span class="kw">async fn </span>offset(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><u64> {
+ <span class="kw">let </span>resp = <span class="self">self</span>.core.azfile_get_file_properties(<span class="kw-2">&</span><span class="self">self</span>.path).<span class="kw">await</span><span class="question-mark">?</span>;
+
+ <span class="kw">let </span>status = resp.status();
+
+ <span class="kw">match </span>status {
+ StatusCode::OK => <span class="prelude-val">Ok</span>(parse_content_length(resp.headers())<span class="question-mark">?</span>.unwrap_or_default()),
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp).<span class="kw">await</span><span class="question-mark">?</span>),
+ }
+ }
+
+ <span class="kw">async fn </span>append(<span class="kw-2">&</span><span class="self">self</span>, offset: u64, size: u64, body: AsyncBody) -> <span class="prelude-ty">Result</span><()> {
+ <span class="kw">let </span>resp = <span class="self">self
+ </span>.core
+ .azfile_update(<span class="kw-2">&</span><span class="self">self</span>.path, size, offset, body)
+ .<span class="kw">await</span><span class="question-mark">?</span>;
+
+ <span class="kw">let </span>status = resp.status();
+ <span class="kw">match </span>status {
+ StatusCode::OK | StatusCode::CREATED => {
+ resp.into_body().consume().<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(())
+ }
+ <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(parse_error(resp)
+ .<span class="kw">await</span><span class="question-mark">?
+ </span>.with_operation(<span class="string">"Backend::azfile_update"</span>)),
+ }
+ }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/mod.rs.html b/docs/rust/src/opendal/services/mod.rs.html
index fada1346e..75e7c9511 100644
--- a/docs/rust/src/opendal/services/mod.rs.html
+++ b/docs/rust/src/opendal/services/mod.rs.html
@@ -233,6 +233,11 @@
<a href="#233" id="233">233</a>
<a href="#234" id="234">234</a>
<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -468,4 +473,9 @@
</span><span class="kw">mod </span>d1;
<span class="attr">#[cfg(feature = <span class="string">"services-d1"</span>)]
</span><span class="kw">pub use </span><span class="self">self</span>::d1::D1;
+
+<span class="attr">#[cfg(feature = <span class="string">"services-azfile"</span>)]
+</span><span class="kw">mod </span>azfile;
+<span class="attr">#[cfg(feature = <span class="string">"services-azfile"</span>)]
+</span><span class="kw">pub use </span><span class="self">self</span>::azfile::Azfile;
</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/types/scheme.rs.html b/docs/rust/src/opendal/types/scheme.rs.html
index a68e8f750..0cc72d2da 100644
--- a/docs/rust/src/opendal/types/scheme.rs.html
+++ b/docs/rust/src/opendal/types/scheme.rs.html
@@ -259,6 +259,10 @@
<a href="#259" id="259">259</a>
<a href="#260" id="260">260</a>
<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -379,6 +383,8 @@
</span>Redb,
<span class="doccomment">/// [tikv][crate::services::tikv]: Tikv Services
</span>Tikv,
+ <span class="doccomment">/// [azfile][crate::services::azfile]: Azfile Services
+ </span>Azfile,
<span class="doccomment">/// Custom that allow users to implement services outside of OpenDAL.
///
/// # NOTE
@@ -459,6 +465,7 @@
<span class="string">"webdav" </span>=> <span class="prelude-val">Ok</span>(Scheme::Webdav),
<span class="string">"webhdfs" </span>=> <span class="prelude-val">Ok</span>(Scheme::Webhdfs),
<span class="string">"tikv" </span>=> <span class="prelude-val">Ok</span>(Scheme::Tikv),
+ <span class="string">"azfile" </span>=> <span class="prelude-val">Ok</span>(Scheme::Azfile),
<span class="kw">_ </span>=> <span class="prelude-val">Ok</span>(Scheme::Custom(Box::leak(s.into_boxed_str()))),
}
}
@@ -509,6 +516,7 @@
Scheme::Webhdfs => <span class="string">"webhdfs"</span>,
Scheme::Redb => <span class="string">"redb"</span>,
Scheme::Tikv => <span class="string">"tikv"</span>,
+ Scheme::Azfile => <span class="string">"azfile"</span>,
Scheme::Sqlite => <span class="string">"sqlite"</span>,
Scheme::Custom(v) => v,
}
diff --git a/docs/services/atomicserver/index.html b/docs/services/atomicserver/index.html
index 63a49bb42..5130d1467 100644
--- a/docs/services/atomicserver/index.html
+++ b/docs/services/atomicserver/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">AtomicServer | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/atomicserver"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="cu [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/azblob/index.html b/docs/services/azblob/index.html
index fddc5b917..58d3f3a18 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/azdls/index.html b/docs/services/azdls/index.html
index 4304fe876..d85215e83 100644
--- a/docs/services/azdls/index.html
+++ b/docs/services/azdls/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Azdls | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/azdls"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta d [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/cacache/index.html b/docs/services/cacache/index.html
index 52989780f..ce3822890 100644
--- a/docs/services/cacache/index.html
+++ b/docs/services/cacache/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Cacache | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/cacache"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><me [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 d76c1f5bd..b773f5a7b 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/d1/index.html b/docs/services/d1/index.html
index f37354bfc..a479177f9 100644
--- a/docs/services/d1/index.html
+++ b/docs/services/d1/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">D1 | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/d1"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 a38f39051..1b85955b5 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 a4552f15f..9edaf40e0 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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'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>]<!-- -->'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.c025a2a9.js"></script>
+for more information.</p><p>You can refer to <!-- -->[<code>DropboxBuilder</code>]<!-- -->'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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 6ae5b510e..158e3a71f 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 ec85a723b..1301babf2 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 deed414ba..f195d095f 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 9186b7208..0c017ffce 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 04a678c6d..de5586be1 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/gdrive/index.html b/docs/services/gdrive/index.html
index 81ce0aff5..775b51fd9 100644
--- a/docs/services/gdrive/index.html
+++ b/docs/services/gdrive/index.html
@@ -5,7 +5,7 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Gdrive | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/gdrive"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.js" as="script">
</head>
<body class="navigation-with-keyboard">
@@ -16,8 +16,8 @@ please provide the following fields:</p><ul><li><code>refresh_token</code>: set
You need to get authorization code from user by calling GoogleDrive's authorize url
and exchange it for refresh token.</p><p>Make sure you have enabled Google Drive API in your Google Cloud Console.
And your OAuth scope contains <code>https://www.googleapis.com/auth/drive</code>.</p><p>Please refer to <a href="https://developers.google.com/identity/protocols/oauth2/" target="_blank" rel="noopener noreferrer">GoogleDrive OAuth2 Flow</a>
-for more information.</p><p>You can refer to <!-- -->[<code>GdriveBuilder</code>]<!-- -->'s docs for more information</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Bui [...]
-<script src="/assets/js/runtime~main.c025a2a9.js"></script>
+for more information.</p><p>You can refer to <!-- -->[<code>GdriveBuilder</code>]<!-- -->'s docs for more information</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="via-builder">Via Builder<a href="#via-builder" class="hash-link" aria-label="Direct link to Via Builder" title="Direct link to Via Bui [...]
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/ghac/index.html b/docs/services/ghac/index.html
index ee1a93f54..48cff36a4 100644
--- a/docs/services/ghac/index.html
+++ b/docs/services/ghac/index.html
@@ -5,7 +5,7 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">GHAC | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/ghac"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta dat [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.js" as="script">
</head>
<body class="navigation-with-keyboard">
@@ -13,8 +13,8 @@
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
configure the URL and credentials, or that the following environment has been setup correctly:</p><ul><li><code>ACTIONS_CACHE_URL</code></li><li><code>ACTIONS_RUNTIME_TOKEN</code></li></ul><p>They can be exposed by following action:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code cla [...]
We provide a <code>enable_create_simulation()</code> to support this operation but may result unexpected side effects.</p><p>Also, <code>ghac</code> is a cache service which means the data store inside could
-be automatically evicted at any time.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><ul><li><code>root</code>: Set the work dir for backend.</li></ul><p>Refer to <!-- -->[<code>GhacBuilder</code>]<!-- -->'s public API docs for more information.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a h [...]
-<script src="/assets/js/runtime~main.c025a2a9.js"></script>
+be automatically evicted at any time.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><ul><li><code>root</code>: Set the work dir for backend.</li></ul><p>Refer to <!-- -->[<code>GhacBuilder</code>]<!-- -->'s public API docs for more information.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a h [...]
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 9b9a36d03..36841e76f 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 dab903870..7f80fadc9 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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>]<!-- -->'s docs for more information</p><h2 class="anchor an [...]
-<script src="/assets/js/runtime~main.c025a2a9.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>]<!-- -->'s docs for more information</p><h2 class="anchor an [...]
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 e0168bd16..61491e0d8 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 e8b724488..a243b4b27 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/libsql/index.html b/docs/services/libsql/index.html
index 6ea8d9c1e..cc0467db6 100644
--- a/docs/services/libsql/index.html
+++ b/docs/services/libsql/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">LibSQL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/libsql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 b0ea45843..6d2fe0209 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 b943342ef..b72c9e4ef 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 6790efa75..56dd90c4e 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/mysql/index.html b/docs/services/mysql/index.html
index a2962291c..4e176f941 100644
--- a/docs/services/mysql/index.html
+++ b/docs/services/mysql/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">MySQL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/mysql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta d [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 e516386cf..65067a3c7 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/onedrive/index.html b/docs/services/onedrive/index.html
index acaa4c99d..50fd28438 100644
--- a/docs/services/onedrive/index.html
+++ b/docs/services/onedrive/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">OneDrive | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/onedrive"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current">< [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 03d897535..1d44a7d35 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/persy/index.html b/docs/services/persy/index.html
index d4bb20b0d..2fdf75917 100644
--- a/docs/services/persy/index.html
+++ b/docs/services/persy/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Persy | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/persy"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta d [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/postgresql/index.html b/docs/services/postgresql/index.html
index 9f919b38f..b9a951a9c 100644
--- a/docs/services/postgresql/index.html
+++ b/docs/services/postgresql/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">PostgreSQL | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="curren [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/redb/index.html b/docs/services/redb/index.html
index 282abce69..17fcc18de 100644
--- a/docs/services/redb/index.html
+++ b/docs/services/redb/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Redb | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/redb"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta dat [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 fdab963d6..393adcb06 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 deb964ea0..ad604391c 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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>]<!-- -->'s docs for mor [...]
-<script src="/assets/js/runtime~main.c025a2a9.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>]<!-- -->'s docs for mor [...]
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 355d18215..0ca3bd298 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 ce9846cf2..316220f70 100644
--- a/docs/services/sftp/index.html
+++ b/docs/services/sftp/index.html
@@ -5,14 +5,14 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">SFTP | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/sftp"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta dat [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="ro [...]
-lots of files, you should pay attention to close the file after using it.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities"></a></h2><p>This service can be used to:</p><ul class="contains-task-list containsTaskList_mC6p"><li class="task-list-item"><input type="checkbox" checked="" disabled=""> <!-- -->stat</li><li class="task-li [...]
-<script src="/assets/js/runtime~main.c025a2a9.js"></script>
+lots of files, you should pay attention to close the file after using it.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="capabilities">Capabilities<a href="#capabilities" class="hash-link" aria-label="Direct link to Capabilities" title="Direct link to Capabilities"></a></h2><p>This service can be used to:</p><ul class="contains-task-list containsTaskList_mC6p"><li class="task-list-item"><input type="checkbox" checked="" disabled=""> <!-- -->stat</li><li class="task-li [...]
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 c63ddc464..be85bcb92 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/sqlite/index.html b/docs/services/sqlite/index.html
index 552208c3f..4b93dcf71 100644
--- a/docs/services/sqlite/index.html
+++ b/docs/services/sqlite/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Sqlite | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/sqlite"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 8f19784dc..927d88fcc 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/tikv/index.html b/docs/services/tikv/index.html
index 155ec7cd8..5efd54659 100644
--- a/docs/services/tikv/index.html
+++ b/docs/services/tikv/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">TiKV | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/tikv"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta dat [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/services/vercel_artifacts/index.html b/docs/services/vercel_artifacts/index.html
index 1ade3a1b9..9cf2c3058 100644
--- a/docs/services/vercel_artifacts/index.html
+++ b/docs/services/vercel_artifacts/index.html
@@ -5,13 +5,13 @@
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Vercel Artifacts | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/vercel_artifacts"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" con [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.51c7cd0e.css">
-<link rel="preload" href="/assets/js/runtime~main.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 c41e3326f..9882caf32 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 2c75c5def..6dbded9d9 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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>]<!-- -->'s docs for more i [...]
-<script src="/assets/js/runtime~main.c025a2a9.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>]<!-- -->'s docs for more i [...]
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.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 0916eeeac..9d6768a03 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.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.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/download/index.html b/download/index.html
index d602570bc..819a417ee 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 8f26e140d..2e6e2cba1 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.c025a2a9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.7228dc69.js" as="script">
<link rel="preload" href="/assets/js/main.81133b52.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.c025a2a9.js"></script>
+<script src="/assets/js/runtime~main.7228dc69.js"></script>
<script src="/assets/js/main.81133b52.js"></script>
</body>
</html>
\ No newline at end of file