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/25 17:23:33 UTC

[incubator-opendal] branch gh-pages updated: deploy: 38fab74e6cb51a9a9081feec10e754aa59f52ab1

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 a1b28457 deploy: 38fab74e6cb51a9a9081feec10e754aa59f52ab1
a1b28457 is described below

commit a1b284578aec82035ce66ba4ebde052d1d4d2fa9
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Sat Mar 25 17:23:28 2023 +0000

    deploy: 38fab74e6cb51a9a9081feec10e754aa59f52ab1
---
 404.html                                           |   4 +-
 .../{1db64337.c682da12.js => 1db64337.ba7963cc.js} |   2 +-
 assets/js/runtime~main.85f8512b.js                 |   1 -
 assets/js/runtime~main.f09f80a2.js                 |   1 +
 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            |  12 +-
 docs/nodejs/classes/Entry.html                     |  12 +-
 docs/nodejs/classes/Lister.html                    |  12 +-
 docs/nodejs/classes/Metadata.html                  |  26 +-
 docs/nodejs/classes/Operator.html                  |  40 +--
 docs/nodejs/index.html                             |   8 +-
 docs/nodejs/modules.html                           |   8 +-
 docs/overview/index.html                           |   6 +-
 docs/python/opendal.html                           |  32 +-
 docs/python/search.js                              |   2 +-
 docs/rust/opendal/docs/changelog/index.html        | 385 ++++++++++++---------
 docs/rust/opendal/index.html                       |   2 +-
 index.html                                         |   4 +-
 22 files changed, 313 insertions(+), 264 deletions(-)

