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/03/30 12:05:02 UTC

[incubator-opendal] branch gh-pages updated: deploy: db36bfda9f81acaae9feba14fe499c01bed9caba

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 e9e4eb5f deploy: db36bfda9f81acaae9feba14fe499c01bed9caba
e9e4eb5f is described below

commit e9e4eb5fd3468cf24e9775fb1c61da55e6e0cc40
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Thu Mar 30 12:04:56 2023 +0000

    deploy: db36bfda9f81acaae9feba14fe499c01bed9caba
---
 404.html                                           |   4 +-
 .../{1db64337.3bfe8e57.js => 1db64337.ac2ed4d6.js} |   2 +-
 ...e~main.0ae3d66f.js => runtime~main.a43d7081.js} |   2 +-
 blog/archive/index.html                            |   4 +-
 blog/index.html                                    |   4 +-
 blog/opendal-entered-apache-incubator/index.html   |   4 +-
 blog/tags/announcement/index.html                  |   4 +-
 blog/tags/index.html                               |   4 +-
 docs/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                  |  48 ++++-----
 docs/nodejs/interfaces/PresignedRequest.html       |   8 +-
 docs/overview/index.html                           |   6 +-
 docs/python/opendal.html                           |  50 ++++-----
 docs/python/search.js                              |   2 +-
 docs/rust/opendal/ops/index.html                   |   2 +-
 docs/rust/opendal/ops/struct.OpRead.html           |  14 +--
 docs/rust/opendal/ops/struct.OpStat.html           |   6 +-
 docs/rust/opendal/ops/struct.OpWrite.html          |  16 +--
 docs/rust/opendal/services/struct.S3.html          |  48 ++++-----
 docs/rust/opendal/trait.Builder.html               |   2 +-
 docs/rust/search-index.js                          |   2 +-
 docs/rust/src/opendal/services/s3/backend.rs.html  | 114 ++++++++++++++++++---
 docs/rust/src/opendal/services/s3/writer.rs.html   |   2 +
 docs/rust/src/opendal/types/ops.rs.html            |  52 +++++++++-
 index.html                                         |   4 +-
 28 files changed, 287 insertions(+), 147 deletions(-)

diff --git a/404.html b/404.html
index 4ba04778..32df6c7c 100644
--- a/404.html
+++ b/404.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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="roun [...]
-<script src="/assets/js/runtime~main.0ae3d66f.js"></script>
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/1db64337.3bfe8e57.js b/assets/js/1db64337.ac2ed4d6.js
similarity index 54%
rename from assets/js/1db64337.3bfe8e57.js
rename to assets/js/1db64337.ac2ed4d6.js
index 169b1212..b4d2ddba 100644
--- a/assets/js/1db64337.3bfe8e57.js
+++ b/assets/js/1db64337.ac2ed4d6.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{6777:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>n,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>d,toc:()=>v});var o=i(7462),r=(i(7294),i(3905));const a={sidebar_position:1,title:"Overview"},s=void 0,d={unversionedId:"overview",id:"overview",title:"Overview",description:"",source:"@site/docs/overview.md",sourceDirName:".",slug:"/overview",permalink:"/docs/overview",draft:!1,editUrl: [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{6777:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>n,contentTitle:()=>s,default:()=>l,frontMatter:()=>a,metadata:()=>d,toc:()=>v});var o=i(7462),r=(i(7294),i(3905));const a={sidebar_position:1,title:"Overview"},s=void 0,d={unversionedId:"overview",id:"overview",title:"Overview",description:"",source:"@site/docs/overview.md",sourceDirName:".",slug:"/overview",permalink:"/docs/overview",draft:!1,editUrl: [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.0ae3d66f.js b/assets/js/runtime~main.a43d7081.js
similarity index 97%
rename from assets/js/runtime~main.0ae3d66f.js
rename to assets/js/runtime~main.a43d7081.js
index 770236ad..c921c8c3 100644
--- a/assets/js/runtime~main.0ae3d66f.js
+++ b/assets/js/runtime~main.a43d7081.js
@@ -1 +1 @@
-(()=>{"use strict";var e,t,r,o,a,n={},f={};function c(e){var t=f[e];if(void 0!==t)return t.exports;var r=f[e]={exports:{}};return n[e].call(r.exports,r,r.exports,c),r.exports}c.m=n,e=[],c.O=(t,r,o,a)=>{if(!r){var n=1/0;for(b=0;b<e.length;b++){r=e[b][0],o=e[b][1],a=e[b][2];for(var f=!0,i=0;i<r.length;i++)(!1&a||n>=a)&&Object.keys(c.O).every((e=>c.O[e](r[i])))?r.splice(i--,1):(f=!1,a<n&&(n=a));if(f){e.splice(b--,1);var d=o();void 0!==d&&(t=d)}}return t}a=a||0;for(var b=e.length;b>0&&e[b-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,t,r,o,a,n={},f={};function c(e){var t=f[e];if(void 0!==t)return t.exports;var r=f[e]={exports:{}};return n[e].call(r.exports,r,r.exports,c),r.exports}c.m=n,e=[],c.O=(t,r,o,a)=>{if(!r){var n=1/0;for(b=0;b<e.length;b++){r=e[b][0],o=e[b][1],a=e[b][2];for(var f=!0,i=0;i<r.length;i++)(!1&a||n>=a)&&Object.keys(c.O).every((e=>c.O[e](r[i])))?r.splice(i--,1):(f=!1,a<n&&(n=a));if(f){e.splice(b--,1);var d=o();void 0!==d&&(t=d)}}return t}a=a||0;for(var b=e.length;b>0&&e[b-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 8f80db73..036ed748 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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="roun [...]
-<script src="/assets/js/runtime~main.0ae3d66f.js"></script>
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index bf47e626..bea1d698 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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="roun [...]
-<script src="/assets/js/runtime~main.0ae3d66f.js"></script>
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.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 8738c3e3..4d9fa7fb 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.3.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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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="roun [...]
-<script src="/assets/js/runtime~main.0ae3d66f.js"></script>
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.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 f2095a9b..7c582dcf 100644
--- a/blog/tags/announcement/index.html
+++ b/blog/tags/announcement/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">One post tagged with &quot;announcement&quot; | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/announcement"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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="roun [...]
-<script src="/assets/js/runtime~main.0ae3d66f.js"></script>
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 16c4e127..d553f08b 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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="roun [...]
-<script src="/assets/js/runtime~main.0ae3d66f.js"></script>
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index 8c44d15c..a310c95f 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/8209e68/bindings/nodejs/index.d.ts#L373">index.d.ts:373</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L373">index.d.ts:373</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" data-tsd-kind="Class">Entry</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L374">index.d.ts:374</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L374">index.d.ts:374</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index 43ccef4a..0614f796 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/8209e68/bindings/nodejs/index.d.ts#L340">index.d.ts:340</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L340">index.d.ts:340</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/8209e68/bindings/nodejs/index.d.ts#L342">index.d.ts:342</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L342">index.d.ts:342</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index da9e624e..25e920cb 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/8209e68/bindings/nodejs/index.d.ts#L362">index.d.ts:362</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L362">index.d.ts:362</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">
@@ -61,7 +61,7 @@ thing internally.</p>
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type" data-tsd-kind="Class">Entry</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L371">index.d.ts:371</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L371">index.d.ts:371</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index fdf2048d..bada0c3b 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/8209e68/bindings/nodejs/index.d.ts#L344">index.d.ts:344</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L344">index.d.ts:344</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/8209e68/bindings/nodejs/index.d.ts#L350">index.d.ts:350</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L350">index.d.ts:350</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><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 tsd-kind-accessor tsd-parent-kind-class">
@@ -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/8209e68/bindings/nodejs/index.d.ts#L352">index.d.ts:352</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L352">index.d.ts:352</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><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 tsd-kind-accessor tsd-parent-kind-class">
@@ -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/8209e68/bindings/nodejs/index.d.ts#L354">index.d.ts:354</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L354">index.d.ts:354</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><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 tsd-kind-accessor tsd-parent-kind-class">
@@ -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/8209e68/bindings/nodejs/index.d.ts#L356">index.d.ts:356</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L356">index.d.ts:356</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><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 tsd-kind-accessor tsd-parent-kind-class">
@@ -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/8209e68/bindings/nodejs/index.d.ts#L358">index.d.ts:358</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L358">index.d.ts:358</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><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 tsd-kind-accessor tsd-parent-kind-class">
@@ -113,7 +113,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/8209e68/bindings/nodejs/index.d.ts#L360">index.d.ts:360</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L360">index.d.ts:360</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 tsd-kind-method tsd-parent-kind-class"><a id="isDirectory" class="tsd-anchor"></a>
@@ -125,7 +125,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/8209e68/bindings/nodejs/index.d.ts#L346">index.d.ts:346</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L346">index.d.ts:346</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -135,7 +135,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/8209e68/bindings/nodejs/index.d.ts#L348">index.d.ts:348</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L348">index.d.ts:348</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index bb294e32..6216b63a 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/8209e68/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/db36bfd/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">
@@ -71,7 +71,7 @@
 <h5><code class="tsd-tag ts-flagOptional">Optional</code> options: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="Operator.html" class="tsd-signature-type" data-tsd-kind="Class">Operator</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L34">index.d.ts:34</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L34">index.d.ts:34</a></li></ul></aside></li></ul></section></section>
 <section class="tsd-panel-group tsd-member-group">
 <h2>Methods</h2>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="check" class="tsd-anchor"></a>
@@ -90,7 +90,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L77">index.d.ts:77</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L77">index.d.ts:77</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -111,7 +111,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L104">index.d.ts:104</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L104">index.d.ts:104</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -132,7 +132,7 @@
 <h5>path: <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/8209e68/bindings/nodejs/index.d.ts#L113">index.d.ts:113</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L113">index.d.ts:113</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -158,7 +158,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L211">index.d.ts:211</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L211">index.d.ts:211</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -179,7 +179,7 @@
 <h5>path: <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/8209e68/bindings/nodejs/index.d.ts#L220">index.d.ts:220</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L220">index.d.ts:220</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -200,7 +200,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L86">index.d.ts:86</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L86">index.d.ts:86</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -221,7 +221,7 @@
 <h5>path: <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/8209e68/bindings/nodejs/index.d.ts#L95">index.d.ts:95</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L95">index.d.ts:95</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -244,7 +244,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type" data-tsd-kind="Class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L267">index.d.ts:267</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L267">index.d.ts:267</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -267,7 +267,7 @@
 <h5>path: <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" data-tsd-kind="Class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/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/db36bfd/bindings/nodejs/index.d.ts#L290">index.d.ts:290</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -291,7 +291,7 @@
 <h5>expires: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="../interfaces/PresignedRequest.html" class="tsd-signature-type" data-tsd-kind="Interface">PresignedRequest</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L306">index.d.ts:306</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L306">index.d.ts:306</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -315,7 +315,7 @@
 <h5>expires: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="../interfaces/PresignedRequest.html" class="tsd-signature-type" data-tsd-kind="Interface">PresignedRequest</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L338">index.d.ts:338</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L338">index.d.ts:338</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -339,7 +339,7 @@
 <h5>expires: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="../interfaces/PresignedRequest.html" class="tsd-signature-type" data-tsd-kind="Interface">PresignedRequest</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L322">index.d.ts:322</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L322">index.d.ts:322</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -360,7 +360,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Buffer</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L144">index.d.ts:144</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L144">index.d.ts:144</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -381,7 +381,7 @@
 <h5>path: <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/8209e68/bindings/nodejs/index.d.ts#L153">index.d.ts:153</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L153">index.d.ts:153</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -407,7 +407,7 @@
 <h5>paths: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L232">index.d.ts:232</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L232">index.d.ts:232</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -433,7 +433,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L244">index.d.ts:244</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L244">index.d.ts:244</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -456,7 +456,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type" data-tsd-kind="Class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L176">index.d.ts:176</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L176">index.d.ts:176</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -479,7 +479,7 @@
 <h5>path: <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" data-tsd-kind="Class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/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/db36bfd/bindings/nodejs/index.d.ts#L199">index.d.ts:199</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -510,7 +510,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Metadata.html" class="tsd-signature-type" data-tsd-kind="Class">Metadata</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L54">index.d.ts:54</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L54">index.d.ts:54</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -531,7 +531,7 @@
 <h5>path: <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" data-tsd-kind="Class">Metadata</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L66">index.d.ts:66</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L66">index.d.ts:66</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -554,7 +554,7 @@
 <h5>content: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Buffer</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/8209e68/bindings/nodejs/index.d.ts#L124">index.d.ts:124</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L124">index.d.ts:124</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><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 tsd-kind-method tsd-parent-kind-class">
@@ -577,7 +577,7 @@
 <h5>content: <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/8209e68/bindings/nodejs/index.d.ts#L135">index.d.ts:135</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/db36bfd/bindings/nodejs/index.d.ts#L135">index.d.ts:135</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/interfaces/PresignedRequest.html b/docs/nodejs/interfaces/PresignedRequest.html
index f6fa8298..b87f9145 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/8209e68/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/db36bfd/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/8209e68/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/db36bfd/bindings/nodejs/index.d.ts#L31">index.d.ts:31</a></li></ul></aside></section>
 <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><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">method<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/8209e68/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/db36bfd/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside></section>
 <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><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">url<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/8209e68/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/db36bfd/bindings/nodejs/index.d.ts#L29">index.d.ts:29</a></li></ul></aside></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 4babfff4..856405c0 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Overview | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/overview"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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="roun [...]
-<script src="/assets/js/runtime~main.0ae3d66f.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="roun [...]
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 132dd3d4..96998153 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -156,19 +156,19 @@
                     <a class="class" href="#Metadata">Metadata</a>
                             <ul class="memberlist">
                         <li>
-                                <a class="variable" href="#Metadata.content_md5">content_md5</a>
+                                <a class="variable" href="#Metadata.content_type">content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_length">content_length</a>
+                                <a class="variable" href="#Metadata.mode">mode</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_type">content_type</a>
+                                <a class="variable" href="#Metadata.content_md5">content_md5</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.mode">mode</a>
+                                <a class="variable" href="#Metadata.etag">etag</a>
                         </li>
                 </ul>
 
@@ -852,67 +852,67 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <div id="Metadata.content_md5" class="classattr">
+                            <div id="Metadata.content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_md5"></a>
+    <a class="headerlink" href="#Metadata.content_type"></a>
     
-            <div class="docstring"><p>Content MD5 of this entry.</p>
+            <div class="docstring"><p>Content Type of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_length" class="classattr">
+                            <div id="Metadata.mode" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_length</span><span class="annotation">: int</span>
+            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_length"></a>
+    <a class="headerlink" href="#Metadata.mode"></a>
     
-            <div class="docstring"><p>Content length of this entry.</p>
+            <div class="docstring"><p>mode represent this entry's mode.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_type" class="classattr">
+                            <div id="Metadata.content_md5" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_type"></a>
+    <a class="headerlink" href="#Metadata.content_md5"></a>
     
-            <div class="docstring"><p>Content Type of this entry.</p>
+            <div class="docstring"><p>Content MD5 of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.etag" class="classattr">
+                            <div id="Metadata.content_length" class="classattr">
                                 <div class="attr variable">
-            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_length</span><span class="annotation">: int</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.etag"></a>
+    <a class="headerlink" href="#Metadata.content_length"></a>
     
-            <div class="docstring"><p>ETag of this entry.</p>
+            <div class="docstring"><p>Content length of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.mode" class="classattr">
+                            <div id="Metadata.etag" class="classattr">
                                 <div class="attr variable">
-            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
+            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.mode"></a>
+    <a class="headerlink" href="#Metadata.etag"></a>
     
-            <div class="docstring"><p>mode represent this entry's mode.</p>
+            <div class="docstring"><p>ETag of this entry.</p>
 </div>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index 35389919..fe69d7eb 100644
--- a/docs/python/search.js
+++ b/docs/python/search.js
@@ -1,6 +1,6 @@
 window.pdocSearch = (function(){
 /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.wa [...]
-    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\"w\"> </span> [...]
+    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\"w\"> </span> [...]
 
     // mirrored in build-search-index.js (part 1)
     // Also split on html tags. this is a cheap heuristic, but good enough.
diff --git a/docs/rust/opendal/ops/index.html b/docs/rust/opendal/ops/index.html
index a2cdce0d..eb186af0 100644
--- a/docs/rust/opendal/ops/index.html
+++ b/docs/rust/opendal/ops/index.html
@@ -1,3 +1,3 @@
-<!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="Ops provides the operation args struct like [`OpRead`] for user."><meta name="keywords" content="rust, rustlang, rust-lang, ops"><title>opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.tt [...]
+<!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="Ops provides the operation args struct like [`OpRead`] for user."><meta name="keywords" content="rust, rustlang, rust-lang, ops"><title>opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.tt [...]
 <p>By using ops, users can add more context for operation.</p>
 </div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OpBatch.html" title="opendal::ops::OpBatch struct">OpBatch</a></div><div class="item-right docblock-short">Args for <code>batch</code> operation.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OpCreate.html" title="opendal::ops::Op [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/ops/struct.OpRead.html b/docs/rust/opendal/ops/struct.OpRead.html
index a14fcd68..99912682 100644
--- a/docs/rust/opendal/ops/struct.OpRead.html
+++ b/docs/rust/opendal/ops/struct.OpRead.html
@@ -1,10 +1,12 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `read` operation."><meta name="keywords" content="rust, rustlang, rust-lang, OpRead"><title>OpRead in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="prelo [...]
-</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-OpRead" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#236-267">source</a><a href="#impl-OpRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpRead.html" title="st [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_range" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#243-246">source</a><h4 class="code-header">pub fn <a href="#method.with_range" class="fn">with_range</a>(self, range: <a class="struct" href="../raw/struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Creat [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.range" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#249-251">source</a><h4 class="code-header">pub fn <a href="#method.range" class="fn">range</a>(&amp;self) -&gt; <a class="struct" href="../raw/struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a></h4></section></summary><div class="docblock"><p>Get range from OpRead.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_override_content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#254-260">source</a><h4 class="code-header">pub fn <a href="#method.with_override_content_disposition" class="fn">with_override_content_disposition</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;content_disposition: impl <a class="trait" href="https://do [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#264-266">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option" [...]
+<!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="Args for `read` operation."><meta name="keywords" content="rust, rustlang, rust-lang, OpRead"><title>OpRead in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="prelo [...]
+</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-OpRead" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#237-276">source</a><a href="#impl-OpRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpRead.html" title="st [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_range" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#244-247">source</a><h4 class="code-header">pub fn <a href="#method.with_range" class="fn">with_range</a>(self, range: <a class="struct" href="../raw/struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Creat [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.range" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#250-252">source</a><h4 class="code-header">pub fn <a href="#method.range" class="fn">range</a>(&amp;self) -&gt; <a class="struct" href="../raw/struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a></h4></section></summary><div class="docblock"><p>Get range from OpRead.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_override_content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#255-258">source</a><h4 class="code-header">pub fn <a href="#method.with_override_content_disposition" class="fn">with_override_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str< [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#262-264">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option" [...]
 operation.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_override_cache_control" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#267-270">source</a><h4 class="code-header">pub fn <a href="#method.with_override_cache_control" class="fn">with_override_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; Self</h4></se [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#273-275">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&am [...]
 </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-OpRead" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#230">source</a><a href="#impl-Clone-for-OpRead" class="anchor">§</a><h3 class="code-head [...]
 </div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-OpRead" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#276">source</a><a href="#impl-Instrument-for-OpRead" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html" title="trait tracing::instrument::Ins [...]
 <code>Instrumented</code> wrapper. <a href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#121">source</a><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/docs/rust/opendal/ops/struct.OpStat.html b/docs/rust/opendal/ops/struct.OpStat.html
index 9e8d6791..cd9d61bc 100644
--- a/docs/rust/opendal/ops/struct.OpStat.html
+++ b/docs/rust/opendal/ops/struct.OpStat.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="Args for `stat` operation."><meta name="keywords" content="rust, rustlang, rust-lang, OpStat"><title>OpStat in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="prelo [...]
-</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-OpStat" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#273-278">source</a><a href="#impl-OpStat" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpStat.html" title="st [...]
-</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-OpStat" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#270">source</a><a href="#impl-Clone-for-OpStat" class="anchor">§</a><h3 class="code-head [...]
+<!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="Args for `stat` operation."><meta name="keywords" content="rust, rustlang, rust-lang, OpStat"><title>OpStat in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="prelo [...]
+</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-OpStat" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#282-287">source</a><a href="#impl-OpStat" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpStat.html" title="st [...]
+</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-OpStat" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#279">source</a><a href="#impl-Clone-for-OpStat" class="anchor">§</a><h3 class="code-head [...]
 </div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-OpStat" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#276">source</a><a href="#impl-Instrument-for-OpStat" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html" title="trait tracing::instrument::Ins [...]
 <code>Instrumented</code> wrapper. <a href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#121">source</a><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
 <code>Instrumented</code> wrapper. <a href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.in_current_span">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-OpStat" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.68.2/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-OpStat" class="anchor">§</a><h3 class="code- [...]
diff --git a/docs/rust/opendal/ops/struct.OpWrite.html b/docs/rust/opendal/ops/struct.OpWrite.html
index 13bc6e78..86191528 100644
--- a/docs/rust/opendal/ops/struct.OpWrite.html
+++ b/docs/rust/opendal/ops/struct.OpWrite.html
@@ -1,11 +1,13 @@
-<!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="Args for `write` operation."><meta name="keywords" content="rust, rustlang, rust-lang, OpWrite"><title>OpWrite in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="pr [...]
-</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-OpWrite" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#289-332">source</a><a href="#impl-OpWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpWrite.html" title= [...]
+<!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="Args for `write` operation."><meta name="keywords" content="rust, rustlang, rust-lang, OpWrite"><title>OpWrite in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="pr [...]
+</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-OpWrite" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#299-354">source</a><a href="#impl-OpWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpWrite.html" title= [...]
 <p>If input path is not a file path, an error will be returned.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#312-314">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="h [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_type" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#317-320">source</a><h4 class="code-header">pub fn <a href="#method.with_content_type" class="fn">with_content_type</a>(self, content_type: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="doc [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#323-325">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a clas [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#328-331">source</a><h4 class="code-header">pub fn <a href="#method.with_content_disposition" class="fn">with_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; Self</h4></secti [...]
-</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-OpWrite" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#281">source</a><a href="#impl-Clone-for-OpWrite" class="anchor">§</a><h3 class="code-he [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#323-325">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="h [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_type" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#328-331">source</a><h4 class="code-header">pub fn <a href="#method.with_content_type" class="fn">with_content_type</a>(self, content_type: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="doc [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#334-336">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a clas [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_disposition" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#339-342">source</a><h4 class="code-header">pub fn <a href="#method.with_content_disposition" class="fn">with_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; Self</h4></secti [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#345-347">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.68.2/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_cache_control" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#350-353">source</a><h4 class="code-header">pub fn <a href="#method.with_cache_control" class="fn">with_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div 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-OpWrite" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#290">source</a><a href="#impl-Clone-for-OpWrite" class="anchor">§</a><h3 class="code-he [...]
 </div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-OpWrite" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#276">source</a><a href="#impl-Instrument-for-OpWrite" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html" title="trait tracing::instrument::I [...]
 <code>Instrumented</code> wrapper. <a href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#121">source</a><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
 <code>Instrumented</code> wrapper. <a href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.in_current_span">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-OpWrite" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.68.2/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-OpWrite" class="anchor">§</a><h3 class="cod [...]
diff --git a/docs/rust/opendal/services/struct.S3.html b/docs/rust/opendal/services/struct.S3.html
index 4e105ad4..581fc824 100644
--- a/docs/rust/opendal/services/struct.S3.html
+++ b/docs/rust/opendal/services/struct.S3.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="Aws S3 and compatible services (including minio, digitalocean space and so on) support"><meta name="keywords" content="rust, rustlang, rust-lang, S3"><title>S3 in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSe [...]
+<!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="Aws S3 and compatible services (including minio, digitalocean space and so on) support"><meta name="keywords" content="rust, rustlang, rust-lang, S3"><title>S3 in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSe [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -279,10 +279,10 @@ builder.bucket(<span class="string">&quot;&lt;bucket_name&gt;&quot;</span>);</co
 <blockquote>
 <p>Refer to <a href="https://wasabi-support.zendesk.com/hc/en-us/articles/360015106031">What are the service URLs for Wasabi’s different storage regions?</a> for more details.</p>
 </blockquote>
-</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-S3Builder" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#373-810">source</a><a href="#impl-S3Builder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.S3.htm [...]
+</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-S3Builder" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#374-811">source</a><a href="#impl-S3Builder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.S3.htm [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#388-392">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/ [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#405-412">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.6 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#389-393">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#406-413">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.6 [...]
 <p>Endpoint must be full uri, e.g.</p>
 <ul>
 <li>AWS S3: <code>https://s3.amazonaws.com</code> or <code>https://s3.{region}.amazonaws.com</code></li>
@@ -292,31 +292,31 @@ builder.bucket(<span class="string">&quot;&lt;bucket_name&gt;&quot;</span>);</co
 </ul>
 <p>If user inputs endpoint without scheme like “s3.amazonaws.com”, we
 will prepend “https://” before it.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.region" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#420-426">source</a><h4 class="code-header">pub fn <a href="#method.region" class="fn">region</a>(&amp;mut self, region: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.region" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#421-427">source</a><h4 class="code-header">pub fn <a href="#method.region" class="fn">region</a>(&amp;mut self, region: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/ [...]
 <ul>
 <li>If region is set, we will take user’s input first.</li>
 <li>If not, We will try to detect region via <a href="https://github.com/apache/incubator-opendal/blob/main/docs/rfcs/0057-auto-region.md">RFC-0057: Auto Region</a>.</li>
 </ul>
 <p>Most of time, region is not need to be set, especially for AWS S3 and minio.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#432-438">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#433-439">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
 <ul>
 <li>If access_key_id 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.secret_access_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#444-450">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://d [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#445-451">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://d [...]
 <ul>
 <li>If secret_access_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.role_arn" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#453-459">source</a><h4 class="code-header">pub fn <a href="#method.role_arn" class="fn">role_arn</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.external_id" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#462-468">source</a><h4 class="code-header">pub fn <a href="#method.external_id" class="fn">external_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1 [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#480-486">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive"  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.role_arn" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#454-460">source</a><h4 class="code-header">pub fn <a href="#method.role_arn" class="fn">role_arn</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.external_id" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#463-469">source</a><h4 class="code-header">pub fn <a href="#method.external_id" class="fn">external_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#481-487">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive"  [...]
 <p>Available values: <code>AES256</code>, <code>aws:kms</code>.</p>
 <h5 id="note"><a href="#note">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_aws_kms_key_id" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#505-511">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_aws_kms_key_id" class="fn">server_side_encryption_aws_kms_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.s [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_aws_kms_key_id" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#506-512">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_aws_kms_key_id" class="fn">server_side_encryption_aws_kms_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.s [...]
 <ul>
 <li>If <code>server_side_encryption</code> set to <code>aws:kms</code>, and <code>server_side_encryption_aws_kms_key_id</code>
 is not set, S3 will use aws managed kms key to encrypt data.</li>
@@ -331,13 +331,13 @@ is a noop.</li>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_algorithm" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#523-529">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_algorithm" class="fn">server_side_encryption_customer_algorithm</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_algorithm" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#524-530">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_algorithm" class="fn">server_side_encryption_customer_algorithm</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std [...]
 <p>Available values: <code>AES256</code>.</p>
 <h5 id="note-2"><a href="#note-2">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#544-550">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key" class="fn">server_side_encryption_customer_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.htm [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#545-551">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key" class="fn">server_side_encryption_customer_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.htm [...]
 <h5 id="args"><a href="#args">Args</a></h5>
 <p><code>v</code>: base64 encoded key that matches algorithm specified in
 <code>server_side_encryption_customer_algorithm</code>.</p>
@@ -345,47 +345,47 @@ Please use <code>server_side_encryption_with_*</code> helpers if even possible.<
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key_md5" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#564-570">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key_md5" class="fn">server_side_encryption_customer_key_md5</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primi [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key_md5" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#565-571">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key_md5" class="fn">server_side_encryption_customer_key_md5</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primi [...]
 <h5 id="args-1"><a href="#args-1">Args</a></h5>
 <p><code>v</code>: MD5 digest of key specified in <code>server_side_encryption_customer_key</code>.</p>
 <h5 id="note-4"><a href="#note-4">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_aws_managed_kms_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#577-580">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_aws_managed_kms_key" class="fn">server_side_encryption_with_aws_managed_kms_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_aws_managed_kms_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#578-581">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_aws_managed_kms_key" class="fn">server_side_encryption_with_aws_managed_kms_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
 <p>As known as: SSE-KMS</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_managed_kms_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#587-594">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_managed_kms_key" class="fn">server_side_encryption_with_customer_managed_kms_key</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;& [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_managed_kms_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#588-595">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_managed_kms_key" class="fn">server_side_encryption_with_customer_managed_kms_key</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;& [...]
 <p>As known as: SSE-KMS</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_s3_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#601-604">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_s3_key" class="fn">server_side_encryption_with_s3_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.reference.ht [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_s3_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#602-605">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_s3_key" class="fn">server_side_encryption_with_s3_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.reference.ht [...]
 <p>As known as: SSE-S3</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#611-621">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_key" class="fn">server_side_encryption_with_customer_key</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;algorithm: &amp;<a  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_key" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#612-622">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_key" class="fn">server_side_encryption_with_customer_key</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;algorithm: &amp;<a  [...]
 <p>As known as: SSE-C</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.security_token" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#628-633">source</a><h4 class="code-header">pub fn <a href="#method.security_token" class="fn">security_token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.ru [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.security_token" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#629-634">source</a><h4 class="code-header">pub fn <a href="#method.security_token" class="fn">security_token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.ru [...]
 <h5 id="warning"><a href="#warning">Warning</a></h5>
 <p>security token’s lifetime is short and requires users to refresh in time.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#642-645">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.reference.html">&amp;mut </a>Self</h4></section></summary [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#643-646">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.reference.html">&amp;mut </a>Self</h4></section></summary [...]
 environment.</p>
 <p>For examples:</p>
 <ul>
 <li>envs like <code>AWS_ACCESS_KEY_ID</code></li>
 <li>files like <code>~/.aws/config</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_virtual_host_style" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#652-655">source</a><h4 class="code-header">pub fn <a href="#method.enable_virtual_host_style" class="fn">enable_virtual_host_style</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.reference.html">&amp;mut </a>Self</h4>< [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_virtual_host_style" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#653-656">source</a><h4 class="code-header">pub fn <a href="#method.enable_virtual_host_style" class="fn">enable_virtual_host_style</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.reference.html">&amp;mut </a>Self</h4>< [...]
 in virtual host style instead of path style.</p>
 <ul>
 <li>By default, opendal will send API to <code>https://s3.us-east-1.amazonaws.com/bucket_name</code></li>
 <li>Enabled, opendal will send API to <code>https://bucket_name.s3.us-east-1.amazonaws.com</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_credential_load" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#658-661">source</a><h4 class="code-header">pub fn <a href="#method.customed_credential_load" class="fn">customed_credential_load</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;cred: impl AwsCredentialLoad<br>) -&gt; <a class="primitive" href=" [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#669-672">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://d [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_credential_load" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#659-662">source</a><h4 class="code-header">pub fn <a href="#method.customed_credential_load" class="fn">customed_credential_load</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;cred: impl AwsCredentialLoad<br>) -&gt; <a class="primitive" href=" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#670-673">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://d [...]
 <h5 id="notes"><a href="#notes">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-S3Builder" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#812-1030">source</a><a href="#impl-Builder-for-S3Builder" class="anchor"> [...]
+</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-S3Builder" class="impl has-srclink"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#813-1031">source</a><a href="#impl-Builder-for-S3Builder" class="anchor"> [...]
 </div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-S3Builder" class="impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#276">source</a><a href="#impl-Instrument-for-S3Builder" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html" title="trait tracing::instrumen [...]
 <code>Instrumented</code> wrapper. <a href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#121">source</a><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
 <code>Instrumented</code> wrapper. <a href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.in_current_span">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-S3Builder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.68.2/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-S3Builder" class="anchor">§</a><h3 class= [...]
diff --git a/docs/rust/opendal/trait.Builder.html b/docs/rust/opendal/trait.Builder.html
index 46b81983..8792fcb5 100644
--- a/docs/rust/opendal/trait.Builder.html
+++ b/docs/rust/opendal/trait.Builder.html
@@ -19,4 +19,4 @@
 </div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.from_iter" class="method has-srclink"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#37-42">source</a><h4 class="code-header">fn <a href="#method.from_iter" class="fn">from_iter</a>(iter: impl <a class="trait" href="https://doc. [...]
 </div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method has-srclink"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#45-59">source</a><h4 class="code-header">fn <a href="#method.from_env" class="fn">from_env</a>() -&gt; Self<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Sized.html" title="trait core::marker::Size [...]
 </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 has-srclink"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#66-76">source</a><a href="#impl-Builder-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Builder.html" title="trait [...]
-</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl has-srclink"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#67">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.Acc [...]
\ No newline at end of file
+</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl has-srclink"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#67">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.Acc [...]
\ No newline at end of file
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index bedc9dee..dd0e100e 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>, <strong>painlessly</strong>…","t":[16,13,13,13,3,3,3,3,8,13,13,13,13,13,13,13,13,13,13,3,4,3,4,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,3,4,13,13,13,13,13,3,3,3,13,13,13,3,13,6,13,13,18,4,13,13,13,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 [...]
+"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong>, <strong>painlessly</strong>…","t":[16,13,13,13,3,3,3,3,8,13,13,13,13,13,13,13,13,13,13,3,4,3,4,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,3,4,13,13,13,13,13,3,3,3,13,13,13,3,13,6,13,13,18,4,13,13,13,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 [...]
 }');
 if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
 if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/rust/src/opendal/services/s3/backend.rs.html b/docs/rust/src/opendal/services/s3/backend.rs.html
index 49039f88..fe1951b6 100644
--- a/docs/rust/src/opendal/services/s3/backend.rs.html
+++ b/docs/rust/src/opendal/services/s3/backend.rs.html
@@ -1894,6 +1894,51 @@
 <a href="#1894" id="1894">1894</a>
 <a href="#1895" id="1895">1895</a>
 <a href="#1896" id="1896">1896</a>
+<a href="#1897" id="1897">1897</a>
+<a href="#1898" id="1898">1898</a>
+<a href="#1899" id="1899">1899</a>
+<a href="#1900" id="1900">1900</a>
+<a href="#1901" id="1901">1901</a>
+<a href="#1902" id="1902">1902</a>
+<a href="#1903" id="1903">1903</a>
+<a href="#1904" id="1904">1904</a>
+<a href="#1905" id="1905">1905</a>
+<a href="#1906" id="1906">1906</a>
+<a href="#1907" id="1907">1907</a>
+<a href="#1908" id="1908">1908</a>
+<a href="#1909" id="1909">1909</a>
+<a href="#1910" id="1910">1910</a>
+<a href="#1911" id="1911">1911</a>
+<a href="#1912" id="1912">1912</a>
+<a href="#1913" id="1913">1913</a>
+<a href="#1914" id="1914">1914</a>
+<a href="#1915" id="1915">1915</a>
+<a href="#1916" id="1916">1916</a>
+<a href="#1917" id="1917">1917</a>
+<a href="#1918" id="1918">1918</a>
+<a href="#1919" id="1919">1919</a>
+<a href="#1920" id="1920">1920</a>
+<a href="#1921" id="1921">1921</a>
+<a href="#1922" id="1922">1922</a>
+<a href="#1923" id="1923">1923</a>
+<a href="#1924" id="1924">1924</a>
+<a href="#1925" id="1925">1925</a>
+<a href="#1926" id="1926">1926</a>
+<a href="#1927" id="1927">1927</a>
+<a href="#1928" id="1928">1928</a>
+<a href="#1929" id="1929">1929</a>
+<a href="#1930" id="1930">1930</a>
+<a href="#1931" id="1931">1931</a>
+<a href="#1932" id="1932">1932</a>
+<a href="#1933" id="1933">1933</a>
+<a href="#1934" id="1934">1934</a>
+<a href="#1935" id="1935">1935</a>
+<a href="#1936" id="1936">1936</a>
+<a href="#1937" id="1937">1937</a>
+<a href="#1938" id="1938">1938</a>
+<a href="#1939" id="1939">1939</a>
+<a href="#1940" id="1940">1940</a>
+<a href="#1941" id="1941">1941</a>
 </pre><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
@@ -1922,10 +1967,10 @@
 <span class="kw">use </span>base64::Engine;
 <span class="kw">use </span>bytes::Buf;
 <span class="kw">use </span>bytes::Bytes;
-<span class="kw">use </span>http::header::HeaderName;
 <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::{HeaderName, CACHE_CONTROL};
 <span class="kw">use </span>http::HeaderValue;
 <span class="kw">use </span>http::Request;
 <span class="kw">use </span>http::Response;
@@ -1974,6 +2019,7 @@
     <span class="kw">pub const </span>X_AMZ_BUCKET_REGION: <span class="kw-2">&amp;</span>str = <span class="string">&quot;x-amz-bucket-region&quot;</span>;
 
     <span class="kw">pub const </span>RESPONSE_CONTENT_DISPOSITION: <span class="kw-2">&amp;</span>str = <span class="string">&quot;response-content-disposition&quot;</span>;
+    <span class="kw">pub const </span>RESPONSE_CACHE_CONTROL: <span class="kw-2">&amp;</span>str = <span class="string">&quot;response-cache-control&quot;</span>;
 }
 
 <span class="doccomment">/// Aws S3 and compatible services (including minio, digitalocean space and so on) support
@@ -3030,7 +3076,8 @@
     }
 
     <span class="kw">async fn </span>create(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, <span class="kw">_</span>: OpCreate) -&gt; <span class="prelude-ty">Result</span>&lt;RpCreate&gt; {
-        <span class="kw">let </span><span class="kw-2">mut </span>req = <span class="self">self</span>.s3_put_object_request(path, <span class="prelude-val">Some</span>(<span class="number">0</span>), <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, AsyncBody::Empty)<span class="question-mark">?</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>req =
+            <span class="self">self</span>.s3_put_object_request(path, <span class="prelude-val">Some</span>(<span class="number">0</span>), <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, AsyncBody::Empty)<span class="question-mark">?</span>;
 
         <span class="self">self</span>.signer.sign(<span class="kw-2">&amp;mut </span>req).map_err(new_request_sign_error)<span class="question-mark">?</span>;
 
@@ -3063,7 +3110,14 @@
 
     <span class="kw">async fn </span>write(<span class="kw-2">&amp;</span><span class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: OpWrite) -&gt; <span class="prelude-ty">Result</span>&lt;(RpWrite, <span class="self">Self</span>::Writer)&gt; {
         <span class="kw">let </span>upload_id = <span class="kw">if </span>args.append() {
-            <span class="kw">let </span>resp = <span class="self">self</span>.s3_initiate_multipart_upload(path).<span class="kw">await</span><span class="question-mark">?</span>;
+            <span class="kw">let </span>resp = <span class="self">self
+                </span>.s3_initiate_multipart_upload(
+                    path,
+                    args.content_type(),
+                    args.content_disposition(),
+                    args.cache_control(),
+                )
+                .<span class="kw">await</span><span class="question-mark">?</span>;
 
             <span class="kw">let </span>status = resp.status();
 
@@ -3137,11 +3191,14 @@
         <span class="comment">// We will not send this request out, just for signing.
         </span><span class="kw">let </span><span class="kw-2">mut </span>req = <span class="kw">match </span>args.operation() {
             PresignOperation::Stat(<span class="kw">_</span>) =&gt; <span class="self">self</span>.s3_head_object_request(path)<span class="question-mark">?</span>,
-            PresignOperation::Read(v) =&gt; {
-                <span class="self">self</span>.s3_get_object_request(path, v.range(), v.override_content_disposition())<span class="question-mark">?
-            </span>}
+            PresignOperation::Read(v) =&gt; <span class="self">self</span>.s3_get_object_request(
+                path,
+                v.range(),
+                v.override_content_disposition(),
+                v.override_cache_control(),
+            )<span class="question-mark">?</span>,
             PresignOperation::Write(<span class="kw">_</span>) =&gt; {
-                <span class="self">self</span>.s3_put_object_request(path, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, AsyncBody::Empty)<span class="question-mark">?
+                <span class="self">self</span>.s3_put_object_request(path, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, AsyncBody::Empty)<span class="question-mark">?
             </span>}
         };
 
@@ -3230,18 +3287,31 @@
         path: <span class="kw-2">&amp;</span>str,
         range: BytesRange,
         override_content_disposition: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
+        override_cache_control: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
     ) -&gt; <span class="prelude-ty">Result</span>&lt;Request&lt;AsyncBody&gt;&gt; {
         <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, path);
 
         <span class="comment">// Construct headers to add to the request
         </span><span class="kw">let </span><span class="kw-2">mut </span>url = <span class="macro">format!</span>(<span class="string">&quot;{}/{}&quot;</span>, <span class="self">self</span>.endpoint, percent_encode_path(<span class="kw-2">&amp;</span>p));
 
+        <span class="comment">// Add query arguments to the URL based on response overrides
+        </span><span class="kw">let </span><span class="kw-2">mut </span>query_args = Vec::new();
         <span class="kw">if let </span><span class="prelude-val">Some</span>(override_content_disposition) = override_content_disposition {
-            url.push_str(<span class="kw-2">&amp;</span><span class="macro">format!</span>(
-                <span class="string">&quot;?{}={}&quot;</span>,
+            query_args.push(<span class="macro">format!</span>(
+                <span class="string">&quot;{}={}&quot;</span>,
                 constants::RESPONSE_CONTENT_DISPOSITION,
                 percent_encode_path(override_content_disposition)
-            ));
+            ))
+        }
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(override_cache_control) = override_cache_control {
+            query_args.push(<span class="macro">format!</span>(
+                <span class="string">&quot;{}={}&quot;</span>,
+                constants::RESPONSE_CACHE_CONTROL,
+                percent_encode_path(override_cache_control)
+            ))
+        }
+        <span class="kw">if </span>!query_args.is_empty() {
+            url.push_str(<span class="kw-2">&amp;</span><span class="macro">format!</span>(<span class="string">&quot;?{}&quot;</span>, query_args.join(<span class="string">&quot;&amp;&quot;</span>)));
         }
 
         <span class="kw">let </span><span class="kw-2">mut </span>req = Request::get(<span class="kw-2">&amp;</span>url);
@@ -3266,7 +3336,7 @@
         path: <span class="kw-2">&amp;</span>str,
         range: BytesRange,
     ) -&gt; <span class="prelude-ty">Result</span>&lt;Response&lt;IncomingAsyncBody&gt;&gt; {
-        <span class="kw">let </span><span class="kw-2">mut </span>req = <span class="self">self</span>.s3_get_object_request(path, range, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
+        <span class="kw">let </span><span class="kw-2">mut </span>req = <span class="self">self</span>.s3_get_object_request(path, range, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
 
         <span class="self">self</span>.signer.sign(<span class="kw-2">&amp;mut </span>req).map_err(new_request_sign_error)<span class="question-mark">?</span>;
 
@@ -3279,6 +3349,7 @@
         size: <span class="prelude-ty">Option</span>&lt;usize&gt;,
         content_type: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
         content_disposition: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
+        cache_control: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
         body: AsyncBody,
     ) -&gt; <span class="prelude-ty">Result</span>&lt;Request&lt;AsyncBody&gt;&gt; {
         <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, path);
@@ -3299,6 +3370,10 @@
             req = req.header(CONTENT_DISPOSITION, pos)
         }
 
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(cache_control) = cache_control {
+            req = req.header(CACHE_CONTROL, cache_control)
+        }
+
         <span class="comment">// Set SSE headers.
         </span>req = <span class="self">self</span>.insert_sse_headers(req, <span class="bool-val">true</span>);
 
@@ -3385,12 +3460,27 @@
     <span class="kw">async fn </span>s3_initiate_multipart_upload(
         <span class="kw-2">&amp;</span><span class="self">self</span>,
         path: <span class="kw-2">&amp;</span>str,
+        content_type: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
+        content_disposition: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
+        cache_control: <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt;,
     ) -&gt; <span class="prelude-ty">Result</span>&lt;Response&lt;IncomingAsyncBody&gt;&gt; {
         <span class="kw">let </span>p = build_abs_path(<span class="kw-2">&amp;</span><span class="self">self</span>.root, path);
 
         <span class="kw">let </span>url = <span class="macro">format!</span>(<span class="string">&quot;{}/{}?uploads&quot;</span>, <span class="self">self</span>.endpoint, percent_encode_path(<span class="kw-2">&amp;</span>p));
 
-        <span class="kw">let </span>req = Request::post(<span class="kw-2">&amp;</span>url);
+        <span class="kw">let </span><span class="kw-2">mut </span>req = Request::post(<span class="kw-2">&amp;</span>url);
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(mime) = content_type {
+            req = req.header(CONTENT_TYPE, mime)
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(content_disposition) = content_disposition {
+            req = req.header(CONTENT_DISPOSITION, content_disposition)
+        }
+
+        <span class="kw">if let </span><span class="prelude-val">Some</span>(cache_control) = cache_control {
+            req = req.header(CACHE_CONTROL, cache_control)
+        }
 
         <span class="comment">// Set SSE headers.
         </span><span class="kw">let </span>req = <span class="self">self</span>.insert_sse_headers(req, <span class="bool-val">true</span>);
diff --git a/docs/rust/src/opendal/services/s3/writer.rs.html b/docs/rust/src/opendal/services/s3/writer.rs.html
index 9738f2a9..3bf77ab1 100644
--- a/docs/rust/src/opendal/services/s3/writer.rs.html
+++ b/docs/rust/src/opendal/services/s3/writer.rs.html
@@ -152,6 +152,7 @@
 <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>
 </pre><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
@@ -215,6 +216,7 @@
             <span class="prelude-val">Some</span>(bs.len()),
             <span class="self">self</span>.op.content_type(),
             <span class="self">self</span>.op.content_disposition(),
+            <span class="self">self</span>.op.cache_control(),
             AsyncBody::Bytes(bs),
         )<span class="question-mark">?</span>;
 
diff --git a/docs/rust/src/opendal/types/ops.rs.html b/docs/rust/src/opendal/types/ops.rs.html
index 4dc90699..ca52a00a 100644
--- a/docs/rust/src/opendal/types/ops.rs.html
+++ b/docs/rust/src/opendal/types/ops.rs.html
@@ -330,6 +330,28 @@
 <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>
 </pre><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
@@ -563,6 +585,7 @@
 </span><span class="kw">pub struct </span>OpRead {
     br: BytesRange,
     override_content_disposition: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    override_cache_control: <span class="prelude-ty">Option</span>&lt;String&gt;,
 }
 
 <span class="kw">impl </span>OpRead {
@@ -583,10 +606,7 @@
     }
 
     <span class="doccomment">/// Sets the content-disposition header that should be send back by the remote read operation.
-    </span><span class="kw">pub fn </span>with_override_content_disposition(
-        <span class="kw-2">mut </span><span class="self">self</span>,
-        content_disposition: <span class="kw">impl </span>Into&lt;String&gt;,
-    ) -&gt; <span class="self">Self </span>{
+    </span><span class="kw">pub fn </span>with_override_content_disposition(<span class="kw-2">mut </span><span class="self">self</span>, content_disposition: <span class="kw-2">&amp;</span>str) -&gt; <span class="self">Self </span>{
         <span class="self">self</span>.override_content_disposition = <span class="prelude-val">Some</span>(content_disposition.into());
         <span class="self">self
     </span>}
@@ -596,6 +616,17 @@
     </span><span class="kw">pub fn </span>override_content_disposition(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt; {
         <span class="self">self</span>.override_content_disposition.as_deref()
     }
+
+    <span class="doccomment">/// Sets the cache-control header that should be send back by the remote read operation.
+    </span><span class="kw">pub fn </span>with_override_cache_control(<span class="kw-2">mut </span><span class="self">self</span>, cache_control: <span class="kw-2">&amp;</span>str) -&gt; <span class="self">Self </span>{
+        <span class="self">self</span>.override_cache_control = <span class="prelude-val">Some</span>(cache_control.into());
+        <span class="self">self
+    </span>}
+
+    <span class="doccomment">/// Returns the cache-control header that should be send back by the remote read operation.
+    </span><span class="kw">pub fn </span>override_cache_control(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt; {
+        <span class="self">self</span>.override_cache_control.as_deref()
+    }
 }
 
 <span class="doccomment">/// Args for `stat` operation.
@@ -616,6 +647,7 @@
 
     content_type: <span class="prelude-ty">Option</span>&lt;String&gt;,
     content_disposition: <span class="prelude-ty">Option</span>&lt;String&gt;,
+    cache_control: <span class="prelude-ty">Option</span>&lt;String&gt;,
 }
 
 <span class="kw">impl </span>OpWrite {
@@ -628,6 +660,7 @@
 
             content_type: <span class="prelude-val">None</span>,
             content_disposition: <span class="prelude-val">None</span>,
+            cache_control: <span class="prelude-val">None</span>,
         }
     }
 
@@ -661,6 +694,17 @@
         <span class="self">self</span>.content_disposition = <span class="prelude-val">Some</span>(content_disposition.to_string());
         <span class="self">self
     </span>}
+
+    <span class="doccomment">/// Get the cache control from option
+    </span><span class="kw">pub fn </span>cache_control(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>str&gt; {
+        <span class="self">self</span>.cache_control.as_deref()
+    }
+
+    <span class="doccomment">/// Set the content type of option
+    </span><span class="kw">pub fn </span>with_cache_control(<span class="kw-2">mut </span><span class="self">self</span>, cache_control: <span class="kw-2">&amp;</span>str) -&gt; <span class="self">Self </span>{
+        <span class="self">self</span>.cache_control = <span class="prelude-val">Some</span>(cache_control.to_string());
+        <span class="self">self
+    </span>}
 }
 </code></pre></div>
 </section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="opendal" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.2 (9eb3afe9e 2023-03-27)" data-search-js="search-98d53477a794af0b.js" data-settings-js="settings-c3c521c753752a1a.js" data-settings-css="settings-08ddfdda51b8ee2e.css" ></div></body></html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 5a2e4504..3976a4e8 100644
--- a/index.html
+++ b/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.0ae3d66f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.a43d7081.js" as="script">
 <link rel="preload" href="/assets/js/main.d23512d8.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=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-hid [...]
-<script src="/assets/js/runtime~main.0ae3d66f.js"></script>
+<script src="/assets/js/runtime~main.a43d7081.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file