diff --git a/404.html b/404.html
index 32bd2309..08e26722 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.js"></script>
+<script src="/assets/js/runtime~main.f09f80a2.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/1db64337.c682da12.js b/assets/js/1db64337.ba7963cc.js
similarity index 89%
rename from assets/js/1db64337.c682da12.js
rename to assets/js/1db64337.ba7963cc.js
index be0ead5e..2cc9cd90 100644
--- a/assets/js/1db64337.c682da12.js
+++ b/assets/js/1db64337.ba7963cc.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:()=>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
+"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.85f8512b.js b/assets/js/runtime~main.85f8512b.js
deleted file mode 100644
index baa725bb..00000000
--- a/assets/js/runtime~main.85f8512b.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"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/assets/js/runtime~main.f09f80a2.js b/assets/js/runtime~main.f09f80a2.js
new file mode 100644
index 00000000..e80ea622
--- /dev/null
+++ b/assets/js/runtime~main.f09f80a2.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,t,r,o,a,n={},c={};function f(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={exports:{}};return n[e].call(r.exports,r,r.exports,f),r.exports}f.m=n,e=[],f.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 c=!0,i=0;i<r.length;i++)(!1&a||n>=a)&&Object.keys(f.O).every((e=>f.O[e](r[i])))?r.splice(i--,1):(c=!1,a<n&&(n=a));if(c){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 0dbae9b6..286a10d8 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.js"></script>
+<script src="/assets/js/runtime~main.f09f80a2.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 cde28d8a..fd3b8e21 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.js"></script>
+<script src="/assets/js/runtime~main.f09f80a2.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 37472101..a3299f44 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.js"></script>
+<script src="/assets/js/runtime~main.f09f80a2.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 979ff718..7ee911a8 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.js"></script>
+<script src="/assets/js/runtime~main.f09f80a2.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 f947e979..2dc4d189 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.js"></script>
+<script src="/assets/js/runtime~main.f09f80a2.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 88dcec9e..be50dc7c 100644
--- a/docs/nodejs/classes/BlockingLister.html
+++ b/docs/nodejs/classes/BlockingLister.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingLister | Apache OpenDAL - v0.30.3</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.3"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-s [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingLister | Apache OpenDAL - v0.30.4</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.4"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-s [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,13 +6,13 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.3</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.4</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-8 col-content">
 <div class="tsd-page-title">
 <ul class="tsd-breadcrumb">
-<li><a href="../modules.html">Apache OpenDAL - v0.30.3</a></li>
+<li><a href="../modules.html">Apache OpenDAL - v0.30.4</a></li>
 <li><a href="BlockingLister.html">BlockingLister</a></li></ul>
 <h1>Class BlockingLister</h1></div>
 <section class="tsd-panel tsd-hierarchy">
@@ -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/ee023fe/bindings/nodejs/index.d.ts#L101">index.d.ts:101</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L101">index.d.ts:101</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/ee023fe/bindings/nodejs/index.d.ts#L102">index.d.ts:102</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L102">index.d.ts:102</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">
@@ -68,7 +68,7 @@
 <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
 <div class="tsd-accordion-details">
 <ul>
-<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.3</a>
+<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.4</a>
 <ul></ul></li></ul></div></details></nav>
 <nav class="tsd-navigation secondary menu-sticky">
 <ul>
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index 95ed8792..e365dd33 100644
--- a/docs/nodejs/classes/Entry.html
+++ b/docs/nodejs/classes/Entry.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Entry | Apache OpenDAL - v0.30.3</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.3"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></ [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Entry | Apache OpenDAL - v0.30.4</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.4"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></ [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,13 +6,13 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.3</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.4</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-8 col-content">
 <div class="tsd-page-title">
 <ul class="tsd-breadcrumb">
-<li><a href="../modules.html">Apache OpenDAL - v0.30.3</a></li>
+<li><a href="../modules.html">Apache OpenDAL - v0.30.4</a></li>
 <li><a href="Entry.html">Entry</a></li></ul>
 <h1>Class Entry</h1></div>
 <section class="tsd-panel tsd-hierarchy">
@@ -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/ee023fe/bindings/nodejs/index.d.ts#L68">index.d.ts:68</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L68">index.d.ts:68</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/ee023fe/bindings/nodejs/index.d.ts#L70">index.d.ts:70</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L70">index.d.ts:70</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">
@@ -70,7 +70,7 @@
 <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
 <div class="tsd-accordion-details">
 <ul>
-<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.3</a>
+<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.4</a>
 <ul></ul></li></ul></div></details></nav>
 <nav class="tsd-navigation secondary menu-sticky">
 <ul>
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index 16c464e9..96c267fa 100644
--- a/docs/nodejs/classes/Lister.html
+++ b/docs/nodejs/classes/Lister.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Lister | Apache OpenDAL - v0.30.3</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.3"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script">< [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Lister | Apache OpenDAL - v0.30.4</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.4"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script">< [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,13 +6,13 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.3</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.4</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-8 col-content">
 <div class="tsd-page-title">
 <ul class="tsd-breadcrumb">
-<li><a href="../modules.html">Apache OpenDAL - v0.30.3</a></li>
+<li><a href="../modules.html">Apache OpenDAL - v0.30.4</a></li>
 <li><a href="Lister.html">Lister</a></li></ul>
 <h1>Class Lister</h1></div>
 <section class="tsd-panel tsd-hierarchy">
@@ -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/ee023fe/bindings/nodejs/index.d.ts#L90">index.d.ts:90</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L90">index.d.ts:90</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/ee023fe/bindings/nodejs/index.d.ts#L99">index.d.ts:99</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L99">index.d.ts:99</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">
@@ -78,7 +78,7 @@ thing internally.</p>
 <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
 <div class="tsd-accordion-details">
 <ul>
-<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.3</a>
+<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.4</a>
 <ul></ul></li></ul></div></details></nav>
 <nav class="tsd-navigation secondary menu-sticky">
 <ul>
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index e61ef97a..b1fc692a 100644
--- a/docs/nodejs/classes/Metadata.html
+++ b/docs/nodejs/classes/Metadata.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Metadata | Apache OpenDAL - v0.30.3</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.3"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script" [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Metadata | Apache OpenDAL - v0.30.4</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.4"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script" [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,13 +6,13 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.3</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.4</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-8 col-content">
 <div class="tsd-page-title">
 <ul class="tsd-breadcrumb">
-<li><a href="../modules.html">Apache OpenDAL - v0.30.3</a></li>
+<li><a href="../modules.html">Apache OpenDAL - v0.30.4</a></li>
 <li><a href="Metadata.html">Metadata</a></li></ul>
 <h1>Class Metadata</h1></div>
 <section class="tsd-panel tsd-hierarchy">
@@ -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/ee023fe/bindings/nodejs/index.d.ts#L72">index.d.ts:72</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L72">index.d.ts:72</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/ee023fe/bindings/nodejs/index.d.ts#L78">index.d.ts:78</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L78">index.d.ts:78</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/ee023fe/bindings/nodejs/index.d.ts#L80">index.d.ts:80</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L80">index.d.ts:80</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/ee023fe/bindings/nodejs/index.d.ts#L82">index.d.ts:82</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L82">index.d.ts:82</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/ee023fe/bindings/nodejs/index.d.ts#L84">index.d.ts:84</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L84">index.d.ts:84</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/ee023fe/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/38fab74/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-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/ee023fe/bindings/nodejs/index.d.ts#L88">index.d.ts:88</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L88">index.d.ts:88</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/ee023fe/bindings/nodejs/index.d.ts#L74">index.d.ts:74</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L74">index.d.ts:74</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/ee023fe/bindings/nodejs/index.d.ts#L76">index.d.ts:76</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L76">index.d.ts:76</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">
@@ -152,7 +152,7 @@
 <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
 <div class="tsd-accordion-details">
 <ul>
-<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.3</a>
+<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.4</a>
 <ul></ul></li></ul></div></details></nav>
 <nav class="tsd-navigation secondary menu-sticky">
 <ul>
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index 6d9bba5d..65a08638 100644
--- a/docs/nodejs/classes/Operator.html
+++ b/docs/nodejs/classes/Operator.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Operator | Apache OpenDAL - v0.30.3</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.3"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script" [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Operator | Apache OpenDAL - v0.30.4</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.4"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script" [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base="..">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,13 +6,13 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.3</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Apache OpenDAL - v0.30.4</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-8 col-content">
 <div class="tsd-page-title">
 <ul class="tsd-breadcrumb">
-<li><a href="../modules.html">Apache OpenDAL - v0.30.3</a></li>
+<li><a href="../modules.html">Apache OpenDAL - v0.30.4</a></li>
 <li><a href="Operator.html">Operator</a></li></ul>
 <h1>Class Operator</h1></div>
 <section class="tsd-panel tsd-hierarchy">
@@ -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/ee023fe/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/38fab74/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">
@@ -63,7 +63,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/ee023fe/bindings/nodejs/index.d.ts#L26">index.d.ts:26</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L26">index.d.ts:26</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="createDir" class="tsd-anchor"></a>
@@ -80,7 +80,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/ee023fe/bindings/nodejs/index.d.ts#L32">index.d.ts:32</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L32">index.d.ts:32</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">
@@ -95,7 +95,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/ee023fe/bindings/nodejs/index.d.ts#L34">index.d.ts:34</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L34">index.d.ts:34</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">
@@ -110,7 +110,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/ee023fe/bindings/nodejs/index.d.ts#L48">index.d.ts:48</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L48">index.d.ts:48</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">
@@ -125,7 +125,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/ee023fe/bindings/nodejs/index.d.ts#L50">index.d.ts:50</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L50">index.d.ts:50</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">
@@ -142,7 +142,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/ee023fe/bindings/nodejs/index.d.ts#L58">index.d.ts:58</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L58">index.d.ts:58</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">
@@ -159,7 +159,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/ee023fe/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/38fab74/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="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">
@@ -174,7 +174,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/ee023fe/bindings/nodejs/index.d.ts#L40">index.d.ts:40</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L40">index.d.ts:40</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">
@@ -189,7 +189,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/ee023fe/bindings/nodejs/index.d.ts#L42">index.d.ts:42</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L42">index.d.ts:42</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">
@@ -204,7 +204,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/ee023fe/bindings/nodejs/index.d.ts#L44">index.d.ts:44</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L44">index.d.ts:44</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">
@@ -219,7 +219,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/ee023fe/bindings/nodejs/index.d.ts#L46">index.d.ts:46</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L46">index.d.ts:46</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">
@@ -234,7 +234,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/ee023fe/bindings/nodejs/index.d.ts#L28">index.d.ts:28</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L28">index.d.ts:28</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">
@@ -249,7 +249,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/ee023fe/bindings/nodejs/index.d.ts#L30">index.d.ts:30</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L30">index.d.ts:30</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">
@@ -266,7 +266,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/ee023fe/bindings/nodejs/index.d.ts#L36">index.d.ts:36</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L36">index.d.ts:36</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">
@@ -283,7 +283,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/ee023fe/bindings/nodejs/index.d.ts#L38">index.d.ts:38</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/38fab74/bindings/nodejs/index.d.ts#L38">index.d.ts:38</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">
@@ -300,7 +300,7 @@
 <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
 <div class="tsd-accordion-details">
 <ul>
-<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.3</a>
+<li><a href="../modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.4</a>
 <ul></ul></li></ul></div></details></nav>
 <nav class="tsd-navigation secondary menu-sticky">
 <ul>
diff --git a/docs/nodejs/index.html b/docs/nodejs/index.html
index 2e0ae0c3..f06a42cd 100644
--- a/docs/nodejs/index.html
+++ b/docs/nodejs/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Apache OpenDAL - v0.30.3</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.3"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><bo [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Apache OpenDAL - v0.30.4</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.4"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><bo [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base=".">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,12 +6,12 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.30.3</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.30.4</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-8 col-content">
 <div class="tsd-page-title">
-<h2>Apache OpenDAL - v0.30.3</h2></div>
+<h2>Apache OpenDAL - v0.30.4</h2></div>
 <div class="tsd-panel tsd-typography">
 <a href="#opendal-nodejs-binding" id="opendal-nodejs-binding" style="color: inherit; text-decoration: none;">
   <h1>OpenDAL Node.js Binding</h1>
@@ -84,7 +84,7 @@
 <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
 <div class="tsd-accordion-details">
 <ul>
-<li class="current selected"><a href="modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.3</a>
+<li class="current selected"><a href="modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.4</a>
 <ul></ul></li></ul></div></details></nav>
 <nav class="tsd-navigation secondary menu-sticky">
 <ul>
diff --git a/docs/nodejs/modules.html b/docs/nodejs/modules.html
index 7c83839d..30d66316 100644
--- a/docs/nodejs/modules.html
+++ b/docs/nodejs/modules.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Apache OpenDAL - v0.30.3</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.3"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><bo [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Apache OpenDAL - v0.30.4</title><meta name="description" content="Documentation for Apache OpenDAL - v0.30.4"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script async src="assets/search.js" id="search-script"></script></head><bo [...]
 <div class="tsd-toolbar-contents container">
 <div class="table-cell" id="tsd-search" data-base=".">
 <div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 1 [...]
@@ -6,12 +6,12 @@
 <div id="tsd-toolbar-links"><a href="https://opendal.apache.org/">Homepage</a><a href="https://github.com/apache/incubator-opendal/tree/main/bindings/nodejs">GitHub</a></div></div>
 <ul class="results">
 <li class="state loading">Preparing search index...</li>
-<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.30.3</a></div>
+<li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">Apache OpenDAL - v0.30.4</a></div>
 <div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="3" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-text)"></rect></svg></a></div></div></header>
 <div class="container container-main">
 <div class="col-8 col-content">
 <div class="tsd-page-title">
-<h2>Apache OpenDAL - v0.30.3</h2></div>
+<h2>Apache OpenDAL - v0.30.4</h2></div>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <h3 class="tsd-index-heading uppercase">Index</h3>
@@ -39,7 +39,7 @@
 <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-text)"></path></svg> Modules</h3></summary>
 <div class="tsd-accordion-details">
 <ul>
-<li class="current selected"><a href="modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.3</a>
+<li class="current selected"><a href="modules.html">Apache <wbr/>OpenDAL -<wbr/> v0.30.4</a>
 <ul></ul></li></ul></div></details></nav>
 <nav class="tsd-navigation secondary menu-sticky">
 <ul>
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 1cd44371..88181513 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.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.f09f80a2.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 146cde3f..344512f0 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -155,9 +155,6 @@
             <li>
                     <a class="class" href="#Metadata">Metadata</a>
                             <ul class="memberlist">
-                        <li>
-                                <a class="variable" href="#Metadata.etag">etag</a>
-                        </li>
                         <li>
                                 <a class="variable" href="#Metadata.content_md5">content_md5</a>
                         </li>
@@ -170,6 +167,9 @@
                         <li>
                                 <a class="variable" href="#Metadata.mode">mode</a>
                         </li>
+                        <li>
+                                <a class="variable" href="#Metadata.etag">etag</a>
+                        </li>
                 </ul>
 
             </li>
@@ -852,19 +852,6 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <div id="Metadata.etag" class="classattr">
-                                <div class="attr variable">
-            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
-
-        
-    </div>
-    <a class="headerlink" href="#Metadata.etag"></a>
-    
-            <div class="docstring"><p>ETag of this entry.</p>
-</div>
-
-
-                            </div>
                             <div id="Metadata.content_md5" class="classattr">
                                 <div class="attr variable">
             <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
@@ -916,6 +903,19 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
 </div>
 
 
+                            </div>
+                            <div id="Metadata.etag" class="classattr">
+                                <div class="attr variable">
+            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
+
+        
+    </div>
+    <a class="headerlink" href="#Metadata.etag"></a>
+    
+            <div class="docstring"><p>ETag of this entry.</p>
+</div>
+
+
                             </div>
                 </section>
                 <section id="Error">
diff --git a/docs/python/search.js b/docs/python/search.js
index 6cf4d7c6..25ce2618 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/docs/changelog/index.html b/docs/rust/opendal/docs/changelog/index.html
index cecd578f..310b3500 100644
--- a/docs/rust/opendal/docs/changelog/index.html
+++ b/docs/rust/opendal/docs/changelog/index.html
@@ -3,7 +3,56 @@
 <p>All notable changes to this project will be documented in this file.</p>
 <p>The format is based on <a href="https://keepachangelog.com/">Keep a Changelog</a>
 and this project adheres to <a href="https://semver.org/">Semantic Versioning</a>.</p>
-<h3 id="v0303---2023-03-16"><a href="#v0303---2023-03-16">v0.30.3 - 2023-03-16</a></h3><h4 id="added"><a href="#added">Added</a></h4>
+<h3 id="v0304---2023-03-26"><a href="#v0304---2023-03-26">v0.30.4 - 2023-03-26</a></h3><h4 id="added"><a href="#added">Added</a></h4>
+<ul>
+<li>feat(oli): add config file to oli (#1706)</li>
+<li>feat: make oli support more services (#1717)</li>
+<li>feat(bindings/ruby): Setup the integrate with magnus (#1712)</li>
+<li>feat(bindings/ruby): setup cucumber tests (#1725)</li>
+<li>feat(bindings/python): convert to mixed Python/Rust project layout (#1729)</li>
+<li>RFC-1735: Operation Extension (#1735)</li>
+<li>feat(oli): load config from both env and file (#1737)</li>
+<li>feat(bindings/ruby): support read and write (#1734)</li>
+<li>feat(bindings/ruby): support stat, and pass all blocking bdd test (#1743)</li>
+<li>feat(bindings/ruby): add namespace (#1745)</li>
+<li>feat: Add override_content_disposition for OpRead (#1742)</li>
+<li>feat(bindings/java): add java binding (#1736)</li>
+<li>feat(oli): implement oli ls (#1755)</li>
+<li>feat(oli): implement oli cat (#1759)</li>
+</ul>
+<h4 id="fixed"><a href="#fixed">Fixed</a></h4>
+<ul>
+<li>fix(bindings/nodejs): Publish sub-package name (#1704)</li>
+</ul>
+<h4 id="docs"><a href="#docs">Docs</a></h4>
+<ul>
+<li>docs: Update comparison vs object_store (#1698)</li>
+<li>docs(bindings/python): add pdoc to docs env (#1718)</li>
+<li>docs: List working on bindings in README (#1753)</li>
+</ul>
+<h4 id="ci"><a href="#ci">CI</a></h4>
+<ul>
+<li>ci: Fix workflow not triggered when itself changed (#1716)</li>
+<li>ci: Remove ROCKSDB_LIB_DIR after we didn’t install librocksdb (#1719)</li>
+<li>ci: Fix nodejs built failed for “Unexpected token o in JSON at position 0” (#1722)</li>
+<li>ci: Split cache into more parts (#1730)</li>
+<li>ci: add a basic ci for ruby (#1744)</li>
+<li>ci: Remove target from cache (#1764)</li>
+</ul>
+<h4 id="chore"><a href="#chore">Chore</a></h4>
+<ul>
+<li>chore: Fix CHANGELOG not found (#1694)</li>
+<li>chore: Remove publish=false of oli (#1697)</li>
+<li>chore: Fix a few typos in code comment (#1701)</li>
+<li>chore(bindins/nodejs): Update README (#1709)</li>
+<li>chore: rename binaries to bin (#1714)</li>
+<li>chore: bump rocksdb to resolve dependency conflicts with magnus (#1713)</li>
+<li>chore(bindings/nodejs): Remove outdated napi patches (#1727)</li>
+<li>chore: Add CITATION file for OpenDAL (#1746)</li>
+<li>chore: improve NotADirectory error message with ending slash (#1756)</li>
+<li>chore(bindings/python): update pyo3 to 0.18.2 (#1758)</li>
+</ul>
+<h3 id="v0303---2023-03-16"><a href="#v0303---2023-03-16">v0.30.3 - 2023-03-16</a></h3><h4 id="added-1"><a href="#added-1">Added</a></h4>
 <ul>
 <li>feat: Infer storage name based on endpoint (#1551)</li>
 <li>feat(bindings/python): implement async file-like reader API (#1570)</li>
@@ -27,7 +76,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>*: Change all files licenses to ASF (#1592)</li>
 <li>refactor(bindings/python): only enable <code>pyo3/entension-module</code> feature when building with maturin (#1680)</li>
 </ul>
-<h4 id="fixed"><a href="#fixed">Fixed</a></h4>
+<h4 id="fixed-1"><a href="#fixed-1">Fixed</a></h4>
 <ul>
 <li>fix(bindings/python): Fix the metadata for Python binding (#1568)</li>
 <li>fix: Operator::remove_all behaviour on non-existing object fixed (#1587)</li>
@@ -35,7 +84,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>fix: Bucket config related error is misleadling (#1684)</li>
 <li>fix(services/s3): UploadId should be percent encoded (#1690)</li>
 </ul>
-<h4 id="ci"><a href="#ci">CI</a></h4>
+<h4 id="ci-1"><a href="#ci-1">CI</a></h4>
 <ul>
 <li>ci: Fix typo in workflows (#1582)</li>
 <li>ci: Don’t check dep updates so frequently (#1599)</li>
@@ -55,7 +104,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>ci: Fix license header check and doc check (#1674)</li>
 <li>infra: Add odev to simplify contributor’s setup (#1687)</li>
 </ul>
-<h4 id="docs"><a href="#docs">Docs</a></h4>
+<h4 id="docs-1"><a href="#docs-1">Docs</a></h4>
 <ul>
 <li>docs: Migrate links to o.a.o (#1630)</li>
 <li>docs: update the old address and the LICENSE size. (#1633)</li>
@@ -73,7 +122,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>website: Add GitHub entry (#1636)</li>
 <li>website: move some content of footer to navbar. (#1660)</li>
 </ul>
-<h4 id="chore"><a href="#chore">Chore</a></h4>
+<h4 id="chore-1"><a href="#chore-1">Chore</a></h4>
 <ul>
 <li>chore(bindings/nodejs): fix missing files to publish (#1569)</li>
 <li>chore(deps): bump lazy-regex from 2.4.1 to 2.5.0 (#1573)</li>
@@ -102,23 +151,23 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore: Remove not needed ignore from licenserc (#1677)</li>
 <li>chore: Ignore generated docs from git (#1686)</li>
 </ul>
-<h3 id="v0302---2023-03-10"><a href="#v0302---2023-03-10">v0.30.2 - 2023-03-10</a></h3><h4 id="ci-1"><a href="#ci-1">CI</a></h4>
+<h3 id="v0302---2023-03-10"><a href="#v0302---2023-03-10">v0.30.2 - 2023-03-10</a></h3><h4 id="ci-2"><a href="#ci-2">CI</a></h4>
 <ul>
 <li>ci(bindings/nodejs): Fix nodejs package can’t uploaded (#1564)</li>
 </ul>
-<h3 id="v0301---2023-03-10"><a href="#v0301---2023-03-10">v0.30.1 - 2023-03-10</a></h3><h4 id="docs-1"><a href="#docs-1">Docs</a></h4>
+<h3 id="v0301---2023-03-10"><a href="#v0301---2023-03-10">v0.30.1 - 2023-03-10</a></h3><h4 id="docs-2"><a href="#docs-2">Docs</a></h4>
 <ul>
 <li>docs: Fix Operator::create() has been removed (#1560)</li>
 </ul>
-<h4 id="ci-2"><a href="#ci-2">CI</a></h4>
+<h4 id="ci-3"><a href="#ci-3">CI</a></h4>
 <ul>
 <li>ci: Fix python &amp; nodejs not released correctly (#1559)</li>
 </ul>
-<h4 id="chore-1"><a href="#chore-1">Chore</a></h4>
+<h4 id="chore-2"><a href="#chore-2">Chore</a></h4>
 <ul>
 <li>chore(bindings/nodejs): update license in package.json (#1556)</li>
 </ul>
-<h3 id="v0300---2023-03-10"><a href="#v0300---2023-03-10">v0.30.0 - 2023-03-10</a></h3><h4 id="added-1"><a href="#added-1">Added</a></h4>
+<h3 id="v0300---2023-03-10"><a href="#v0300---2023-03-10">v0.30.0 - 2023-03-10</a></h3><h4 id="added-2"><a href="#added-2">Added</a></h4>
 <ul>
 <li>RFC-1477: Remove Object Concept (#1477)</li>
 <li>feat(bindings/nodejs): fs Operator (#1485)</li>
@@ -151,33 +200,33 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: improve the python binding implementation (#1517)</li>
 <li>refactor(bindings/nodejs): Remove scheme from bindings (#1552)</li>
 </ul>
-<h4 id="fixed-1"><a href="#fixed-1">Fixed</a></h4>
+<h4 id="fixed-2"><a href="#fixed-2">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Make sure the ureq’s body has been consumed (#1497)</li>
 <li>fix(services/s3): Allow retry error RequestTimeout (#1532)</li>
 </ul>
-<h4 id="docs-2"><a href="#docs-2">Docs</a></h4>
+<h4 id="docs-3"><a href="#docs-3">Docs</a></h4>
 <ul>
 <li>docs: Remove all references to object (#1500)</li>
 <li>docs(bindings/python): Add building docs (#1526)</li>
 <li>docs(bindings/nodejs): update readme (#1527)</li>
 <li>docs: Add detailed docs for create_dir (#1537)</li>
 </ul>
-<h4 id="ci-3"><a href="#ci-3">CI</a></h4>
+<h4 id="ci-4"><a href="#ci-4">CI</a></h4>
 <ul>
 <li>ci: Don’t run binding tests if only services changes (#1498)</li>
 <li>ci: Improve rocksdb build speed by link dynamic libs (#1502)</li>
 <li>ci: Fix bindings CI not running on PR (#1530)</li>
 <li>ci: Polish scripts and prepare for releasing (#1553)</li>
 </ul>
-<h4 id="chore-2"><a href="#chore-2">Chore</a></h4>
+<h4 id="chore-3"><a href="#chore-3">Chore</a></h4>
 <ul>
 <li>chore: Re-organize the project layout (#1489)</li>
 <li>chore: typo &amp; clippy (#1499)</li>
 <li>chore: typo (#1501)</li>
 <li>chore: Move memcache-async into opendal (#1544)</li>
 </ul>
-<h3 id="v0291---2023-03-05"><a href="#v0291---2023-03-05">v0.29.1 - 2023-03-05</a></h3><h4 id="added-2"><a href="#added-2">Added</a></h4>
+<h3 id="v0291---2023-03-05"><a href="#v0291---2023-03-05">v0.29.1 - 2023-03-05</a></h3><h4 id="added-3"><a href="#added-3">Added</a></h4>
 <ul>
 <li>feat(bindings/python): Add basic IO support (#1464)</li>
 <li>feat(binding/node.js): basic IO (#1416)</li>
@@ -188,13 +237,13 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refactor: Promote operator as a mod for further refactor (#1479)</li>
 </ul>
-<h4 id="docs-3"><a href="#docs-3">Docs</a></h4>
+<h4 id="docs-4"><a href="#docs-4">Docs</a></h4>
 <ul>
 <li>docs: Add convert from m*n to m+n (#1454)</li>
 <li>docs: Polish comments for public types (#1455)</li>
 <li>docs: Add discord chat link (#1474)</li>
 </ul>
-<h4 id="chore-3"><a href="#chore-3">Chore</a></h4>
+<h4 id="chore-4"><a href="#chore-4">Chore</a></h4>
 <ul>
 <li>chore: fix typo (#1456)</li>
 <li>chore: fix typo (#1459)</li>
@@ -202,7 +251,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(bindings/nodjes): Don’t check-in binaries (#1469)</li>
 <li>chore(binding/nodejs): specific package manager version with hash (#1470)</li>
 </ul>
-<h3 id="v0290---2023-03-01"><a href="#v0290---2023-03-01">v0.29.0 - 2023-03-01</a></h3><h4 id="added-3"><a href="#added-3">Added</a></h4>
+<h3 id="v0290---2023-03-01"><a href="#v0290---2023-03-01">v0.29.0 - 2023-03-01</a></h3><h4 id="added-4"><a href="#added-4">Added</a></h4>
 <ul>
 <li>RFC-1420: Object Writer (#1420)</li>
 <li>feat: oss backend support http protocol (#1432)</li>
@@ -217,16 +266,16 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Polish the implement details for Writer (#1445)</li>
 <li>refactor: Remove <code>io::input</code> and Rename <code>io::output</code> to <code>oio</code> (#1446)</li>
 </ul>
-<h4 id="fixed-2"><a href="#fixed-2">Fixed</a></h4>
+<h4 id="fixed-3"><a href="#fixed-3">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Fix part number for AWS S3 (#1450)</li>
 </ul>
-<h4 id="ci-4"><a href="#ci-4">CI</a></h4>
+<h4 id="ci-5"><a href="#ci-5">CI</a></h4>
 <ul>
 <li>ci: Consistently apply license header (#1411)</li>
 <li>ci: add typos check (#1425)</li>
 </ul>
-<h4 id="docs-4"><a href="#docs-4">Docs</a></h4>
+<h4 id="docs-5"><a href="#docs-5">Docs</a></h4>
 <ul>
 <li>docs: Add services-dashmap feature (#1404)</li>
 <li>docs: Fix incorrect indent for title (#1405)</li>
@@ -235,13 +284,13 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>docs: Add tutorial of building a duck storage service (#1410)</li>
 <li>docs: Add a basic object example (#1422)</li>
 </ul>
-<h4 id="chore-4"><a href="#chore-4">Chore</a></h4>
+<h4 id="chore-5"><a href="#chore-5">Chore</a></h4>
 <ul>
 <li>chore: typo fix (#1418)</li>
 <li>chore: Make license check happy (#1423)</li>
 <li>chore: typo-fix (#1434)</li>
 </ul>
-<h3 id="v0280---2023-02-22"><a href="#v0280---2023-02-22">v0.28.0 - 2023-02-22</a></h3><h4 id="added-4"><a href="#added-4">Added</a></h4>
+<h3 id="v0280---2023-02-22"><a href="#v0280---2023-02-22">v0.28.0 - 2023-02-22</a></h3><h4 id="added-5"><a href="#added-5">Added</a></h4>
 <ul>
 <li>feat: add dashmap support (#1390)</li>
 </ul>
@@ -252,12 +301,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Trigger panic if users try to visit not fetched metadata (#1399)</li>
 <li>refactor: Polish the implement of Query Based Metadata Cache (#1400)</li>
 </ul>
-<h4 id="docs-5"><a href="#docs-5">Docs</a></h4>
+<h4 id="docs-6"><a href="#docs-6">Docs</a></h4>
 <ul>
 <li>RFC-1391: Object Metadataer (#1391)</li>
 <li>RFC-1398: Query Based Metadata (#1398)</li>
 </ul>
-<h3 id="v0272---2023-02-20"><a href="#v0272---2023-02-20">v0.27.2 - 2023-02-20</a></h3><h4 id="added-5"><a href="#added-5">Added</a></h4>
+<h3 id="v0272---2023-02-20"><a href="#v0272---2023-02-20">v0.27.2 - 2023-02-20</a></h3><h4 id="added-6"><a href="#added-6">Added</a></h4>
 <ul>
 <li>feat: Add batch API for Accessor (#1339)</li>
 <li>feat: add Content-Disposition for inner API (#1347)</li>
@@ -277,12 +326,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Cleanup duplicated code (#1373)</li>
 <li>refactor: Cleanup some not needed error context (#1374)</li>
 </ul>
-<h4 id="docs-6"><a href="#docs-6">Docs</a></h4>
+<h4 id="docs-7"><a href="#docs-7">Docs</a></h4>
 <ul>
 <li>docs: Fix broken links (#1344)</li>
 <li>docs: clarify about opendal user defined client (#1356)</li>
 </ul>
-<h4 id="fixed-3"><a href="#fixed-3">Fixed</a></h4>
+<h4 id="fixed-4"><a href="#fixed-4">Fixed</a></h4>
 <ul>
 <li>fix(webhdfs): should prepend http:// scheme (#1354)</li>
 </ul>
@@ -292,7 +341,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>ci: Only run service test on changing (#1363)</li>
 <li>ci: run tests with nextest (#1370)</li>
 </ul>
-<h3 id="v0271---2023-02-13"><a href="#v0271---2023-02-13">v0.27.1 - 2023-02-13</a></h3><h4 id="added-6"><a href="#added-6">Added</a></h4>
+<h3 id="v0271---2023-02-13"><a href="#v0271---2023-02-13">v0.27.1 - 2023-02-13</a></h3><h4 id="added-7"><a href="#added-7">Added</a></h4>
 <ul>
 <li>feat: Add username and password support for WebDAV (#1323)</li>
 <li>ci: Add test case for webdav with basic auth (#1327)</li>
@@ -305,11 +354,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(deps): update moka requirement from 0.9 to 0.10 (#1331)</li>
 <li>chore(deps): update rocksdb requirement from 0.19 to 0.20 (#1332)</li>
 </ul>
-<h4 id="fixed-4"><a href="#fixed-4">Fixed</a></h4>
+<h4 id="fixed-5"><a href="#fixed-5">Fixed</a></h4>
 <ul>
 <li>fix(services/oss,s3): Metadata should be marked as complete (#1335)</li>
 </ul>
-<h3 id="v0270---2023-02-11"><a href="#v0270---2023-02-11">v0.27.0 - 2023-02-11</a></h3><h4 id="added-7"><a href="#added-7">Added</a></h4>
+<h3 id="v0270---2023-02-11"><a href="#v0270---2023-02-11">v0.27.0 - 2023-02-11</a></h3><h4 id="added-8"><a href="#added-8">Added</a></h4>
 <ul>
 <li>feat: Add Retryable Pager Support (#1304)</li>
 <li>feat: Add Sled support (#1305)</li>
@@ -325,18 +374,18 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>deps: remove unused deps (#1321)</li>
 <li>refactor: Extract scan as a new API and remove ListStyle (#1324)</li>
 </ul>
-<h4 id="docs-7"><a href="#docs-7">Docs</a></h4>
+<h4 id="docs-8"><a href="#docs-8">Docs</a></h4>
 <ul>
 <li>docs: Add risingwave in projects (#1322)</li>
 </ul>
-<h4 id="fixed-5"><a href="#fixed-5">Fixed</a></h4>
+<h4 id="fixed-6"><a href="#fixed-6">Fixed</a></h4>
 <ul>
 <li>ci: Fix dev container Dockerfile (#1298)</li>
 <li>fix: Rocksdb’s scheme not output correctly (#1300)</li>
 <li>chore: fix name typo in oss backend (#1316)</li>
 <li>chore: Add typos-cli and fix typos (#1320)</li>
 </ul>
-<h3 id="v0262---2023-02-07"><a href="#v0262---2023-02-07">v0.26.2 - 2023-02-07</a></h3><h4 id="added-8"><a href="#added-8">Added</a></h4>
+<h3 id="v0262---2023-02-07"><a href="#v0262---2023-02-07">v0.26.2 - 2023-02-07</a></h3><h4 id="added-9"><a href="#added-9">Added</a></h4>
 <ul>
 <li>feat: Add ChaosLayer to inject errors into underlying services (#1287)</li>
 <li>feat: Implement retry reader (#1291)</li>
@@ -348,12 +397,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Split CompleteReaderLayer from TypeEraserLayer (#1290)</li>
 <li>refactor(services/fs): Remove not needed generic (#1292)</li>
 </ul>
-<h4 id="docs-8"><a href="#docs-8">Docs</a></h4>
+<h4 id="docs-9"><a href="#docs-9">Docs</a></h4>
 <ul>
 <li>docs: fix typo (#1285)</li>
 <li>docs: Polish docs for better reading (#1288)</li>
 </ul>
-<h4 id="fixed-6"><a href="#fixed-6">Fixed</a></h4>
+<h4 id="fixed-7"><a href="#fixed-7">Fixed</a></h4>
 <ul>
 <li>fix: FsBuilder can’t be used with empty root anymore (#1293)</li>
 <li>fix: Fix retry happened in seek’s read ahead logic (#1294)</li>
@@ -362,14 +411,14 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refactor: Remove not used layer subdir (#1280)</li>
 </ul>
-<h4 id="docs-9"><a href="#docs-9">Docs</a></h4>
+<h4 id="docs-10"><a href="#docs-10">Docs</a></h4>
 <ul>
 <li>docs: Add v0.26 upgrade guide (#1276)</li>
 <li>docs: Add feature sets in services (#1277)</li>
 <li>docs: Migrate all docs in rustdoc instead (#1281)</li>
 <li>docs: Fix index page not redirected (#1282)</li>
 </ul>
-<h3 id="v0260---2023-02-04"><a href="#v0260---2023-02-04">v0.26.0 - 2023-02-04</a></h3><h4 id="added-9"><a href="#added-9">Added</a></h4>
+<h3 id="v0260---2023-02-04"><a href="#v0260---2023-02-04">v0.26.0 - 2023-02-04</a></h3><h4 id="added-10"><a href="#added-10">Added</a></h4>
 <ul>
 <li>feat: Add benchmarks for blocking_seek operations (#1258)</li>
 <li>feat: add dev container (#1261)</li>
@@ -383,7 +432,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Don’t expose services mod directly (#1271)</li>
 <li>refactor: Polish Builder API (#1272)</li>
 </ul>
-<h3 id="v0252---2023-01-30"><a href="#v0252---2023-01-30">v0.25.2 - 2023-01-30</a></h3><h4 id="added-10"><a href="#added-10">Added</a></h4>
+<h3 id="v0252---2023-01-30"><a href="#v0252---2023-01-30">v0.25.2 - 2023-01-30</a></h3><h4 id="added-11"><a href="#added-11">Added</a></h4>
 <ul>
 <li>feat: Add basic object_store support (#1243)</li>
 <li>feat: Implement webdav support (#1246)</li>
@@ -394,18 +443,18 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refacor(services/fs): Make normalized path check optional (#1242)</li>
 </ul>
-<h4 id="docs-10"><a href="#docs-10">Docs</a></h4>
+<h4 id="docs-11"><a href="#docs-11">Docs</a></h4>
 <ul>
 <li>docs(http): remove out-dated comments (#1240)</li>
 <li>docs: Add bindings in README (#1244)</li>
 <li>docs: Add docs for webdav and http services (#1248)</li>
 <li>docs: Add webdav in lib docs (#1249)</li>
 </ul>
-<h4 id="fixed-7"><a href="#fixed-7">Fixed</a></h4>
+<h4 id="fixed-8"><a href="#fixed-8">Fixed</a></h4>
 <ul>
 <li>fix(services/ghac): Fix log message for ghac_upload in write (#1239)</li>
 </ul>
-<h3 id="v0251---2023-01-27"><a href="#v0251---2023-01-27">v0.25.1 - 2023-01-27</a></h3><h4 id="added-11"><a href="#added-11">Added</a></h4>
+<h3 id="v0251---2023-01-27"><a href="#v0251---2023-01-27">v0.25.1 - 2023-01-27</a></h3><h4 id="added-12"><a href="#added-12">Added</a></h4>
 <ul>
 <li>ci: Setup benchmark workflow (#1200)</li>
 <li>feat: Let’s try play with python (#1205)</li>
@@ -422,11 +471,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>cleanup: Move testdata into tests/data (#1228)</li>
 <li>refactor(layers/metrics): Defer initiation of error counters (#1232)</li>
 </ul>
-<h4 id="fixed-8"><a href="#fixed-8">Fixed</a></h4>
+<h4 id="fixed-9"><a href="#fixed-9">Fixed</a></h4>
 <ul>
 <li>fix: Retry for read and write should at ObjectReader level (#1211)</li>
 </ul>
-<h3 id="v0250---2023-01-18"><a href="#v0250---2023-01-18">v0.25.0 - 2023-01-18</a></h3><h4 id="added-12"><a href="#added-12">Added</a></h4>
+<h3 id="v0250---2023-01-18"><a href="#v0250---2023-01-18">v0.25.0 - 2023-01-18</a></h3><h4 id="added-13"><a href="#added-13">Added</a></h4>
 <ul>
 <li>feat: Add dns cache for std dns resolver (#1191)</li>
 <li>feat: Allow setting http client that built from external (#1192)</li>
@@ -438,21 +487,21 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Avoid calling detect region if we know the region (#1188)</li>
 <li>chore: ensure minimal version buildable (#1193)</li>
 </ul>
-<h3 id="v0246---2023-01-12"><a href="#v0246---2023-01-12">v0.24.6 - 2023-01-12</a></h3><h4 id="added-13"><a href="#added-13">Added</a></h4>
+<h3 id="v0246---2023-01-12"><a href="#v0246---2023-01-12">v0.24.6 - 2023-01-12</a></h3><h4 id="added-14"><a href="#added-14">Added</a></h4>
 <ul>
 <li>feat: implement tokio::io::{AsyncRead, AsyncSeek} for ObjectReader (#1175)</li>
 <li>feat(services/hdfs): Evaluating the new async implementation (#1176)</li>
 <li>feat(services/ghac): Handling too many requests error (#1181)</li>
 </ul>
-<h4 id="fixed-9"><a href="#fixed-9">Fixed</a></h4>
+<h4 id="fixed-10"><a href="#fixed-10">Fixed</a></h4>
 <ul>
 <li>doc: fix name change in README (#1179)</li>
 </ul>
-<h3 id="v0245---2023-01-09"><a href="#v0245---2023-01-09">v0.24.5 - 2023-01-09</a></h3><h4 id="fixed-10"><a href="#fixed-10">Fixed</a></h4>
+<h3 id="v0245---2023-01-09"><a href="#v0245---2023-01-09">v0.24.5 - 2023-01-09</a></h3><h4 id="fixed-11"><a href="#fixed-11">Fixed</a></h4>
 <ul>
 <li>fix(services/memcached): TcpStream should only accept host:port (#1170)</li>
 </ul>
-<h3 id="v0244---2023-01-09"><a href="#v0244---2023-01-09">v0.24.4 - 2023-01-09</a></h3><h4 id="added-14"><a href="#added-14">Added</a></h4>
+<h3 id="v0244---2023-01-09"><a href="#v0244---2023-01-09">v0.24.4 - 2023-01-09</a></h3><h4 id="added-15"><a href="#added-15">Added</a></h4>
 <ul>
 <li>feat: Add presign endpoint option for OSS (#1135)</li>
 <li>feat: Reset state while returning error so that we can retry IO (#1166)</li>
@@ -461,11 +510,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>chore(deps): update base64 requirement from 0.20 to 0.21 (#1164)</li>
 </ul>
-<h4 id="fixed-11"><a href="#fixed-11">Fixed</a></h4>
+<h4 id="fixed-12"><a href="#fixed-12">Fixed</a></h4>
 <ul>
 <li>fix: Memcached can’t work on windows (#1165)</li>
 </ul>
-<h3 id="v0243---2023-01-09"><a href="#v0243---2023-01-09">v0.24.3 - 2023-01-09</a></h3><h4 id="added-15"><a href="#added-15">Added</a></h4>
+<h3 id="v0243---2023-01-09"><a href="#v0243---2023-01-09">v0.24.3 - 2023-01-09</a></h3><h4 id="added-16"><a href="#added-16">Added</a></h4>
 <ul>
 <li>feat: Implement memcached service support (#1161)</li>
 </ul>
@@ -473,16 +522,16 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refactor: Use dep: to make our features more clean (#1153)</li>
 </ul>
-<h4 id="fixed-12"><a href="#fixed-12">Fixed</a></h4>
+<h4 id="fixed-13"><a href="#fixed-13">Fixed</a></h4>
 <ul>
 <li>fix: ghac shall return ObjectAlreadyExists for writing the same path (#1156)</li>
 <li>fix: futures read_to_end will lead to performance regression (#1158)</li>
 </ul>
-<h3 id="v0241---2023-01-08"><a href="#v0241---2023-01-08">v0.24.1 - 2023-01-08</a></h3><h4 id="fixed-13"><a href="#fixed-13">Fixed</a></h4>
+<h3 id="v0241---2023-01-08"><a href="#v0241---2023-01-08">v0.24.1 - 2023-01-08</a></h3><h4 id="fixed-14"><a href="#fixed-14">Fixed</a></h4>
 <ul>
 <li>fix: Allow range_read to be retired (#1149)</li>
 </ul>
-<h3 id="v0240---2023-01-07"><a href="#v0240---2023-01-07">v0.24.0 - 2023-01-07</a></h3><h4 id="added-16"><a href="#added-16">Added</a></h4>
+<h3 id="v0240---2023-01-07"><a href="#v0240---2023-01-07">v0.24.0 - 2023-01-07</a></h3><h4 id="added-17"><a href="#added-17">Added</a></h4>
 <ul>
 <li>Add support for SAS tokens in Azure blob storage (#1124)</li>
 <li>feat: Add github action cache service support (#1111)</li>
@@ -500,60 +549,60 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Remove open related APIs (#1129)</li>
 <li>refactor: Merge and cleanup io &amp; io_util modules (#1136)</li>
 </ul>
-<h4 id="fixed-14"><a href="#fixed-14">Fixed</a></h4>
+<h4 id="fixed-15"><a href="#fixed-15">Fixed</a></h4>
 <ul>
 <li>ci: Fix build for oay and oli (#1097)</li>
 <li>fix: Fix rustls support for suppaftp (#1102)</li>
 <li>fix(services/ghac): Fix pkg version not used correctly (#1125)</li>
 </ul>
-<h3 id="v0230---2022-12-22"><a href="#v0230---2022-12-22">v0.23.0 - 2022-12-22</a></h3><h4 id="added-17"><a href="#added-17">Added</a></h4>
+<h3 id="v0230---2022-12-22"><a href="#v0230---2022-12-22">v0.23.0 - 2022-12-22</a></h3><h4 id="added-18"><a href="#added-18">Added</a></h4>
 <ul>
 <li>feat: Implement object handler so that we can do seek on file (#1091)</li>
 <li>feat: Implement blocking for hdfs (#1092)</li>
 <li>feat(services/hdfs): Implement open and blocking open (#1093)</li>
 <li>docs: Add mozilla/sccache into projects (#1094)</li>
 </ul>
-<h3 id="v0226---2022-12-20"><a href="#v0226---2022-12-20">v0.22.6 - 2022-12-20</a></h3><h4 id="added-18"><a href="#added-18">Added</a></h4>
+<h3 id="v0226---2022-12-20"><a href="#v0226---2022-12-20">v0.22.6 - 2022-12-20</a></h3><h4 id="added-19"><a href="#added-19">Added</a></h4>
 <ul>
 <li>feat(io): make BlockingBytesRead Send + Sync (#1083)</li>
 <li>feat(fs): skip seek if offset is 0 (#1082)</li>
 <li>RFC-1085: Object Handler (#1085)</li>
 <li>feat(services/s3,gcs): Allow accepting signer directly (#1087)</li>
 </ul>
-<h3 id="v0225---2022-12-13"><a href="#v0225---2022-12-13">v0.22.5 - 2022-12-13</a></h3><h4 id="added-19"><a href="#added-19">Added</a></h4>
+<h3 id="v0225---2022-12-13"><a href="#v0225---2022-12-13">v0.22.5 - 2022-12-13</a></h3><h4 id="added-20"><a href="#added-20">Added</a></h4>
 <ul>
 <li>feat: Add service account support for gcs (#1076)</li>
 </ul>
-<h3 id="v0224---2022-12-13"><a href="#v0224---2022-12-13">v0.22.4 - 2022-12-13</a></h3><h4 id="added-20"><a href="#added-20">Added</a></h4>
+<h3 id="v0224---2022-12-13"><a href="#v0224---2022-12-13">v0.22.4 - 2022-12-13</a></h3><h4 id="added-21"><a href="#added-21">Added</a></h4>
 <ul>
 <li>improve blocking read use read_to_end (#1072)</li>
 <li>feat(services/gcs): Fully implement default credential support (#1073)</li>
 </ul>
-<h4 id="fixed-15"><a href="#fixed-15">Fixed</a></h4>
+<h4 id="fixed-16"><a href="#fixed-16">Fixed</a></h4>
 <ul>
 <li>fix: read a large range without error and add test (#1068)</li>
 <li>fix(services/oss): Enable standard behavior for oss range (#1070)</li>
 </ul>
-<h3 id="v0223---2022-12-11"><a href="#v0223---2022-12-11">v0.22.3 - 2022-12-11</a></h3><h4 id="added-21"><a href="#added-21">Added</a></h4>
+<h3 id="v0223---2022-12-11"><a href="#v0223---2022-12-11">v0.22.3 - 2022-12-11</a></h3><h4 id="added-22"><a href="#added-22">Added</a></h4>
 <ul>
 <li>feat(layers/metrics): Merge error and failure counters together (#1058)</li>
 <li>feat: Set MSRV to 1.60 (#1060)</li>
 <li>feat: Add unwind safe flag for operator (#1061)</li>
 <li>feat(azblob): Add build from connection string support (#1064)</li>
 </ul>
-<h4 id="fixed-16"><a href="#fixed-16">Fixed</a></h4>
+<h4 id="fixed-17"><a href="#fixed-17">Fixed</a></h4>
 <ul>
 <li>fix(services/moka): Don’t print all content in cache (#1057)</li>
 </ul>
-<h3 id="v0222---2022-12-07"><a href="#v0222---2022-12-07">v0.22.2 - 2022-12-07</a></h3><h4 id="added-22"><a href="#added-22">Added</a></h4>
+<h3 id="v0222---2022-12-07"><a href="#v0222---2022-12-07">v0.22.2 - 2022-12-07</a></h3><h4 id="added-23"><a href="#added-23">Added</a></h4>
 <ul>
 <li>feat(presign): support presign head method for s3 and oss (#1049)</li>
 </ul>
-<h3 id="v0221---2022-12-05"><a href="#v0221---2022-12-05">v0.22.1 - 2022-12-05</a></h3><h4 id="fixed-17"><a href="#fixed-17">Fixed</a></h4>
+<h3 id="v0221---2022-12-05"><a href="#v0221---2022-12-05">v0.22.1 - 2022-12-05</a></h3><h4 id="fixed-18"><a href="#fixed-18">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Allow disable loading from imds_v2 and assume_role (#1044)</li>
 </ul>
-<h3 id="v0220---2022-12-05"><a href="#v0220---2022-12-05">v0.22.0 - 2022-12-05</a></h3><h4 id="added-23"><a href="#added-23">Added</a></h4>
+<h3 id="v0220---2022-12-05"><a href="#v0220---2022-12-05">v0.22.0 - 2022-12-05</a></h3><h4 id="added-24"><a href="#added-24">Added</a></h4>
 <ul>
 <li>feat: improve temp file organization when enable atomic write in fs (#1017)</li>
 <li>feat: Allow configure LoggingLayer’s level (#1021)</li>
@@ -566,20 +615,20 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Merge metadata and content cache together (#1020)</li>
 <li>refactor(layer/cache): Allow users implement cache by themselves (#1040)</li>
 </ul>
-<h4 id="fixed-18"><a href="#fixed-18">Fixed</a></h4>
+<h4 id="fixed-19"><a href="#fixed-19">Fixed</a></h4>
 <ul>
 <li>fix(services/fs): Make sure writing file is truncated (#1036)</li>
 </ul>
-<h3 id="v0212---2022-11-27"><a href="#v0212---2022-11-27">v0.21.2 - 2022-11-27</a></h3><h4 id="added-24"><a href="#added-24">Added</a></h4>
+<h3 id="v0212---2022-11-27"><a href="#v0212---2022-11-27">v0.21.2 - 2022-11-27</a></h3><h4 id="added-25"><a href="#added-25">Added</a></h4>
 <ul>
 <li>feat: Add azdfs support (#1009)</li>
 <li>feat: Set MSRV of opendal to 1.60 (#1012)</li>
 </ul>
-<h4 id="docs-11"><a href="#docs-11">Docs</a></h4>
+<h4 id="docs-12"><a href="#docs-12">Docs</a></h4>
 <ul>
 <li>docs: Fix docs for azdfs service (#1010)</li>
 </ul>
-<h3 id="v0211---2022-11-26"><a href="#v0211---2022-11-26">v0.21.1 - 2022-11-26</a></h3><h4 id="added-25"><a href="#added-25">Added</a></h4>
+<h3 id="v0211---2022-11-26"><a href="#v0211---2022-11-26">v0.21.1 - 2022-11-26</a></h3><h4 id="added-26"><a href="#added-26">Added</a></h4>
 <ul>
 <li>feat: Export ObjectLister as public type (#1006)</li>
 </ul>
@@ -587,7 +636,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>deps: Remove not used thiserror and num-trait (#1005)</li>
 </ul>
-<h3 id="v0210---2022-11-25"><a href="#v0210---2022-11-25">v0.21.0 - 2022-11-25</a></h3><h4 id="added-26"><a href="#added-26">Added</a></h4>
+<h3 id="v0210---2022-11-25"><a href="#v0210---2022-11-25">v0.21.0 - 2022-11-25</a></h3><h4 id="added-27"><a href="#added-27">Added</a></h4>
 <ul>
 <li>docs: Add greptimedb and mars into projects (#975)</li>
 <li>RFC-0977: Refactor Error (#977)</li>
@@ -613,21 +662,21 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Move ObjectEntry and ObjectPage into raw (#999)</li>
 <li>refactor: Accept Operator instead of <code>Arc&lt;dyn Accessor&gt;</code> (#1001)</li>
 </ul>
-<h4 id="fixed-19"><a href="#fixed-19">Fixed</a></h4>
+<h4 id="fixed-20"><a href="#fixed-20">Fixed</a></h4>
 <ul>
 <li>fix: RetryAccessor is too verbose (#980)</li>
 </ul>
-<h3 id="v0201---2022-11-18"><a href="#v0201---2022-11-18">v0.20.1 - 2022-11-18</a></h3><h4 id="added-27"><a href="#added-27">Added</a></h4>
+<h3 id="v0201---2022-11-18"><a href="#v0201---2022-11-18">v0.20.1 - 2022-11-18</a></h3><h4 id="added-28"><a href="#added-28">Added</a></h4>
 <ul>
 <li>feat: Implement blocking operations for cache services (#970)</li>
 </ul>
-<h4 id="fixed-20"><a href="#fixed-20">Fixed</a></h4>
+<h4 id="fixed-21"><a href="#fixed-21">Fixed</a></h4>
 <ul>
 <li>fix: Use std Duration as args instead (#966)</li>
 <li>build: Make opendal buildable on 1.60 (#968)</li>
 <li>fix: Avoid cache missing after write (#971)</li>
 </ul>
-<h3 id="v0200---2022-11-17"><a href="#v0200---2022-11-17">v0.20.0 - 2022-11-17</a></h3><h4 id="added-28"><a href="#added-28">Added</a></h4>
+<h3 id="v0200---2022-11-17"><a href="#v0200---2022-11-17">v0.20.0 - 2022-11-17</a></h3><h4 id="added-29"><a href="#added-29">Added</a></h4>
 <ul>
 <li>RFC-0926: Object Reader (#926)</li>
 <li>feat: Implement Object Reader (#928)</li>
@@ -651,12 +700,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Polish bytes range (#950)</li>
 <li>refactor: Use simplified kv adapter instead (#959)</li>
 </ul>
-<h4 id="fixed-21"><a href="#fixed-21">Fixed</a></h4>
+<h4 id="fixed-22"><a href="#fixed-22">Fixed</a></h4>
 <ul>
 <li>fix(ops): Fix suffix range behavior of bytes range (#942)</li>
 <li>fix: Fix cache path not used correctly (#958)</li>
 </ul>
-<h3 id="v0198---2022-11-13"><a href="#v0198---2022-11-13">v0.19.8 - 2022-11-13</a></h3><h4 id="added-29"><a href="#added-29">Added</a></h4>
+<h3 id="v0198---2022-11-13"><a href="#v0198---2022-11-13">v0.19.8 - 2022-11-13</a></h3><h4 id="added-30"><a href="#added-30">Added</a></h4>
 <ul>
 <li>feat(services/moka): Use entry’s bytes as capacity weigher (#914)</li>
 <li>feat: Implement rocksdb service (#913)</li>
@@ -667,11 +716,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Remove deprecated features (#920)</li>
 <li>refactor: use moka::sync::SegmentedCache (#921)</li>
 </ul>
-<h4 id="fixed-22"><a href="#fixed-22">Fixed</a></h4>
+<h4 id="fixed-23"><a href="#fixed-23">Fixed</a></h4>
 <ul>
 <li>fix(http): Check already read size before returning (#919)</li>
 </ul>
-<h3 id="v0197---2022-10-31"><a href="#v0197---2022-10-31">v0.19.7 - 2022-10-31</a></h3><h4 id="added-30"><a href="#added-30">Added</a></h4>
+<h3 id="v0197---2022-10-31"><a href="#v0197---2022-10-31">v0.19.7 - 2022-10-31</a></h3><h4 id="added-31"><a href="#added-31">Added</a></h4>
 <ul>
 <li>feat: Implement content type support for stat (#891)</li>
 </ul>
@@ -680,21 +729,21 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor(layers/metrics): Holding all metrics handlers to avoid lock (#894)</li>
 <li>refactor(layers/metrics): Only update metrics while dropping readers (#896)</li>
 </ul>
-<h3 id="v0196---2022-10-25"><a href="#v0196---2022-10-25">v0.19.6 - 2022-10-25</a></h3><h4 id="fixed-23"><a href="#fixed-23">Fixed</a></h4>
+<h3 id="v0196---2022-10-25"><a href="#v0196---2022-10-25">v0.19.6 - 2022-10-25</a></h3><h4 id="fixed-24"><a href="#fixed-24">Fixed</a></h4>
 <ul>
 <li>fix: Metrics blocking reader doesn’t handle operation correctly (#887)</li>
 </ul>
-<h3 id="v0195---2022-10-24"><a href="#v0195---2022-10-24">v0.19.5 - 2022-10-24</a></h3><h4 id="added-31"><a href="#added-31">Added</a></h4>
+<h3 id="v0195---2022-10-24"><a href="#v0195---2022-10-24">v0.19.5 - 2022-10-24</a></h3><h4 id="added-32"><a href="#added-32">Added</a></h4>
 <ul>
 <li>feat: add a feature named trust-dns (#879)</li>
 <li>feat: implement write_with (#880)</li>
 <li>feat: <code>content-type</code> configuration (#878)</li>
 </ul>
-<h4 id="fixed-24"><a href="#fixed-24">Fixed</a></h4>
+<h4 id="fixed-25"><a href="#fixed-25">Fixed</a></h4>
 <ul>
 <li>fix: Allow forward layers’ acesser operations to inner (#884)</li>
 </ul>
-<h3 id="v0194---2022-10-15"><a href="#v0194---2022-10-15">v0.19.4 - 2022-10-15</a></h3><h4 id="added-32"><a href="#added-32">Added</a></h4>
+<h3 id="v0194---2022-10-15"><a href="#v0194---2022-10-15">v0.19.4 - 2022-10-15</a></h3><h4 id="added-33"><a href="#added-33">Added</a></h4>
 <ul>
 <li>feat: Improve into_stream by reduce zero byte fill (#864)</li>
 <li>debug: Add log for sync http client (#865)</li>
@@ -707,11 +756,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: replace md5 with md-5 (#862)</li>
 <li>refactor: replace the hard code to X_AMZ_BUCKET_REGION constant (#866)</li>
 </ul>
-<h3 id="v0193---2022-10-13"><a href="#v0193---2022-10-13">v0.19.3 - 2022-10-13</a></h3><h4 id="fixed-25"><a href="#fixed-25">Fixed</a></h4>
+<h3 id="v0193---2022-10-13"><a href="#v0193---2022-10-13">v0.19.3 - 2022-10-13</a></h3><h4 id="fixed-26"><a href="#fixed-26">Fixed</a></h4>
 <ul>
 <li>fix: Retry for write is not implemented correctly (#860)</li>
 </ul>
-<h3 id="v0192---2022-10-13"><a href="#v0192---2022-10-13">v0.19.2 - 2022-10-13</a></h3><h4 id="added-33"><a href="#added-33">Added</a></h4>
+<h3 id="v0192---2022-10-13"><a href="#v0192---2022-10-13">v0.19.2 - 2022-10-13</a></h3><h4 id="added-34"><a href="#added-34">Added</a></h4>
 <ul>
 <li>feat(experiment): Allow user to config http connection pool (#843)</li>
 <li>feat: Add concurrent limit layer (#848)</li>
@@ -719,7 +768,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>feat: Implement service for moka (#852)</li>
 <li>docs: Add docs for moka service and concurrent limit layer (#857)</li>
 </ul>
-<h3 id="v0191---2022-10-11"><a href="#v0191---2022-10-11">v0.19.1 - 2022-10-11</a></h3><h4 id="added-34"><a href="#added-34">Added</a></h4>
+<h3 id="v0191---2022-10-11"><a href="#v0191---2022-10-11">v0.19.1 - 2022-10-11</a></h3><h4 id="added-35"><a href="#added-35">Added</a></h4>
 <ul>
 <li>feat: Allow retry read and write (#826)</li>
 <li>feat: Convert interrupted error to permanent after retry (#827)</li>
@@ -732,12 +781,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>test: accelerate behaviour test <code>test_list_rich_dir</code> (#828)</li>
 </ul>
-<h4 id="fixed-26"><a href="#fixed-26">Fixed</a></h4>
+<h4 id="fixed-27"><a href="#fixed-27">Fixed</a></h4>
 <ul>
 <li>fix: ObjectEntry returned in batch operator doesn’t have correct accessor (#839)</li>
 <li>fix: Accessor in layers not set correctly (#840)</li>
 </ul>
-<h3 id="v0190---2022-10-08"><a href="#v0190---2022-10-08">v0.19.0 - 2022-10-08</a></h3><h4 id="added-35"><a href="#added-35">Added</a></h4>
+<h3 id="v0190---2022-10-08"><a href="#v0190---2022-10-08">v0.19.0 - 2022-10-08</a></h3><h4 id="added-36"><a href="#added-36">Added</a></h4>
 <ul>
 <li>feat: Implement object page stream for services like s3 (#787)</li>
 <li>RFC-0793: Generic KV Services (#793)</li>
@@ -759,14 +808,14 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Remove deprecated type aliases (#819)</li>
 <li>test: list rich dir (#820)</li>
 </ul>
-<h4 id="fixed-27"><a href="#fixed-27">Fixed</a></h4>
+<h4 id="fixed-28"><a href="#fixed-28">Fixed</a></h4>
 <ul>
 <li>fix(services/redis): MATCH can’t handle correctly (#803)</li>
 <li>fix: Disable ipfs redirection (#809)</li>
 <li>fix(services/ipfs): Use ipfs files API to copy data (#811)</li>
 <li>fix(services/hdfs): Allow retrying would block (#815)</li>
 </ul>
-<h3 id="v0182---2022-10-01"><a href="#v0182---2022-10-01">v0.18.2 - 2022-10-01</a></h3><h4 id="added-36"><a href="#added-36">Added</a></h4>
+<h3 id="v0182---2022-10-01"><a href="#v0182---2022-10-01">v0.18.2 - 2022-10-01</a></h3><h4 id="added-37"><a href="#added-37">Added</a></h4>
 <ul>
 <li>feat: Enable retry layer by default (#781)</li>
 </ul>
@@ -775,16 +824,16 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>ci: Enable IPFS NoFecth to avoid networking timeout (#780)</li>
 <li>ci: Build all feature in release to prevent build failure under release profile (#783)</li>
 </ul>
-<h4 id="fixed-28"><a href="#fixed-28">Fixed</a></h4>
+<h4 id="fixed-29"><a href="#fixed-29">Fixed</a></h4>
 <ul>
 <li>fix: Fix build error under release profile (#782)</li>
 </ul>
-<h3 id="v0181---2022-10-01"><a href="#v0181---2022-10-01">v0.18.1 - 2022-10-01</a></h3><h4 id="fixed-29"><a href="#fixed-29">Fixed</a></h4>
+<h3 id="v0181---2022-10-01"><a href="#v0181---2022-10-01">v0.18.1 - 2022-10-01</a></h3><h4 id="fixed-30"><a href="#fixed-30">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Content MD5 not set during list (#775)</li>
 <li>test: Add a test for ObjectEntry metadata cache (#776)</li>
 </ul>
-<h3 id="v0180---2022-10-01"><a href="#v0180---2022-10-01">v0.18.0 - 2022-10-01</a></h3><h4 id="added-37"><a href="#added-37">Added</a></h4>
+<h3 id="v0180---2022-10-01"><a href="#v0180---2022-10-01">v0.18.0 - 2022-10-01</a></h3><h4 id="added-38"><a href="#added-38">Added</a></h4>
 <ul>
 <li>feat: Add Metadata Cache Layer (#739)</li>
 <li>feat: Bump reqsign version to 0.5 (#741)</li>
@@ -803,22 +852,22 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(compress): log with trace level instead of debug. (#752)</li>
 <li>refactor: Rename DirXxxx to ObjectXxxx instead (#759)</li>
 </ul>
-<h4 id="fixed-30"><a href="#fixed-30">Fixed</a></h4>
+<h4 id="fixed-31"><a href="#fixed-31">Fixed</a></h4>
 <ul>
 <li>fix(http_util): Disable auto compress and enable http proxy (#731)</li>
 <li>deps: Fix build after bump deps of oli and oay (#766)</li>
 </ul>
-<h3 id="v0174---2022-09-27"><a href="#v0174---2022-09-27">v0.17.4 - 2022-09-27</a></h3><h4 id="fixed-31"><a href="#fixed-31">Fixed</a></h4>
+<h3 id="v0174---2022-09-27"><a href="#v0174---2022-09-27">v0.17.4 - 2022-09-27</a></h3><h4 id="fixed-32"><a href="#fixed-32">Fixed</a></h4>
 <ul>
 <li>fix(http_util): Allow retry more errors (#724)</li>
 <li>fix(services/ftp): Suffix endpoints with default port (#726)</li>
 </ul>
-<h3 id="v0173---2022-09-26"><a href="#v0173---2022-09-26">v0.17.3 - 2022-09-26</a></h3><h4 id="added-38"><a href="#added-38">Added</a></h4>
+<h3 id="v0173---2022-09-26"><a href="#v0173---2022-09-26">v0.17.3 - 2022-09-26</a></h3><h4 id="added-39"><a href="#added-39">Added</a></h4>
 <ul>
 <li>feat: Add SubdirLayer to allowing switch directory (#718)</li>
 <li>feat(layers/retry): Add warning log while retry happened (#721)</li>
 </ul>
-<h4 id="fixed-32"><a href="#fixed-32">Fixed</a></h4>
+<h4 id="fixed-33"><a href="#fixed-33">Fixed</a></h4>
 <ul>
 <li>fix: update metrics on result (#716)</li>
 <li>fix: SubdirLayer should handle dir correctly (#720)</li>
@@ -833,13 +882,13 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: remove <code>enable_secure</code> in FTP service (#709)</li>
 <li>oli: refactor copy implementation (#710)</li>
 </ul>
-<h4 id="fixed-33"><a href="#fixed-33">Fixed</a></h4>
+<h4 id="fixed-34"><a href="#fixed-34">Fixed</a></h4>
 <ul>
 <li>fix: Handle slash normalized false positives properly (#702)</li>
 <li>fix: Tracing is too verbose (#707)</li>
 <li>chore: fix error message in ftp service (#705)</li>
 </ul>
-<h3 id="v0171---2022-09-19"><a href="#v0171---2022-09-19">v0.17.1 - 2022-09-19</a></h3><h4 id="added-39"><a href="#added-39">Added</a></h4>
+<h3 id="v0171---2022-09-19"><a href="#v0171---2022-09-19">v0.17.1 - 2022-09-19</a></h3><h4 id="added-40"><a href="#added-40">Added</a></h4>
 <ul>
 <li>feat: redis service implement (#679)</li>
 <li>feat: Implement AsyncBufRead for IntoReader (#690)</li>
@@ -850,11 +899,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: avoid unnecessary parent creating in Redis service (#692)</li>
 <li>refactor: Refactor HTTP Client to split sending and incoming logic (#695)</li>
 </ul>
-<h4 id="fixed-34"><a href="#fixed-34">Fixed</a></h4>
+<h4 id="fixed-35"><a href="#fixed-35">Fixed</a></h4>
 <ul>
 <li>fix: Handle write data in async way for IPMFS (#694)</li>
 </ul>
-<h3 id="v0170---2022-09-15"><a href="#v0170---2022-09-15">v0.17.0 - 2022-09-15</a></h3><h4 id="added-40"><a href="#added-40">Added</a></h4>
+<h3 id="v0170---2022-09-15"><a href="#v0170---2022-09-15">v0.17.0 - 2022-09-15</a></h3><h4 id="added-41"><a href="#added-41">Added</a></h4>
 <ul>
 <li>RFC: Path In Accessor (#661)</li>
 <li>feat: Implement RFC-0661: Path In Accessor (#664)</li>
@@ -862,13 +911,13 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>feat: make rustls the default tls implementation (#674)</li>
 <li>feat: Implement benches for layers (#681)</li>
 </ul>
-<h4 id="docs-12"><a href="#docs-12">Docs</a></h4>
+<h4 id="docs-13"><a href="#docs-13">Docs</a></h4>
 <ul>
 <li>docs: Add how to implement service docs (#665)</li>
 <li>refactor: update redis support rfc (#676)</li>
 <li>docs: update metrics documentation (#684)</li>
 </ul>
-<h4 id="fixed-35"><a href="#fixed-35">Fixed</a></h4>
+<h4 id="fixed-36"><a href="#fixed-36">Fixed</a></h4>
 <ul>
 <li>fix: Immutable Index Layer could return duplicated paths (#671)</li>
 <li>fix: Remove not needed type parameter for immutable_layer (#677)</li>
@@ -876,7 +925,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>fix: List non-exist dir should return empty (#683)</li>
 <li>fix: Add path validation for fs backend (#685)</li>
 </ul>
-<h3 id="v0160---2022-09-12"><a href="#v0160---2022-09-12">v0.16.0 - 2022-09-12</a></h3><h4 id="added-41"><a href="#added-41">Added</a></h4>
+<h3 id="v0160---2022-09-12"><a href="#v0160---2022-09-12">v0.16.0 - 2022-09-12</a></h3><h4 id="added-42"><a href="#added-42">Added</a></h4>
 <ul>
 <li>feat: Implement tests for read-only services (#634)</li>
 <li>feat(services/ftp): Implemented multi connection (#637)</li>
@@ -899,7 +948,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(deps): Update criterion requirement from 0.3 to 0.4 (#656)</li>
 <li>chore(deps): Update quick-xml requirement from 0.24 to 0.25 (#657)</li>
 </ul>
-<h4 id="docs-13"><a href="#docs-13">Docs</a></h4>
+<h4 id="docs-14"><a href="#docs-14">Docs</a></h4>
 <ul>
 <li>docs: Add docs for ipfs (#649)</li>
 <li>docs: Fix typo (#650)</li>
@@ -909,7 +958,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>RFC-0623: Redis Service (#623)</li>
 </ul>
-<h3 id="v0150---2022-09-05"><a href="#v0150---2022-09-05">v0.15.0 - 2022-09-05</a></h3><h4 id="added-42"><a href="#added-42">Added</a></h4>
+<h3 id="v0150---2022-09-05"><a href="#v0150---2022-09-05">v0.15.0 - 2022-09-05</a></h3><h4 id="added-43"><a href="#added-43">Added</a></h4>
 <ul>
 <li>RFC-0599: Blocking API (#599)</li>
 <li>feat: Add blocking API in Accessor (#604)</li>
@@ -927,20 +976,20 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Extract build_rel_path (#621)</li>
 <li>feat: Rename ipfs to ipmfs to better reflect its naming (#629)</li>
 </ul>
-<h3 id="v0141---2022-08-30"><a href="#v0141---2022-08-30">v0.14.1 - 2022-08-30</a></h3><h4 id="added-43"><a href="#added-43">Added</a></h4>
+<h3 id="v0141---2022-08-30"><a href="#v0141---2022-08-30">v0.14.1 - 2022-08-30</a></h3><h4 id="added-44"><a href="#added-44">Added</a></h4>
 <ul>
 <li>feat: Add IPFS backend (#481)</li>
 <li>refactor: IPFS service cleanup (#590)</li>
 </ul>
-<h4 id="docs-14"><a href="#docs-14">Docs</a></h4>
+<h4 id="docs-15"><a href="#docs-15">Docs</a></h4>
 <ul>
 <li>docs: Add obs in OpenDAL lib docs (#585)</li>
 </ul>
-<h4 id="fixed-36"><a href="#fixed-36">Fixed</a></h4>
+<h4 id="fixed-37"><a href="#fixed-37">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): If input range is <code>0..</code>, don’t insert range header (#592)</li>
 </ul>
-<h3 id="v0140---2022-08-28"><a href="#v0140---2022-08-28">v0.14.0 - 2022-08-28</a></h3><h4 id="added-44"><a href="#added-44">Added</a></h4>
+<h3 id="v0140---2022-08-28"><a href="#v0140---2022-08-28">v0.14.0 - 2022-08-28</a></h3><h4 id="added-45"><a href="#added-45">Added</a></h4>
 <ul>
 <li>RFC-0554: Write Refactor (#554)</li>
 <li>feat: Implement huaweicloud obs service other op support (#557)</li>
@@ -966,22 +1015,22 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refactor: Remove deprecated APIs (#582)</li>
 </ul>
-<h4 id="docs-15"><a href="#docs-15">Docs</a></h4>
+<h4 id="docs-16"><a href="#docs-16">Docs</a></h4>
 <ul>
 <li>docs: Add docs for obs service (#579)</li>
 </ul>
-<h3 id="v0131---2022-08-22"><a href="#v0131---2022-08-22">v0.13.1 - 2022-08-22</a></h3><h4 id="added-45"><a href="#added-45">Added</a></h4>
+<h3 id="v0131---2022-08-22"><a href="#v0131---2022-08-22">v0.13.1 - 2022-08-22</a></h3><h4 id="added-46"><a href="#added-46">Added</a></h4>
 <ul>
 <li>feat: Add walk for BatchOperator (#543)</li>
 <li>feat: Mark Scheme non_exhaustive and extendable (#544)</li>
 <li>feat: Try to limit the max_connections for http client (#545)</li>
 <li>feat: Implement huaweicloud obs service read support (#540)</li>
 </ul>
-<h4 id="docs-16"><a href="#docs-16">Docs</a></h4>
+<h4 id="docs-17"><a href="#docs-17">Docs</a></h4>
 <ul>
 <li>docs: Fix gcs is missing from index (#546)</li>
 </ul>
-<h3 id="v0130---2022-08-17"><a href="#v0130---2022-08-17">v0.13.0 - 2022-08-17</a></h3><h4 id="added-46"><a href="#added-46">Added</a></h4>
+<h3 id="v0130---2022-08-17"><a href="#v0130---2022-08-17">v0.13.0 - 2022-08-17</a></h3><h4 id="added-47"><a href="#added-47">Added</a></h4>
 <ul>
 <li>feat: Refactor metrics and hide under feature layers-metrics (#521)</li>
 <li>feat(layer): Add TracingLayer support (#523)</li>
@@ -995,11 +1044,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refactor: Rewrite retry layer support (#522)</li>
 </ul>
-<h4 id="fixed-37"><a href="#fixed-37">Fixed</a></h4>
+<h4 id="fixed-38"><a href="#fixed-38">Fixed</a></h4>
 <ul>
 <li>fix: Make ProtocolViolation a retryable error (#528)</li>
 </ul>
-<h3 id="v0120---2022-08-12"><a href="#v0120---2022-08-12">v0.12.0 - 2022-08-12</a></h3><h4 id="added-47"><a href="#added-47">Added</a></h4>
+<h3 id="v0120---2022-08-12"><a href="#v0120---2022-08-12">v0.12.0 - 2022-08-12</a></h3><h4 id="added-48"><a href="#added-48">Added</a></h4>
 <ul>
 <li>RFC-0501: New Builder (#501)</li>
 <li>feat: Implement RFC-0501 New Builder (#510)</li>
@@ -1015,7 +1064,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refactor: Remove deprecated struct Metadata (#503)</li>
 </ul>
-<h3 id="v0114---2022-08-02"><a href="#v0114---2022-08-02">v0.11.4 - 2022-08-02</a></h3><h4 id="added-48"><a href="#added-48">Added</a></h4>
+<h3 id="v0114---2022-08-02"><a href="#v0114---2022-08-02">v0.11.4 - 2022-08-02</a></h3><h4 id="added-49"><a href="#added-49">Added</a></h4>
 <ul>
 <li>feat: Support using rustls for TLS (#491)</li>
 </ul>
@@ -1025,11 +1074,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>deps: Lower the requirement of deps (#495)</li>
 <li>Revert “feat: try to support epoll” (#496)</li>
 </ul>
-<h4 id="fixed-38"><a href="#fixed-38">Fixed</a></h4>
+<h4 id="fixed-39"><a href="#fixed-39">Fixed</a></h4>
 <ul>
 <li>fix: Uri encode continuation-token before signing (#494)</li>
 </ul>
-<h4 id="docs-17"><a href="#docs-17">Docs</a></h4>
+<h4 id="docs-18"><a href="#docs-18">Docs</a></h4>
 <ul>
 <li>docs: Add downloads in README (#485)</li>
 <li>docs: Update slogan for OpenDAL (#486)</li>
@@ -1038,7 +1087,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>build: Remove not used features (#472)</li>
 </ul>
-<h4 id="fixed-39"><a href="#fixed-39">Fixed</a></h4>
+<h4 id="fixed-40"><a href="#fixed-40">Fixed</a></h4>
 <ul>
 <li>fix: Disable connection pool as workaround for async runtime hang (#474)</li>
 </ul>
@@ -1049,12 +1098,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(deps): Update metrics requirement from 0.19.0 to 0.20.0 (#462)</li>
 <li>chore(deps): Bump tokio from 1.20.0 to 1.20.1 in /oay (#468)</li>
 </ul>
-<h3 id="v0112---2022-07-19"><a href="#v0112---2022-07-19">v0.11.2 - 2022-07-19</a></h3><h4 id="fixed-40"><a href="#fixed-40">Fixed</a></h4>
+<h3 id="v0112---2022-07-19"><a href="#v0112---2022-07-19">v0.11.2 - 2022-07-19</a></h3><h4 id="fixed-41"><a href="#fixed-41">Fixed</a></h4>
 <ul>
 <li>fix: Service HTTP deosn’t handle dir correctly (#455)</li>
 <li>fix: Service HTTP inserted with wrong key (#457)</li>
 </ul>
-<h3 id="v0111---2022-07-19"><a href="#v0111---2022-07-19">v0.11.1 - 2022-07-19</a></h3><h4 id="added-49"><a href="#added-49">Added</a></h4>
+<h3 id="v0111---2022-07-19"><a href="#v0111---2022-07-19">v0.11.1 - 2022-07-19</a></h3><h4 id="added-50"><a href="#added-50">Added</a></h4>
 <ul>
 <li>RFC-0438: Multipart (#438)</li>
 <li>RFC-0443: Gateway (#443)</li>
@@ -1063,7 +1112,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>feat(oay): Implement range support (#450)</li>
 <li>feat(services-http): Implement write and delete for testing (#451)</li>
 </ul>
-<h3 id="v0110---2022-07-11"><a href="#v0110---2022-07-11">v0.11.0 - 2022-07-11</a></h3><h4 id="added-50"><a href="#added-50">Added</a></h4>
+<h3 id="v0110---2022-07-11"><a href="#v0110---2022-07-11">v0.11.0 - 2022-07-11</a></h3><h4 id="added-51"><a href="#added-51">Added</a></h4>
 <ul>
 <li>feat: derive Deserialize/Serialize for ObjectMetaData (#420)</li>
 <li>RFC-0423: Command Line Interface (#423)</li>
@@ -1073,18 +1122,18 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>feat: Implement RFC-0429 Init From Iter (#432)</li>
 <li>feat(oli): Add cp command layout (#428)</li>
 </ul>
-<h4 id="docs-18"><a href="#docs-18">Docs</a></h4>
+<h4 id="docs-19"><a href="#docs-19">Docs</a></h4>
 <ul>
 <li>docs: Update description of OpenDAL (#434)</li>
 </ul>
-<h3 id="v0100---2022-07-04"><a href="#v0100---2022-07-04">v0.10.0 - 2022-07-04</a></h3><h4 id="added-51"><a href="#added-51">Added</a></h4>
+<h3 id="v0100---2022-07-04"><a href="#v0100---2022-07-04">v0.10.0 - 2022-07-04</a></h3><h4 id="added-52"><a href="#added-52">Added</a></h4>
 <ul>
 <li>RFC-0409: Accessor Capabilities (#409)</li>
 <li>feat: Implement RFC-0409 Accessor Capabilities (#411)</li>
 <li>RFC-0413: Presign (#413)</li>
 <li>feat: Implement presign support for s3 (#414)</li>
 </ul>
-<h4 id="docs-19"><a href="#docs-19">Docs</a></h4>
+<h4 id="docs-20"><a href="#docs-20">Docs</a></h4>
 <ul>
 <li>docs: Add new RFCs in list (#415)</li>
 </ul>
@@ -1092,7 +1141,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>chore(deps): Update reqsign requirement from 0.1.1 to 0.2.0 (#412)</li>
 </ul>
-<h3 id="v091---2022-06-27"><a href="#v091---2022-06-27">v0.9.1 - 2022-06-27</a></h3><h4 id="added-52"><a href="#added-52">Added</a></h4>
+<h3 id="v091---2022-06-27"><a href="#v091---2022-06-27">v0.9.1 - 2022-06-27</a></h3><h4 id="added-53"><a href="#added-53">Added</a></h4>
 <ul>
 <li>feat(object): Add ETag support (#381)</li>
 <li>feat: Convert retryable hyper errors into Interrupted (#396)</li>
@@ -1108,11 +1157,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(deps): Update size requirement from 0.1.2 to 0.2.0 (#385)</li>
 <li>Upgrade dev-dependency <code>size</code> to 0.4 (#392)</li>
 </ul>
-<h4 id="fixed-41"><a href="#fixed-41">Fixed</a></h4>
+<h4 id="fixed-42"><a href="#fixed-42">Fixed</a></h4>
 <ul>
 <li>fix: Special chars not handled correctly (#398)</li>
 </ul>
-<h3 id="v090---2022-06-14"><a href="#v090---2022-06-14">v0.9.0 - 2022-06-14</a></h3><h4 id="added-53"><a href="#added-53">Added</a></h4>
+<h3 id="v090---2022-06-14"><a href="#v090---2022-06-14">v0.9.0 - 2022-06-14</a></h3><h4 id="added-54"><a href="#added-54">Added</a></h4>
 <ul>
 <li>feat: Implement http service support (#368)</li>
 <li>feat: Add http_header to handle HTTP header parse (#369)</li>
@@ -1123,12 +1172,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Use the same http client across project (#364)</li>
 <li>refactor(services/{s3,azblob}): Make sure error response parsed correctly and safely (#375)</li>
 </ul>
-<h4 id="docs-20"><a href="#docs-20">Docs</a></h4>
+<h4 id="docs-21"><a href="#docs-21">Docs</a></h4>
 <ul>
 <li>docs: Add concepts for Accessor, Operator and Object (#354)</li>
 <li>docs: Aad docs for batch operations (#363)</li>
 </ul>
-<h3 id="v080---2022-06-09"><a href="#v080---2022-06-09">v0.8.0 - 2022-06-09</a></h3><h4 id="added-54"><a href="#added-54">Added</a></h4>
+<h3 id="v080---2022-06-09"><a href="#v080---2022-06-09">v0.8.0 - 2022-06-09</a></h3><h4 id="added-55"><a href="#added-55">Added</a></h4>
 <ul>
 <li>RFC-0337: Dir Entry (#337)</li>
 <li>feat: Implement RFC-0337: Dir Entry (#342)</li>
@@ -1143,12 +1192,12 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(deps): Bump actions/setup-python from 3 to 4 (#343)</li>
 <li>chore(deps): Bump amondnet/vercel-action from 20 to 25 (#344)</li>
 </ul>
-<h3 id="v073---2022-06-03"><a href="#v073---2022-06-03">v0.7.3 - 2022-06-03</a></h3><h4 id="fixed-42"><a href="#fixed-42">Fixed</a></h4>
+<h3 id="v073---2022-06-03"><a href="#v073---2022-06-03">v0.7.3 - 2022-06-03</a></h3><h4 id="fixed-43"><a href="#fixed-43">Fixed</a></h4>
 <ul>
 <li>fix(services/s3,hdfs): List empty dir should not return itself (#327)</li>
 <li>fix(services/hdfs): Root path not cleaned correctly (#330)</li>
 </ul>
-<h3 id="v072---2022-06-01"><a href="#v072---2022-06-01">v0.7.2 - 2022-06-01</a></h3><h4 id="added-55"><a href="#added-55">Added</a></h4>
+<h3 id="v072---2022-06-01"><a href="#v072---2022-06-01">v0.7.2 - 2022-06-01</a></h3><h4 id="added-56"><a href="#added-56">Added</a></h4>
 <ul>
 <li>feat(io_util): Improve debug logging for compress (#310)</li>
 <li>feat(services/s3): Add disable_credential_loader support (#317)</li>
@@ -1163,17 +1212,17 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>docs: Update README to reflect current status (#321)</li>
 <li>refactor(object): Make Metadata::name() return &amp;str (#322)</li>
 </ul>
-<h4 id="fixed-43"><a href="#fixed-43">Fixed</a></h4>
+<h4 id="fixed-44"><a href="#fixed-44">Fixed</a></h4>
 <ul>
 <li>docs: Fix typo in examples (#320)</li>
 <li>fix(services): Don’t throw error message for stat operation (#324)</li>
 </ul>
-<h3 id="v071---2022-05-29"><a href="#v071---2022-05-29">v0.7.1 - 2022-05-29</a></h3><h4 id="fixed-44"><a href="#fixed-44">Fixed</a></h4>
+<h3 id="v071---2022-05-29"><a href="#v071---2022-05-29">v0.7.1 - 2022-05-29</a></h3><h4 id="fixed-45"><a href="#fixed-45">Fixed</a></h4>
 <ul>
 <li>publish: Fix git version not allowed (#306)</li>
 <li>fix(io_util/compress): Decompress read exit too early (#308)</li>
 </ul>
-<h3 id="v070---2022-05-29"><a href="#v070---2022-05-29">v0.7.0 - 2022-05-29</a></h3><h4 id="added-56"><a href="#added-56">Added</a></h4>
+<h3 id="v070---2022-05-29"><a href="#v070---2022-05-29">v0.7.0 - 2022-05-29</a></h3><h4 id="added-57"><a href="#added-57">Added</a></h4>
 <ul>
 <li>feat: Add support for blocking decompress_read (#289)</li>
 <li>feat: Add check for operator (#290)</li>
@@ -1188,26 +1237,26 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>feat(io_util): Refactor decompress decoder (#302)</li>
 <li>ci: Adopt amondnet/vercel-action (#303)</li>
 </ul>
-<h4 id="fixed-45"><a href="#fixed-45">Fixed</a></h4>
+<h4 id="fixed-46"><a href="#fixed-46">Fixed</a></h4>
 <ul>
 <li>fix(services/aws): Increase retry times for AWS STS (#299)</li>
 </ul>
-<h3 id="v063---2022-05-25"><a href="#v063---2022-05-25">v0.6.3 - 2022-05-25</a></h3><h4 id="added-57"><a href="#added-57">Added</a></h4>
+<h3 id="v063---2022-05-25"><a href="#v063---2022-05-25">v0.6.3 - 2022-05-25</a></h3><h4 id="added-58"><a href="#added-58">Added</a></h4>
 <ul>
 <li>ci: Add all issues into databend-storage project (#277)</li>
 <li>feat(services/s3): Add retry in load_credential (#281)</li>
 <li>feat(services): Allow endpoint has trailing slash (#282)</li>
 <li>feat(services): Attach more context in error messages (#283)</li>
 </ul>
-<h3 id="v062---2022-05-12"><a href="#v062---2022-05-12">v0.6.2 - 2022-05-12</a></h3><h4 id="fixed-46"><a href="#fixed-46">Fixed</a></h4>
+<h3 id="v062---2022-05-12"><a href="#v062---2022-05-12">v0.6.2 - 2022-05-12</a></h3><h4 id="fixed-47"><a href="#fixed-47">Fixed</a></h4>
 <ul>
 <li>fix(azblob): Request URL not construct correctly (#270)</li>
 </ul>
-<h3 id="v061---2022-05-09"><a href="#v061---2022-05-09">v0.6.1 - 2022-05-09</a></h3><h4 id="added-58"><a href="#added-58">Added</a></h4>
+<h3 id="v061---2022-05-09"><a href="#v061---2022-05-09">v0.6.1 - 2022-05-09</a></h3><h4 id="added-59"><a href="#added-59">Added</a></h4>
 <ul>
 <li>feat: Add hdfs scheme (#266)</li>
 </ul>
-<h3 id="v060---2022-05-07"><a href="#v060---2022-05-07">v0.6.0 - 2022-05-07</a></h3><h4 id="added-59"><a href="#added-59">Added</a></h4>
+<h3 id="v060---2022-05-07"><a href="#v060---2022-05-07">v0.6.0 - 2022-05-07</a></h3><h4 id="added-60"><a href="#added-60">Added</a></h4>
 <ul>
 <li>docs: Improve docs to 100% coverage (#246)</li>
 <li>RFC-0247: Retryable Error (#247)</li>
@@ -1222,7 +1271,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(deps): Update uuid requirement from 0.8.2 to 1.0.0 (#252)</li>
 <li>refactor: Remove deprecated modules (#259)</li>
 </ul>
-<h4 id="fixed-47"><a href="#fixed-47">Fixed</a></h4>
+<h4 id="fixed-48"><a href="#fixed-48">Fixed</a></h4>
 <ul>
 <li>ci: Fix docs build (#260)</li>
 <li>fix: HDFS jar not load (#261)</li>
@@ -1234,19 +1283,19 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>chore(deps): Bump actions/checkout from 2 to 3 (#240)</li>
 <li>docs: Refactor examples (#241)</li>
 </ul>
-<h4 id="fixed-48"><a href="#fixed-48">Fixed</a></h4>
+<h4 id="fixed-49"><a href="#fixed-49">Fixed</a></h4>
 <ul>
 <li>fix(services/s3): Endpoint without scheme should also supported (#242)</li>
 </ul>
-<h3 id="v051---2022-04-08"><a href="#v051---2022-04-08">v0.5.1 - 2022-04-08</a></h3><h4 id="added-60"><a href="#added-60">Added</a></h4>
+<h3 id="v051---2022-04-08"><a href="#v051---2022-04-08">v0.5.1 - 2022-04-08</a></h3><h4 id="added-61"><a href="#added-61">Added</a></h4>
 <ul>
 <li>docs: Add behavior docs for create operation (#235)</li>
 </ul>
-<h4 id="fixed-49"><a href="#fixed-49">Fixed</a></h4>
+<h4 id="fixed-50"><a href="#fixed-50">Fixed</a></h4>
 <ul>
 <li>fix(services/fs): Create on existing dir should succeed (#234)</li>
 </ul>
-<h3 id="v050---2022-04-07"><a href="#v050---2022-04-07">v0.5.0 - 2022-04-07</a></h3><h4 id="added-61"><a href="#added-61">Added</a></h4>
+<h3 id="v050---2022-04-07"><a href="#v050---2022-04-07">v0.5.0 - 2022-04-07</a></h3><h4 id="added-62"><a href="#added-62">Added</a></h4>
 <ul>
 <li>feat: Improve error message (#220)</li>
 <li>RFC-0221: Create Dir (#221)</li>
@@ -1260,25 +1309,25 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Move op.objects() to o.list() (#224)</li>
 <li>refactor: Improve behavior_tests so that cargo test works without –all-features (#231)</li>
 </ul>
-<h4 id="fixed-50"><a href="#fixed-50">Fixed</a></h4>
+<h4 id="fixed-51"><a href="#fixed-51">Fixed</a></h4>
 <ul>
 <li>fix: Azblob should pass all behavior tests now (#228)</li>
 </ul>
-<h3 id="v042---2022-04-03"><a href="#v042---2022-04-03">v0.4.2 - 2022-04-03</a></h3><h4 id="added-62"><a href="#added-62">Added</a></h4>
+<h3 id="v042---2022-04-03"><a href="#v042---2022-04-03">v0.4.2 - 2022-04-03</a></h3><h4 id="added-63"><a href="#added-63">Added</a></h4>
 <ul>
 <li>feat: Add seekable_reader on Object (#215)</li>
 </ul>
-<h4 id="fixed-51"><a href="#fixed-51">Fixed</a></h4>
+<h4 id="fixed-52"><a href="#fixed-52">Fixed</a></h4>
 <ul>
 <li>fix: Object last_modified should carry timezone (#217)</li>
 </ul>
-<h3 id="v041---2022-04-02"><a href="#v041---2022-04-02">v0.4.1 - 2022-04-02</a></h3><h4 id="added-63"><a href="#added-63">Added</a></h4>
+<h3 id="v041---2022-04-02"><a href="#v041---2022-04-02">v0.4.1 - 2022-04-02</a></h3><h4 id="added-64"><a href="#added-64">Added</a></h4>
 <ul>
 <li>feat: Export SeekableReader (#212)</li>
 </ul>
 <h3 id="v040---2022-04-02"><a href="#v040---2022-04-02">v0.4.0 - 2022-04-02</a></h3>
 <p><strong>Refer to <a href="./docs/upgrade.md">Upgrade</a> <code>From v0.3 to v0.4</code> section for more upgrade details.</strong></p>
-<h4 id="added-64"><a href="#added-64">Added</a></h4>
+<h4 id="added-65"><a href="#added-65">Added</a></h4>
 <ul>
 <li>feat(services/azblob): Implement list support (#193)</li>
 <li>feat: Implement io_util like into_sink and into_stream (#197)</li>
@@ -1295,7 +1344,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>refactor: Rollback changes around async streaming io (#205)</li>
 <li>refactor: Refactor behavior tests with macro_rules (#207)</li>
 </ul>
-<h4 id="fixed-52"><a href="#fixed-52">Fixed</a></h4>
+<h4 id="fixed-53"><a href="#fixed-53">Fixed</a></h4>
 <ul>
 <li>deps: Bump to reqsign to fix s3 url encode issue (#202)</li>
 </ul>
@@ -1303,7 +1352,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>RFC-0203: Remove Credential (#203)</li>
 </ul>
-<h3 id="v030---2022-03-25"><a href="#v030---2022-03-25">v0.3.0 - 2022-03-25</a></h3><h4 id="added-65"><a href="#added-65">Added</a></h4>
+<h3 id="v030---2022-03-25"><a href="#v030---2022-03-25">v0.3.0 - 2022-03-25</a></h3><h4 id="added-66"><a href="#added-66">Added</a></h4>
 <ul>
 <li>feat: Add azure blob support (#165)</li>
 <li>feat: Add tracing support via minitrace (#175)</li>
@@ -1313,11 +1362,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>chore: Level down some log entry to debug (#181)</li>
 </ul>
-<h4 id="fixed-53"><a href="#fixed-53">Fixed</a></h4>
+<h4 id="fixed-54"><a href="#fixed-54">Fixed</a></h4>
 <ul>
 <li>fix(service/s3): Endpoint template should be applied if region exists (#180)</li>
 </ul>
-<h3 id="v025---2022-03-22"><a href="#v025---2022-03-22">v0.2.5 - 2022-03-22</a></h3><h4 id="added-66"><a href="#added-66">Added</a></h4>
+<h3 id="v025---2022-03-22"><a href="#v025---2022-03-22">v0.2.5 - 2022-03-22</a></h3><h4 id="added-67"><a href="#added-67">Added</a></h4>
 <ul>
 <li>feat: Adopt quick_xml to parse xml (#164)</li>
 <li>test: Add behavior test for not exist object (#166)</li>
@@ -1329,7 +1378,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>feat: Read error response for better debugging (#170)</li>
 <li>examples: Improve examples for s3 (#171)</li>
 </ul>
-<h3 id="v024---2022-03-18"><a href="#v024---2022-03-18">v0.2.4 - 2022-03-18</a></h3><h4 id="added-67"><a href="#added-67">Added</a></h4>
+<h3 id="v024---2022-03-18"><a href="#v024---2022-03-18">v0.2.4 - 2022-03-18</a></h3><h4 id="added-68"><a href="#added-68">Added</a></h4>
 <ul>
 <li>feat: Add content_md5 and last_modified in metadata (#158)</li>
 </ul>
@@ -1337,16 +1386,16 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>refactor: Say goodbye to aws-s3-sdk (#152)</li>
 </ul>
-<h3 id="v023---2022-03-14"><a href="#v023---2022-03-14">v0.2.3 - 2022-03-14</a></h3><h4 id="added-68"><a href="#added-68">Added</a></h4>
+<h3 id="v023---2022-03-14"><a href="#v023---2022-03-14">v0.2.3 - 2022-03-14</a></h3><h4 id="added-69"><a href="#added-69">Added</a></h4>
 <ul>
 <li>feat: Export BoxedObjectStream so that users can implement Layer (#147)</li>
 </ul>
-<h3 id="v022---2022-03-14"><a href="#v022---2022-03-14">v0.2.2 - 2022-03-14</a></h3><h4 id="fixed-54"><a href="#fixed-54">Fixed</a></h4>
+<h3 id="v022---2022-03-14"><a href="#v022---2022-03-14">v0.2.2 - 2022-03-14</a></h3><h4 id="fixed-55"><a href="#fixed-55">Fixed</a></h4>
 <ul>
 <li>services/fs: Refactor via tokio::fs (#142)</li>
 <li>fix: Stat root should return a dir object (#143)</li>
 </ul>
-<h3 id="v021---2022-03-10"><a href="#v021---2022-03-10">v0.2.1 - 2022-03-10</a></h3><h4 id="added-69"><a href="#added-69">Added</a></h4>
+<h3 id="v021---2022-03-10"><a href="#v021---2022-03-10">v0.2.1 - 2022-03-10</a></h3><h4 id="added-70"><a href="#added-70">Added</a></h4>
 <ul>
 <li>*: Implement logging support (#122)</li>
 <li>feat(service): Add service memory read support (#121)</li>
@@ -1358,7 +1407,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>benches: Refactor to support more read pattern (#126)</li>
 <li>services: Refactor into directories (#131)</li>
 </ul>
-<h4 id="docs-21"><a href="#docs-21">Docs</a></h4>
+<h4 id="docs-22"><a href="#docs-22">Docs</a></h4>
 <ul>
 <li>docs: Cover all public types and functions (#128)</li>
 <li>docs: Update README (#129)</li>
@@ -1366,7 +1415,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>docs: Enrich README (#133)</li>
 <li>Add examples for object (#135)</li>
 </ul>
-<h3 id="v020---2022-03-08"><a href="#v020---2022-03-08">v0.2.0 - 2022-03-08</a></h3><h4 id="added-70"><a href="#added-70">Added</a></h4>
+<h3 id="v020---2022-03-08"><a href="#v020---2022-03-08">v0.2.0 - 2022-03-08</a></h3><h4 id="added-71"><a href="#added-71">Added</a></h4>
 <ul>
 <li>RFC-112: Path Normalization (#112)</li>
 <li>examples: Add more examples for services and operations (#113)</li>
@@ -1376,13 +1425,13 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>benches: Refactor to make code more readable (#104)</li>
 <li>object: Refactor ObjectMode into enum (#114)</li>
 </ul>
-<h3 id="v014---2022-03-04"><a href="#v014---2022-03-04">v0.1.4 - 2022-03-04</a></h3><h4 id="added-71"><a href="#added-71">Added</a></h4>
+<h3 id="v014---2022-03-04"><a href="#v014---2022-03-04">v0.1.4 - 2022-03-04</a></h3><h4 id="added-72"><a href="#added-72">Added</a></h4>
 <ul>
 <li>services/s3: Implement anonymous read support (#97)</li>
 <li>bench: Add parallel_read bench (#100)</li>
 <li>services/s3: Add test for anonymous support (#99)</li>
 </ul>
-<h3 id="v013---2022-03-02"><a href="#v013---2022-03-02">v0.1.3 - 2022-03-02</a></h3><h4 id="added-72"><a href="#added-72">Added</a></h4>
+<h3 id="v013---2022-03-02"><a href="#v013---2022-03-02">v0.1.3 - 2022-03-02</a></h3><h4 id="added-73"><a href="#added-73">Added</a></h4>
 <ul>
 <li>RFC and implementations for limited reader (#90)</li>
 <li>readers: Implement observe reader support (#92)</li>
@@ -1400,7 +1449,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>object: Polish API for Metadata (#80)</li>
 </ul>
-<h3 id="v011---2022-03-01"><a href="#v011---2022-03-01">v0.1.1 - 2022-03-01</a></h3><h4 id="added-73"><a href="#added-73">Added</a></h4>
+<h3 id="v011---2022-03-01"><a href="#v011---2022-03-01">v0.1.1 - 2022-03-01</a></h3><h4 id="added-74"><a href="#added-74">Added</a></h4>
 <ul>
 <li>RFC and implementation of feature Object Stream (#69)</li>
 <li>services/s3: Implement List support (#76)</li>
@@ -1411,7 +1460,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>backend/s3: Change from lazy_static to once_cell (#62)</li>
 <li>backend/s3: Enable test on AWS S3 (#64)</li>
 </ul>
-<h3 id="v010---2022-02-24"><a href="#v010---2022-02-24">v0.1.0 - 2022-02-24</a></h3><h4 id="added-74"><a href="#added-74">Added</a></h4>
+<h3 id="v010---2022-02-24"><a href="#v010---2022-02-24">v0.1.0 - 2022-02-24</a></h3><h4 id="added-75"><a href="#added-75">Added</a></h4>
 <ul>
 <li>docs: Add README for behavior test and ops benchmarks (#53)</li>
 <li>RFC-0057: Auto Region (#57)</li>
@@ -1422,11 +1471,11 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>io: Rename BoxedAsyncRead to BoxedAsyncReader (#55)</li>
 <li>*: Refactor tests (#60)</li>
 </ul>
-<h3 id="v005---2022-02-23"><a href="#v005---2022-02-23">v0.0.5 - 2022-02-23</a></h3><h4 id="fixed-55"><a href="#fixed-55">Fixed</a></h4>
+<h3 id="v005---2022-02-23"><a href="#v005---2022-02-23">v0.0.5 - 2022-02-23</a></h3><h4 id="fixed-56"><a href="#fixed-56">Fixed</a></h4>
 <ul>
 <li>io: Remove not used debug print (#48)</li>
 </ul>
-<h3 id="v004---2022-02-23"><a href="#v004---2022-02-23">v0.0.4 - 2022-02-23</a></h3><h4 id="added-75"><a href="#added-75">Added</a></h4>
+<h3 id="v004---2022-02-23"><a href="#v004---2022-02-23">v0.0.4 - 2022-02-23</a></h3><h4 id="added-76"><a href="#added-76">Added</a></h4>
 <ul>
 <li>readers: Allow config prefetch size (#31)</li>
 <li>RFC-0041: Object Native API (#41)</li>
@@ -1438,7 +1487,7 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <ul>
 <li>services/fs: Use separate dedicated thread pool instead (#42)</li>
 </ul>
-<h3 id="v003---2022-02-16"><a href="#v003---2022-02-16">v0.0.3 - 2022-02-16</a></h3><h4 id="added-76"><a href="#added-76">Added</a></h4>
+<h3 id="v003---2022-02-16"><a href="#v003---2022-02-16">v0.0.3 - 2022-02-16</a></h3><h4 id="added-77"><a href="#added-77">Added</a></h4>
 <ul>
 <li>benches: Implement benches for ops (#26)</li>
 </ul>
@@ -1447,16 +1496,16 @@ and this project adheres to <a href="https://semver.org/">Semantic Versioning</a
 <li>services/s3: Don’t load_from_env if users already inputs (#23)</li>
 <li>readers: Improve seekable performance (#25)</li>
 </ul>
-<h3 id="v002---2022-02-15"><a href="#v002---2022-02-15">v0.0.2 - 2022-02-15</a></h3><h4 id="added-77"><a href="#added-77">Added</a></h4>
+<h3 id="v002---2022-02-15"><a href="#v002---2022-02-15">v0.0.2 - 2022-02-15</a></h3><h4 id="added-78"><a href="#added-78">Added</a></h4>
 <ul>
 <li>tests: Implement behavior tests (#13)</li>
 <li>services/s3: Add support for endpoints without scheme (#15)</li>
 <li>tests: Implement integration tests for s3 (#18)</li>
 </ul>
-<h4 id="fixed-56"><a href="#fixed-56">Fixed</a></h4>
+<h4 id="fixed-57"><a href="#fixed-57">Fixed</a></h4>
 <ul>
 <li>services/s3: Allow set endpoint and region while input value is valid (#17)</li>
 </ul>
-<h3 id="v001---2022-02-14"><a href="#v001---2022-02-14">v0.0.1 - 2022-02-14</a></h3><h4 id="added-78"><a href="#added-78">Added</a></h4>
+<h3 id="v001---2022-02-14"><a href="#v001---2022-02-14">v0.0.1 - 2022-02-14</a></h3><h4 id="added-79"><a href="#added-79">Added</a></h4>
 <p>Hello, OpenDAL!</p>
 </div></details></section></div></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.1 (8460ca823 2023-03-20)" 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/docs/rust/opendal/index.html b/docs/rust/opendal/index.html
index 2a2f92e4..c034c9d6 100644
--- a/docs/rust/opendal/index.html
+++ b/docs/rust/opendal/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="OpenDAL is the Open Data Access Layer to freely, painlessly, and efficiently access data."><meta name="keywords" content="rust, rustlang, rust-lang, opendal"><title>opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regula [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="OpenDAL is the Open Data Access Layer to freely, painlessly, and efficiently access data."><meta name="keywords" content="rust, rustlang, rust-lang, opendal"><title>opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regula [...]
 <ul>
 <li>Documentation: All docs are carried byself, visit <a href="docs/index.html" title="docs"><code>docs</code></a> for more.</li>
 <li>Services: All supported services could be found at <a href="services/index.html" title="services"><code>services</code></a>.</li>
diff --git a/index.html b/index.html
index 87cc7f75..fbf0a022 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.85f8512b.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.f09f80a2.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.85f8512b.js"></script>
+<script src="/assets/js/runtime~main.f09f80a2.js"></script>
 <script src="/assets/js/main.d23512d8.js"></script>
 </body>
 </html>
\ No newline at end of file