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 2024/08/21 04:45:27 UTC
(opendal) branch gh-pages updated: deploy: 90832a4ad6a132f152655738107a1a143331781c
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/opendal.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new c873b32103 deploy: 90832a4ad6a132f152655738107a1a143331781c
c873b32103 is described below
commit c873b321032d975a4af034bfe798cbbf348df047
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Wed Aug 21 04:45:20 2024 +0000
deploy: 90832a4ad6a132f152655738107a1a143331781c
---
404.html | 2 +-
assets/js/{main.90b69084.js => main.43f06f97.js} | 4 +-
...js.LICENSE.txt => main.43f06f97.js.LICENSE.txt} | 0
blog/apache-opendal-graduated/index.html | 2 +-
.../index.html | 2 +-
.../index.html | 2 +-
blog/archive/index.html | 2 +-
blog/how-opendal-read-data/index.html | 2 +-
blog/index.html | 2 +-
blog/opendal-access-data-freely/index.html | 2 +-
blog/opendal-entered-apache-incubator/index.html | 2 +-
blog/owo-1/index.html | 2 +-
blog/tags/announcement/index.html | 2 +-
blog/tags/index.html | 2 +-
blog/tags/internal/index.html | 2 +-
blog/tags/owo/index.html | 2 +-
community/category/committers/index.html | 2 +-
community/category/events/index.html | 2 +-
community/category/pmc-members/index.html | 2 +-
community/category/reference/index.html | 2 +-
community/category/release/index.html | 2 +-
community/committers/onboarding/index.html | 2 +-
.../request_for_adding_secrets/index.html | 2 +-
community/events/gsoc-proposal-guide/index.html | 2 +-
community/events/ospp-proposal-guide/index.html | 2 +-
community/index.html | 2 +-
community/maturity/index.html | 2 +-
community/pmc_members/board-reporting/index.html | 2 +-
.../pmc_members/nominate-committer/index.html | 2 +-
.../pmc_members/nominate-pmc-member/index.html | 2 +-
community/pmc_members/onboarding/index.html | 2 +-
community/release/index.html | 2 +-
.../reference/generate_release_note/index.html | 2 +-
community/release/reference/setup_gpg/index.html | 2 +-
community/release/verify/index.html | 2 +-
community/security/index.html | 2 +-
docs/binding-java/index.html | 2 +-
docs/binding-nodejs/index.html | 2 +-
docs/binding-python/index.html | 2 +-
docs/dav-server/index.html | 2 +-
docs/lua/classes/opendal.metadata.html | 2 +-
docs/lua/classes/opendal.operator.html | 2 +-
docs/lua/index.html | 2 +-
docs/nodejs/classes/BlockingLister.html | 4 +-
docs/nodejs/classes/BlockingReader.html | 4 +-
docs/nodejs/classes/BlockingWriter.html | 8 +-
docs/nodejs/classes/Capability.html | 74 ++--
docs/nodejs/classes/Entry.html | 4 +-
docs/nodejs/classes/ExternalObject.html | 4 +-
docs/nodejs/classes/Layer.html | 2 +-
docs/nodejs/classes/Lister.html | 4 +-
docs/nodejs/classes/Metadata.html | 18 +-
docs/nodejs/classes/Operator.html | 64 ++--
docs/nodejs/classes/Reader.html | 6 +-
docs/nodejs/classes/RetryLayer.html | 14 +-
docs/nodejs/classes/Writer.html | 8 +-
docs/nodejs/interfaces/ListOptions.html | 4 +-
docs/nodejs/interfaces/PresignedRequest.html | 8 +-
docs/nodejs/interfaces/WriteOptions.html | 12 +-
docs/nodejs/interfaces/WriterOptions.html | 12 +-
docs/object-store/index.html | 2 +-
docs/overview/index.html | 2 +-
docs/python/opendal.html | 406 ++++++++++-----------
docs/python/search.js | 2 +-
docs/quickstart/index.html | 2 +-
docs/rust-core/index.html | 2 +-
docs/rust/opendal/enum.EntryMode.html | 2 +-
docs/rust/opendal/enum.Metakey.html | 4 +-
docs/rust/opendal/enum.Scheme.html | 2 +-
docs/rust/opendal/raw/enum.FourWays.html | 4 +-
docs/rust/opendal/raw/enum.Operation.html | 2 +-
docs/rust/opendal/raw/oio/trait.List.html | 2 +-
docs/rust/opendal/raw/oio/trait.Write.html | 2 +-
.../rust/opendal/raw/struct.BytesContentRange.html | 4 +-
docs/rust/opendal/raw/struct.BytesRange.html | 2 +-
docs/rust/opendal/raw/struct.HttpBody.html | 4 +-
docs/rust/opendal/services/struct.Monoiofs.html | 14 +-
.../opendal/services/struct.MonoiofsConfig.html | 12 +-
docs/rust/opendal/struct.Buffer.html | 6 +-
docs/rust/opendal/struct.Error.html | 2 +-
docs/rust/opendal/trait.Builder.html | 2 +-
docs/rust/opendal/trait.Configurator.html | 2 +-
docs/rust/search-index.js | 2 +-
docs/rust/search.desc/opendal/opendal-desc-0-.js | 2 +-
docs/rust/src-files.js | 2 +-
.../src/opendal/services/monoiofs/backend.rs.html | 152 +++++++-
.../src/opendal/services/monoiofs/core.rs.html | 144 ++++++--
.../rust/src/opendal/services/monoiofs/mod.rs.html | 4 +
.../src/opendal/services/monoiofs/reader.rs.html | 287 +++++++++++++++
.../src/opendal/services/monoiofs/writer.rs.html | 307 ++++++++++++++++
download/index.html | 2 +-
index.html | 2 +-
lunr-index-1724179067315.json | 1 -
lunr-index-1724215481955.json | 1 +
lunr-index.json | 2 +-
search-doc-1724179067315.json | 1 -
search-doc-1724215481955.json | 1 +
search-doc.json | 2 +-
98 files changed, 1284 insertions(+), 446 deletions(-)
diff --git a/404.html b/404.html
index 6d6989448a..02f1294b32 100644
--- a/404.html
+++ b/404.html
@@ -6,7 +6,7 @@
<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" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="tr [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/assets/js/main.90b69084.js b/assets/js/main.43f06f97.js
similarity index 99%
rename from assets/js/main.90b69084.js
rename to assets/js/main.43f06f97.js
index 8f10e38fdc..52a4fac93e 100644
--- a/assets/js/main.90b69084.js
+++ b/assets/js/main.43f06f97.js
@@ -1,2 +1,2 @@
-/*! For license information please see main.90b69084.js.LICENSE.txt */
-(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8792],{4649:(e,t,n)=>{var r={"./prism-groovy":2600,"./prism-java":1330,"./prism-rust":8432};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=4649},6527:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});n(758);var r=n(2059),o=n.n(r),a=n(4054);con [...]
\ No newline at end of file
+/*! For license information please see main.43f06f97.js.LICENSE.txt */
+(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[8792],{4649:(e,t,n)=>{var r={"./prism-groovy":2600,"./prism-java":1330,"./prism-rust":8432};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=4649},6527:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});n(758);var r=n(2059),o=n.n(r),a=n(4054);con [...]
\ No newline at end of file
diff --git a/assets/js/main.90b69084.js.LICENSE.txt b/assets/js/main.43f06f97.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.90b69084.js.LICENSE.txt
rename to assets/js/main.43f06f97.js.LICENSE.txt
diff --git a/blog/apache-opendal-graduated/index.html b/blog/apache-opendal-graduated/index.html
index 130c646c77..9149dd3a7f 100644
--- a/blog/apache-opendal-graduated/index.html
+++ b/blog/apache-opendal-graduated/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Apache OpenDAL™ is now Graduated | 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/apache-opendal-graduated"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_t [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/apache-opendal-participates-in-gsoc-2024/index.html b/blog/apache-opendal-participates-in-gsoc-2024/index.html
index 44214db198..14ce95ae3d 100644
--- a/blog/apache-opendal-participates-in-gsoc-2024/index.html
+++ b/blog/apache-opendal-participates-in-gsoc-2024/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Apache OpenDAL™ participates in Google Summer of Code 2024 | 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/apache-opendal-participates-in-gsoc-2024"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="e [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/apache-opendal-participates-in-ospp-2024/index.html b/blog/apache-opendal-participates-in-ospp-2024/index.html
index 1b27c11739..fd1099d632 100644
--- a/blog/apache-opendal-participates-in-ospp-2024/index.html
+++ b/blog/apache-opendal-participates-in-ospp-2024/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Apache OpenDAL™ participates in Open Source Promotion Plan 2024 | 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/apache-opendal-participates-in-ospp-2024"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" conte [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 5047bef56e..bb9aa8c4f0 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -6,7 +6,7 @@
<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" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/how-opendal-read-data/index.html b/blog/how-opendal-read-data/index.html
index e707e5ea1a..41caeb265b 100644
--- a/blog/how-opendal-read-data/index.html
+++ b/blog/how-opendal-read-data/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Apache OpenDAL™ Internal: Data Reading | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/how-opendal-read-data"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusauru [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/index.html b/blog/index.html
index 096a1acd1d..a8de55af29 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -6,7 +6,7 @@
<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" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="o [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/opendal-access-data-freely/index.html b/blog/opendal-access-data-freely/index.html
index fdd8df038d..c7933ee19e 100644
--- a/blog/opendal-access-data-freely/index.html
+++ b/blog/opendal-access-data-freely/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Apache OpenDAL™: Access Data Freely | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/opendal-access-data-freely"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusau [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/opendal-entered-apache-incubator/index.html b/blog/opendal-entered-apache-incubator/index.html
index 0fd9adf37b..66d2e712d5 100644
--- a/blog/opendal-entered-apache-incubator/index.html
+++ b/blog/opendal-entered-apache-incubator/index.html
@@ -6,7 +6,7 @@
<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" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta d [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/owo-1/index.html b/blog/owo-1/index.html
index 09812f3cda..184c22c65e 100644
--- a/blog/owo-1/index.html
+++ b/blog/owo-1/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">OwO #1: The v0.40 Release | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/owo-1"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><met [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/tags/announcement/index.html b/blog/tags/announcement/index.html
index 15445923ac..294dd29cea 100644
--- a/blog/tags/announcement/index.html
+++ b/blog/tags/announcement/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">5 posts tagged with "announcement" | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/announcement"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsear [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 86d33948d9..c7dfe42dae 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -6,7 +6,7 @@
<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" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" proper [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/tags/internal/index.html b/blog/tags/internal/index.html
index 8c5f6c6da4..c1240687ac 100644
--- a/blog/tags/internal/index.html
+++ b/blog/tags/internal/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">One post tagged with "internal" | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/internal"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lang [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/blog/tags/owo/index.html b/blog/tags/owo/index.html
index 870110f74b..16e26f98dc 100644
--- a/blog/tags/owo/index.html
+++ b/blog/tags/owo/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">One post tagged with "owo" | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/owo"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" cont [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/category/committers/index.html b/community/category/committers/index.html
index 748262962a..24acd3c9f2 100644
--- a/community/category/committers/index.html
+++ b/community/category/committers/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Committers | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/committers"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/category/events/index.html b/community/category/events/index.html
index deb0615621..12e59c33c5 100644
--- a/community/category/events/index.html
+++ b/community/category/events/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Events | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/events"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta dat [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/category/pmc-members/index.html b/community/category/pmc-members/index.html
index b7878bc874..75679370f6 100644
--- a/community/category/pmc-members/index.html
+++ b/community/category/pmc-members/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Committers | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/pmc-members"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/category/reference/index.html b/community/category/reference/index.html
index 367e84143f..a78636e516 100644
--- a/community/category/reference/index.html
+++ b/community/category/reference/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Reference | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/reference"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><me [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/category/release/index.html b/community/category/release/index.html
index 70e09bacba..e0fa6129c0 100644
--- a/community/category/release/index.html
+++ b/community/category/release/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Release | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/category/release"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta d [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/committers/onboarding/index.html b/community/committers/onboarding/index.html
index f5a04b045b..34e356b089 100644
--- a/community/committers/onboarding/index.html
+++ b/community/committers/onboarding/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Onboarding | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/onboarding"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en" [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/committers/request_for_adding_secrets/index.html b/community/committers/request_for_adding_secrets/index.html
index ef0f663379..6e7c24485d 100644
--- a/community/committers/request_for_adding_secrets/index.html
+++ b/community/committers/request_for_adding_secrets/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Request for adding secrets | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/committers/request_for_adding_secrets"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name=" [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/events/gsoc-proposal-guide/index.html b/community/events/gsoc-proposal-guide/index.html
index 097680bf59..0c87b9d1fa 100644
--- a/community/events/gsoc-proposal-guide/index.html
+++ b/community/events/gsoc-proposal-guide/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">GSoC Project Proposal Guidance | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/events/gsoc-proposal-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsear [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/events/ospp-proposal-guide/index.html b/community/events/ospp-proposal-guide/index.html
index 172fea37b2..8aab8ca4e4 100644
--- a/community/events/ospp-proposal-guide/index.html
+++ b/community/events/ospp-proposal-guide/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">OSPP Project Proposal Guidance | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/events/ospp-proposal-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsear [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/index.html b/community/index.html
index 7b5b66a43c..2cd344eaf1 100644
--- a/community/index.html
+++ b/community/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Community | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/maturity/index.html b/community/maturity/index.html
index 1c46d2216b..02ec47a7c6 100644
--- a/community/maturity/index.html
+++ b/community/maturity/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Maturity | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/maturity"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><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.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/pmc_members/board-reporting/index.html b/community/pmc_members/board-reporting/index.html
index 702339b6c2..3150865da7 100644
--- a/community/pmc_members/board-reporting/index.html
+++ b/community/pmc_members/board-reporting/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Board reporting | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/board-reporting"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/pmc_members/nominate-committer/index.html b/community/pmc_members/nominate-committer/index.html
index 614cc27946..778318201a 100644
--- a/community/pmc_members/nominate-committer/index.html
+++ b/community/pmc_members/nominate-committer/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Nominate Committer | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/nominate-committer"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:langu [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/pmc_members/nominate-pmc-member/index.html b/community/pmc_members/nominate-pmc-member/index.html
index 296951ef89..e31a55c0d9 100644
--- a/community/pmc_members/nominate-pmc-member/index.html
+++ b/community/pmc_members/nominate-pmc-member/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Nominate PMC Member | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/nominate-pmc-member"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lan [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/pmc_members/onboarding/index.html b/community/pmc_members/onboarding/index.html
index 81dc53d1b6..059731df38 100644
--- a/community/pmc_members/onboarding/index.html
+++ b/community/pmc_members/onboarding/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Onboarding | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/pmc_members/onboarding"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/release/index.html b/community/release/index.html
index 53a20afd22..fb180a4486 100644
--- a/community/release/index.html
+++ b/community/release/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Create a release | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/release/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/release/reference/generate_release_note/index.html b/community/release/reference/generate_release_note/index.html
index d7703f2cf6..33d0509592 100644
--- a/community/release/reference/generate_release_note/index.html
+++ b/community/release/reference/generate_release_note/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Generate release note | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/release/reference/generate_release_note"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="doc [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/release/reference/setup_gpg/index.html b/community/release/reference/setup_gpg/index.html
index c73dc1ba14..8b0c2a82f3 100644
--- a/community/release/reference/setup_gpg/index.html
+++ b/community/release/reference/setup_gpg/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Setup GPG key | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/release/reference/setup_gpg"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/release/verify/index.html b/community/release/verify/index.html
index 9cd7b3f5be..413d7ee445 100644
--- a/community/release/verify/index.html
+++ b/community/release/verify/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Verify a release candidate | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/release/verify"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/community/security/index.html b/community/security/index.html
index f8bbca45bf..ea3bfe391c 100644
--- a/community/security/index.html
+++ b/community/security/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Security | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/security"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><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.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/binding-java/index.html b/docs/binding-java/index.html
index bfbdb4d6f7..d50056ddcc 100644
--- a/docs/binding-java/index.html
+++ b/docs/binding-java/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Java API | 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/binding-java"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><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.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/binding-nodejs/index.html b/docs/binding-nodejs/index.html
index e2463d2591..0a2b96a780 100644
--- a/docs/binding-nodejs/index.html
+++ b/docs/binding-nodejs/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Node.js API | 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/binding-nodejs"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><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.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/binding-python/index.html b/docs/binding-python/index.html
index 31ca473f27..c44b902c08 100644
--- a/docs/binding-python/index.html
+++ b/docs/binding-python/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Python API | 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/binding-python"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><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.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/dav-server/index.html b/docs/dav-server/index.html
index 9de5c402d5..14e725f991 100644
--- a/docs/dav-server/index.html
+++ b/docs/dav-server/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">WebDAV Integration | 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/dav-server"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta d [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/lua/classes/opendal.metadata.html b/docs/lua/classes/opendal.metadata.html
index 83ac325868..50e78bac74 100644
--- a/docs/lua/classes/opendal.metadata.html
+++ b/docs/lua/classes/opendal.metadata.html
@@ -138,7 +138,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2024-08-20 15:41:45 </i>
+<i style="float:right;">Last updated 2024-08-21 04:33:37 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
diff --git a/docs/lua/classes/opendal.operator.html b/docs/lua/classes/opendal.operator.html
index 0e0c1e671d..a1768bc198 100644
--- a/docs/lua/classes/opendal.operator.html
+++ b/docs/lua/classes/opendal.operator.html
@@ -321,7 +321,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2024-08-20 15:41:45 </i>
+<i style="float:right;">Last updated 2024-08-21 04:33:37 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
diff --git a/docs/lua/index.html b/docs/lua/index.html
index dddddf3088..28a6d4d340 100644
--- a/docs/lua/index.html
+++ b/docs/lua/index.html
@@ -57,7 +57,7 @@
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
-<i style="float:right;">Last updated 2024-08-20 15:41:45 </i>
+<i style="float:right;">Last updated 2024-08-21 04:33:37 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index 8218fe8e97..b203011946 100644
--- a/docs/nodejs/classes/BlockingLister.html
+++ b/docs/nodejs/classes/BlockingLister.html
@@ -1,5 +1,5 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingLister | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L706">generated.d.ts:706</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L706">generated.d.ts:706</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingLister.html#next" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>next</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingReader.html b/docs/nodejs/classes/BlockingReader.html
index 43d64f3775..ced69b9fd5 100644
--- a/docs/nodejs/classes/BlockingReader.html
+++ b/docs/nodejs/classes/BlockingReader.html
@@ -1,7 +1,7 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingReader | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L597">generated.d.ts:597</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/index.d.ts#L23">index.d.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L597">generated.d.ts:597</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/index.d.ts#L23">index.d.ts:23</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingReader.html#createReadStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Read<wbr/>Stream</span></a>
<a href="BlockingReader.html#read" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>read</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Blo [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingWriter.html b/docs/nodejs/classes/BlockingWriter.html
index 8fa07a6453..81b5406988 100644
--- a/docs/nodejs/classes/BlockingWriter.html
+++ b/docs/nodejs/classes/BlockingWriter.html
@@ -1,6 +1,6 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BlockingWriter | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L618">generated.d.ts:618</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/index.d.ts#L32">index.d.ts:32</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L618">generated.d.ts:618</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/index.d.ts#L32">index.d.ts:32</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="BlockingWriter.html#close" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>close</span></a>
<a href="BlockingWriter.html#createWriteStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Write<wbr/>Stream</span></a>
<a href="BlockingWriter.html#write" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>write</span></a>
@@ -10,11 +10,11 @@ manner.</p>
<p>Close this writer.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writerSync</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">);</span><br/><span class="hl-5">writer</span><span class="hl-1 [...]
</code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L649">generated.d.ts:649</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createWriteStream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Write<wbr/>Stream</sp [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L649">generated.d.ts:649</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createWriteStream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Write<wbr/>Stream</sp [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
<p>&mut self in async napi methods should be marked as unsafe</p>
</blockquote>
<p>Write bytes into this writer.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">);</span> [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Capability.html b/docs/nodejs/classes/Capability.html
index bc99848b37..9fa639295b 100644
--- a/docs/nodejs/classes/Capability.html
+++ b/docs/nodejs/classes/Capability.html
@@ -7,7 +7,7 @@
<li>What's current Operator max supports batch operations count.</li>
</ul>
<p>Add fields of Capabilities to be public and can be accessed directly.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L114">generated.d.ts:114</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L114">generated.d.ts:114</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="Capability.html#batch" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch</span></a>
<a href="Capability.html#batchDelete" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch<wbr/>Delete</span></a>
<a href="Capability.html#batchMaxOperations" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>batch<wbr/>Max<wbr/>Operations</span></a>
@@ -45,43 +45,43 @@
<a href="Capability.html#writeWithContentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>write<wbr/>With<wbr/>Content<wbr/>Disposition</span></a>
<a href="Capability.html#writeWithContentType" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>write<wbr/>With<wbr/>Content<wbr/>Type</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Cap [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L196">generated.d.ts:196</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchDelete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Delete</span><a href="#ba [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L198">generated.d.ts:198</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchMaxOperations" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Max<wbr/>Operation [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L200">generated.d.ts:200</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="blocking" class="t [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L202">generated.d.ts:202</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="copy" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copy</span><a href="#copy" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L176">generated.d.ts:176</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createDir" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a href="#create [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L172">generated.d.ts:172</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L174">generated.d.ts:174</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="list" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L180">generated.d.ts:180</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithLimit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Limit</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L182">generated.d.ts:182</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithRecursive" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Recursive< [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L186">generated.d.ts:186</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithStartAfter" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Start<wbr [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L184">generated.d.ts:184</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presign" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign</span><a href="#presign" aria-la [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L188">generated.d.ts:188</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignRead" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a href="#pr [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L190">generated.d.ts:190</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignStat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a href="#pr [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L192">generated.d.ts:192</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignWrite" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span><a href="# [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L194">generated.d.ts:194</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="read" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L122">generated.d.ts:122</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/>Matc [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L124">generated.d.ts:124</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L126">generated.d.ts:126</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideCacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/ [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L128">generated.d.ts:128</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Wit [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L130">generated.d.ts:130</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L132">generated.d.ts:132</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="rename" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" aria-label [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L178">generated.d.ts:178</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="stat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-label="Perm [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L116">generated.d.ts:116</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/>Matc [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L118">generated.d.ts:118</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L120">generated.d.ts:120</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="write" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria-label="P [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L134">generated.d.ts:134</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanAppend" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Append</span> [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L140">generated.d.ts:140</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanEmpty" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Empty</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L138">generated.d.ts:138</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanMulti" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Multi</span><a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L136">generated.d.ts:136</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiAlignSize" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Multi<wbr/>Align< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L196">generated.d.ts:196</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchDelete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Delete</span><a href="#ba [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L198">generated.d.ts:198</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="batchMaxOperations" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>batch<wbr/>Max<wbr/>Operation [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L200">generated.d.ts:200</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="blocking" class="t [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L202">generated.d.ts:202</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="copy" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copy</span><a href="#copy" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L176">generated.d.ts:176</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="createDir" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a href="#create [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L172">generated.d.ts:172</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L174">generated.d.ts:174</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="list" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L180">generated.d.ts:180</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithLimit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Limit</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L182">generated.d.ts:182</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithRecursive" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Recursive< [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L186">generated.d.ts:186</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="listWithStartAfter" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>list<wbr/>With<wbr/>Start<wbr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L184">generated.d.ts:184</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presign" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign</span><a href="#presign" aria-la [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L188">generated.d.ts:188</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignRead" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a href="#pr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L190">generated.d.ts:190</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignStat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a href="#pr [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L192">generated.d.ts:192</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="presignWrite" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span><a href="# [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L194">generated.d.ts:194</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="read" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L122">generated.d.ts:122</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/>Matc [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L124">generated.d.ts:124</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/>If<wbr/> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L126">generated.d.ts:126</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideCacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/ [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L128">generated.d.ts:128</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>Wit [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L130">generated.d.ts:130</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="readWithOverrideContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>read<wbr/>With<wbr/> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L132">generated.d.ts:132</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="rename" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" aria-label [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L178">generated.d.ts:178</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="stat" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-label="Perm [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L116">generated.d.ts:116</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/>Matc [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L118">generated.d.ts:118</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="statWithIfNoneMatch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>stat<wbr/>With<wbr/>If<wbr/> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L120">generated.d.ts:120</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="write" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria-label="P [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L134">generated.d.ts:134</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanAppend" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Append</span> [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L140">generated.d.ts:140</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanEmpty" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Empty</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L138">generated.d.ts:138</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeCanMulti" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Can<wbr/>Multi</span><a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L136">generated.d.ts:136</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiAlignSize" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>Multi<wbr/>Align< [...]
<p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L164">generated.d.ts:164</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMaxSize" [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L164">generated.d.ts:164</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMaxSize" [...]
<p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L152">generated.d.ts:152</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMinSize" [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L152">generated.d.ts:152</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeMultiMinSize" [...]
<p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L158">generated.d.ts:158</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeTotalMaxSize" [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L158">generated.d.ts:158</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeTotalMaxSize" [...]
<p>For example, Cloudflare D1 supports 1MB as max in write_total.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L170">generated.d.ts:170</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithCacheCont [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L146">generated.d.ts:146</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/ [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L144">generated.d.ts:144</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/>Conten [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L142">generated.d.ts:142</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary clas [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L170">generated.d.ts:170</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithCacheCont [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L146">generated.d.ts:146</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/ [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L144">generated.d.ts:144</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="writeWithContentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>write<wbr/>With<wbr/>Conten [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L142">generated.d.ts:142</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary clas [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index 359ef3ff24..6eee9412f5 100644
--- a/docs/nodejs/classes/Entry.html
+++ b/docs/nodejs/classes/Entry.html
@@ -1,5 +1,5 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Entry | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../ [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L566">generated.d.ts:566</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L566">generated.d.ts:566</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Entry.html#path" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>path</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ent [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L568">generated.d.ts:568</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L568">generated.d.ts:568</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/ExternalObject.html b/docs/nodejs/classes/ExternalObject.html
index d152cc055d..3d557a71c2 100644
--- a/docs/nodejs/classes/ExternalObject.html
+++ b/docs/nodejs/classes/ExternalObject.html
@@ -1,3 +1,3 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ExternalObject | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ExternalObject | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="ExternalObject.html#reflection-5" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span><em>Property</em></span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ext [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ext [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Layer.html b/docs/nodejs/classes/Layer.html
index 0b3f893937..d4a99b259b 100644
--- a/docs/nodejs/classes/Layer.html
+++ b/docs/nodejs/classes/Layer.html
@@ -1,3 +1,3 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Layer | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../ [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L710">generated.d.ts:710</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L710">generated.d.ts:710</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Lay [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index c37158436b..e9b8833d4b 100644
--- a/docs/nodejs/classes/Lister.html
+++ b/docs/nodejs/classes/Lister.html
@@ -1,10 +1,10 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Lister | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L691">generated.d.ts:691</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L691">generated.d.ts:691</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Lister.html#next" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>next</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Lis [...]
<p>&mut self in async napi methods should be marked as unsafe</p>
</blockquote>
<p>napi will make sure the function is safe, and we didn't do unsafe
things internally.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79 [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type tsd-kind-class">Entry</a><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90 [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index ea92744c18..eb52fe5b28 100644
--- a/docs/nodejs/classes/Metadata.html
+++ b/docs/nodejs/classes/Metadata.html
@@ -1,5 +1,5 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Metadata | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=" [...]
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L571">generated.d.ts:571</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L571">generated.d.ts:571</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="Metadata.html#contentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Disposition</span></a>
<a href="Metadata.html#contentLength" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Length</span></a>
<a href="Metadata.html#contentMd5" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>content<wbr/>Md5</span></a>
@@ -9,12 +9,12 @@
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Metadata.html#isDirectory" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>is<wbr/>Directory</span></a>
<a href="Metadata.html#isFile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>is<wbr/>File</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Met [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L577">generated.d.ts:577</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentLength" cla [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L579">generated.d.ts:579</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentMd5" class= [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L581">generated.d.ts:581</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentType" class [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L583">generated.d.ts:583</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="etag" class="tsd-a [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L585">generated.d.ts:585</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="lastModified" clas [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L577">generated.d.ts:577</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentLength" cla [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L579">generated.d.ts:579</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentMd5" class= [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L581">generated.d.ts:581</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="contentType" class [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L583">generated.d.ts:583</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="etag" class="tsd-a [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L585">generated.d.ts:585</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="lastModified" clas [...]
<p>We will output this time in RFC3339 format like <code>1996-12-19T16:39:57+08:00</code>.</p>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L591">generated.d.ts:591</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2 [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L573">generated.d.ts:573</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="isFile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>File</span><a href="#isFile" aria [...]
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L575">generated.d.ts:575</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary clas [...]
\ No newline at end of file
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L591">generated.d.ts:591</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2 [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L573">generated.d.ts:573</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="isFile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>File</span><a href="#isFile" aria [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L575">generated.d.ts:575</a></li></ul></aside></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary clas [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index 142e681a08..9611e1b89c 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.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=" [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Operator | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=" [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Operator.html#capability" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>capability</span></a>
<a href="Operator.html#check" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>check</span></a>
<a href="Operator.html#copy" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>copy</span></a>
@@ -33,38 +33,38 @@
And the options,
please refer to the documentation of the corresponding service for the corresponding parameters.
Note that the current options key is snake_case.</p>
-</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L211">generated.d.ts:211</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="capability" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>capability</span><a href="#capability" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBo [...]
-</div><h4 class="tsd-returns-title">Returns <a href="Capability.html" class="tsd-signature-type tsd-kind-class">Capability</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L213">generated.d.ts:213</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="check" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>check</ [...]
+</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L211">generated.d.ts:211</a></li></ul></aside></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="capability" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>capability</span><a href="#capability" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBo [...]
+</div><h4 class="tsd-returns-title">Returns <a href="Capability.html" class="tsd-signature-type tsd-kind-class">Capability</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L213">generated.d.ts:213</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="check" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>check</ [...]
<p>We will send a <code>list</code> request to the given path and return any errors we met.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">check</span><span class="hl-1">();</span>
</code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L256">generated.d.ts:256</a></li></ul></aside></li></ul></section><section class [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L256">generated.d.ts:256</a></li></ul></aside></li></ul></section><section class [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">copy</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">, </span><span class="hl-2">"path/to/dest"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-s [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">copySync</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">, </span><span class="hl-2">"path/to/dest"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">createDir</span><span class="hl-1">(</span><span class="hl-2">"path/to/dir/"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typ [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">createDirSync</span><span class="hl-1">(</span><span class="hl-2">"path/to/dir/"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generat [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generat [...]
<a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>Delete not existing error won’t return errors.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">delete</span><span class="hl-1">(</span><span class="hl-2">"test"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typ [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">deleteSync</span><span class="hl-1">(</span><span class="hl-2">"test"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generat [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generat [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">isExist</span><span class="hl-1">(</span><span class="hl-2">"test"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd- [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd- [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">isExistSync</span><span class="hl-1">(</span><span class="hl-2">"test"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/gene [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">layer</span>: <a href="ExternalObject.html" class="tsd-signature-type tsd-kind-class">ExternalObject</a><span class="tsd-signature-symbol"><</span><a href="Layer.html" class="tsd-signature-type tsd-kind-class">Layer</a><span class="tsd-signature-symbol">></span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Op [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/gene [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">layer</span>: <a href="ExternalObject.html" class="tsd-signature-type tsd-kind-class">ExternalObject</a><span class="tsd-signature-symbol"><</span><a href="Layer.html" class="tsd-signature-type tsd-kind-class">Layer</a><span class="tsd-signature-symbol">></span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Op [...]
<p>This function will return an array of entries.</p>
<p>An error will be returned if given path doesn't end with <code>/</code>.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">list</span><span class="hl-1">(</span><span class="hl-2">"path/to/dir/"</span><span class="hl-1">);</span><br/ [...]
@@ -72,7 +72,7 @@ Note that the current options key is snake_case.</p>
<a id="md:list-recursively" class="tsd-anchor"></a><h4><a href="#md:list-recursively">List recursively</a></h4><p>With <code>recursive</code> option, you can list recursively.</p>
<pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">list</span><span class="hl-1">(</span><span class="hl-2">"path/to/dir/"</span><span class="hl-1">, { </span><span class="hl-5">recursive:</span><span class="hl-1"> </span><span class="hl-6">true [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
<p>This function will return an array of entries.</p>
<p>An error will be returned if given path doesn't end with <code>/</code>.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">listSync</span><span class="hl-1">(</span><span class="hl-2">"path/to/dir/"</span><span class="hl-1">);</span><br/><span class="hl-4">for</span><span class="hl-1"> (</s [...]
@@ -80,45 +80,45 @@ Note that the current options key is snake_case.</p>
<a id="md:list-recursively" class="tsd-anchor"></a><h4><a href="#md:list-recursively">List recursively</a></h4><p>With <code>recursive</code> option, you can list recursively.</p>
<pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">list</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">listSync</span><span class="hl-1">(</span><span class="hl-2">"path/to/dir/"</span><span class="hl-1">, { </span><span class="hl-5">recursive:</span><span class="hl-1"> </span><span class="hl-6">true</span><span class="hl-1"> });</span><br/><span class= [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/ListOptions.html" class="tsd-signature-type ts [...]
<p>Unit of <code>expires</code> is seconds.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">req</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">presignRead</span><span class="hl-1">(</span><span class="hl-5">path</span><span class="hl-1">, </span><span class="hl-0" [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="../i [...]
<p>Unit of <code>expires</code> is seconds.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">req</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">presignStat</span><span class="hl-1">(</span><span class="hl-5">path</span><span class="hl-1">, </span><span class="hl-0" [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="../i [...]
<p>Unit of <code>expires</code> is seconds.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">req</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">presignWrite</span><span class="hl-1">(</span><span class="hl-5">path</span><span class="hl-1">, </span><span class="hl-0 [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="../i [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">expires</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="../i [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">buf</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">read</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd- [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type ">Buffer</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd- [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">buf</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">readSync</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Buffer</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/gene [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Buffer</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/gene [...]
<p>It could be used to read large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="Reader.html" class="tsd-signature-type tsd-kind-class">Reader</a><span class="tsd-signature-symbol">></span></h4>< [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="Reader.html" class="tsd-signature-type tsd-kind-class">Reader</a><span class="tsd-signature-symbol">></span></h4>< [...]
<p>It could be used to read large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingReader.html" class="tsd-signature-type tsd-kind-class">BlockingReader</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="BlockingReader.html" class="tsd-signature-type tsd-kind-class">BlockingReader</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apach [...]
<a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>If underlying services support delete in batch, we will use batch delete instead.</p>
<a id="md:examples" class="tsd-anchor"></a><h3><a href="#md:examples">Examples</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">([</span><span class="hl-2">"abc"</span><span class="hl-1">, </span><span class="hl-2">"def"</span><span class="hl-1">]);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">paths</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&g [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">paths</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&g [...]
<a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>If underlying services support delete in batch, we will use batch delete instead.</p>
<a id="md:examples" class="tsd-anchor"></a><h3><a href="#md:examples">Examples</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">removeAll</span><span class="hl-1">(</span><span class="hl-2">"path/to/dir/"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typ [...]
<p>It's similar to <code>mv</code> command.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">rename</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">, </span><span class="hl-2">"path/to/dest"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-s [...]
<p>It's similar to <code>mv</code> command.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">renameSync</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">, </span><span class="hl-2">"path/to/dest"</span><span class="hl-1">);</span>
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">from</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">to</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd [...]
<a id="md:notes" class="tsd-anchor"></a><h3><a href="#md:notes">Notes</a></h3><p>Use stat if you:</p>
<ul>
<li>Want to detect the outside changes of a path.</li>
@@ -127,17 +127,17 @@ Note that the current options key is snake_case.</p>
<p>You may want to use <code>metadata</code> if you are working with entries returned by <code>Lister</code>. It’s highly possible that metadata you want has already been cached.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">meta</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">stat</span><span class="hl-1">(</span><span class="hl-2">"test"</span><span class="hl-1">);</span><br/><span c [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">></span></ [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a><span class="tsd-signature-symbol">></span></ [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">meta</span><span class="hl-1"> = </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">statSync</span><span class="hl-1">(</span><span class="hl-2">"test"</span><span class="hl-1">);</span><br/><span class="hl-4">if</span><span class="hl-1"> (</span><span [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/bl [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type tsd-kind-class">Metadata</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/bl [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">write</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">, </span><span class="hl-5">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><spa [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <s [...]
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writeSync</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">, </span><span class="hl-5">Buffer</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><span class="hl-2">"hello world"</span><span cla [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <s [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <s [...]
<p>It could be used to write large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/WriterOptions.html" class="tsd-signature-type [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/WriterOptions.html" class="tsd-signature-type [...]
<p>It could be used to write large file in a streaming way.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/WriterOptions.html" class="tsd-signature-type [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></h5></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/WriterOptions.html" class="tsd-signature-type [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Reader.html b/docs/nodejs/classes/Reader.html
index 97d0805bb7..dae16c5f28 100644
--- a/docs/nodejs/classes/Reader.html
+++ b/docs/nodejs/classes/Reader.html
@@ -1,11 +1,11 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Reader | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L604">generated.d.ts:604</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L604">generated.d.ts:604</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Reader.html#createReadStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Read<wbr/>Stream</span></a>
<a href="Reader.html#read" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>read</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Rea [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">ReadableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Readable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
<p>&mut self in async napi methods should be marked as unsafe</p>
</blockquote>
<p>Read bytes from this reader into given buffer.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">buf</span>: <span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">bigint</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-t [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">buf</span>: <span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">bigint</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-t [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/RetryLayer.html b/docs/nodejs/classes/RetryLayer.html
index 753a46286b..3c7a0d0793 100644
--- a/docs/nodejs/classes/RetryLayer.html
+++ b/docs/nodejs/classes/RetryLayer.html
@@ -8,27 +8,27 @@ If the operation still failed, this layer will set error to
visit <a href="https://github.com/apache/opendal/issues/1223">this issue</a> for more details.</p>
<a id="md:examples" class="tsd-anchor"></a><h1><a href="#md:examples">Examples</a></h1><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">op</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">Operator</span><span class="hl-1">(</span><span class="hl-2">"file"</span><span class="hl-1">, { </span><span class="hl-5">root:</span><span class="hl-1"> </span><spa [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L738">generated.d.ts:738</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L738">generated.d.ts:738</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" ro [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="RetryLayer.html#factor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>factor</span></a>
<a href="RetryLayer.html#jitter" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>jitter</span></a>
<a href="RetryLayer.html#maxDelay" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>max<wbr/>Delay</span></a>
<a href="RetryLayer.html#maxTimes" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>max<wbr/>Times</span></a>
<a href="RetryLayer.html#minDelay" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-262144"></use></svg><span>min<wbr/>Delay</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="RetryLayer.html#build" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>build</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ret [...]
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Ret [...]
<a id="md:panics" class="tsd-anchor"></a><h1><a href="#md:panics">Panics</a></h1><p>This function will panic if the input factor is smaller than <code>1.0</code>.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated. [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated. [...]
<p>If jitter is enabled, ExponentialBackoff will add a random jitter in <code>[0, min_delay)</code>
to current delay.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">boolean</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">boolean</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated [...]
<p>Delay will not increase if the current delay is larger than max_delay.</p>
<a id="md:notes" class="tsd-anchor"></a><h1><a href="#md:notes">Notes</a></h1><ul>
<li>The unit of max_delay is millisecond.</li>
</ul>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated. [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated. [...]
<p>Backoff will return <code>None</code> if max times are reached.</p>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated. [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated. [...]
<a id="md:notes" class="tsd-anchor"></a><h1><a href="#md:notes">Notes</a></h1><ul>
<li>The unit of min_delay is millisecond.</li>
</ul>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated. [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">v</span>: <span class="tsd-signature-type">number</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated. [...]
\ No newline at end of file
diff --git a/docs/nodejs/classes/Writer.html b/docs/nodejs/classes/Writer.html
index 0d9978b3f6..e160c21806 100644
--- a/docs/nodejs/classes/Writer.html
+++ b/docs/nodejs/classes/Writer.html
@@ -1,6 +1,6 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Writer | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src=".. [...]
manner.</p>
-</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L655">generated.d.ts:655</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/index.d.ts#L37">index.d.ts:37</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
+</div><div class="tsd-comment tsd-typography"></div></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L655">generated.d.ts:655</a></li><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/index.d.ts#L37">index.d.ts:37</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content [...]
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Writer.html#close" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>close</span></a>
<a href="Writer.html#createWriteStream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>create<wbr/>Write<wbr/>Stream</span></a>
<a href="Writer.html#write" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-2048"></use></svg><span>write</span></a>
@@ -10,11 +10,11 @@ manner.</p>
<p>Close this writer.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">);</span> [...]
</code><button>Copy</button></pre>
-</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L685">generated.d.ts:685</a></li></ul></aside></li></ul></section><section class [...]
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
+</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L685">generated.d.ts:685</a></li></ul></aside></li></ul></section><section class [...]
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type ">WritableOptions</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Writable</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href [...]
<p>&mut self in async napi methods should be marked as unsafe</p>
</blockquote>
<p>Write bytes into this writer.</p>
<a id="md:example" class="tsd-anchor"></a><h3><a href="#md:example">Example</a></h3><pre><code class="language-javascript"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">writer</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">op</span><span class="hl-1">.</span><span class="hl-0">writer</span><span class="hl-1">(</span><span class="hl-2">"path/to/file"</span><span class="hl-1">);</span> [...]
</code><button>Copy</button></pre>
-</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type [...]
\ No newline at end of file
+</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">content</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type ">Buffer</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type [...]
\ No newline at end of file
diff --git a/docs/nodejs/interfaces/ListOptions.html b/docs/nodejs/interfaces/ListOptions.html
index 8586aef651..708bb004f4 100644
--- a/docs/nodejs/interfaces/ListOptions.html
+++ b/docs/nodejs/interfaces/ListOptions.html
@@ -1,3 +1,3 @@
-<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ListOptions | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async sr [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ListOptions | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async sr [...]
<a href="ListOptions.html#recursive" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>recursive?</span></a>
-</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="limit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>limit</span><a href="#limit" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">li [...]
\ No newline at end of file
+</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="limit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>limit</span><a href="#limit" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">li [...]
\ No newline at end of file
diff --git a/docs/nodejs/interfaces/PresignedRequest.html b/docs/nodejs/interfaces/PresignedRequest.html
index 3f71ffaef5..2e8e80b4f7 100644
--- a/docs/nodejs/interfaces/PresignedRequest.html
+++ b/docs/nodejs/interfaces/PresignedRequest.html
@@ -1,8 +1,8 @@
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PresignedRequest | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script asy [...]
-</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">PresignedRequest </span><span class="tsd-signature-symbol">{ </span><br/><span> </span><a class="tsd-kind-property" href="PresignedRequest.html#headers">headers</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol"><</span><span class=" [...]
+</div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">PresignedRequest </span><span class="tsd-signature-symbol">{ </span><br/><span> </span><a class="tsd-kind-property" href="PresignedRequest.html#headers">headers</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type ">Record</span><span class="tsd-signature-symbol"><</span><span class=" [...]
<a href="PresignedRequest.html#method" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>method</span></a>
<a href="PresignedRequest.html#url" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>url</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="headers" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>headers</span><a href="#headers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">headers</span><span class="tsd-signature-symbol">: [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L100">generated.d.ts:100</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="method" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg>< [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L96">generated.d.ts:96</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="url" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><di [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L98">generated.d.ts:98</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L100">generated.d.ts:100</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="method" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg>< [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L96">generated.d.ts:96</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="url" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3><di [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L98">generated.d.ts:98</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
diff --git a/docs/nodejs/interfaces/WriteOptions.html b/docs/nodejs/interfaces/WriteOptions.html
index 72825ce261..de71761ca2 100644
--- a/docs/nodejs/interfaces/WriteOptions.html
+++ b/docs/nodejs/interfaces/WriteOptions.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>WriteOptions | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async s [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>WriteOptions | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async s [...]
<a href="WriteOptions.html#cacheControl" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>cache<wbr/>Control?</span></a>
<a href="WriteOptions.html#chunk" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>chunk?</span></a>
<a href="WriteOptions.html#contentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>content<wbr/>Disposition?</span></a>
@@ -8,12 +8,12 @@
<li>It always appends content to the end of the file.</li>
<li>It will create file if the path does not exist.</li>
</ul>
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L44">generated.d.ts:44</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="cacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>cache<wbr/>Control</span><a href="#cacheControl" aria-label="Permalink" class="tsd- [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L62">generated.d.ts:62</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="chunk" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>chunk</span><a href="#chunk" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox=" [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L44">generated.d.ts:44</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="cacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>cache<wbr/>Control</span><a href="#cacheControl" aria-label="Permalink" class="tsd- [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L62">generated.d.ts:62</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="chunk" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>chunk</span><a href="#chunk" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox=" [...]
<p>If chunk is set, the data will be chunked by the underlying writer.</p>
<a id="md:note" class="tsd-anchor"></a><h2><a href="#md:note">NOTE</a></h2><p>A service could have their own minimum chunk size while perform write
operations like multipart uploads. So the chunk size may be larger than
the given buffer size.</p>
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L56">generated.d.ts:56</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Disposition</span><a href="#contentDisposition" aria-label="Perm [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L60">generated.d.ts:60</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Type</span><a href="#contentType" aria-label="Permalink" class="tsd-anc [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L58">generated.d.ts:58</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L56">generated.d.ts:56</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Disposition</span><a href="#contentDisposition" aria-label="Perm [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L60">generated.d.ts:60</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Type</span><a href="#contentType" aria-label="Permalink" class="tsd-anc [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L58">generated.d.ts:58</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
diff --git a/docs/nodejs/interfaces/WriterOptions.html b/docs/nodejs/interfaces/WriterOptions.html
index cf8d622b92..f1b4d1315f 100644
--- a/docs/nodejs/interfaces/WriterOptions.html
+++ b/docs/nodejs/interfaces/WriterOptions.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>WriterOptions | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
+<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>WriterOptions | Apache OpenDAL™ - v0.47.3</title><meta name="description" content="Documentation for Apache OpenDAL™"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async [...]
<a href="WriterOptions.html#cacheControl" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>cache<wbr/>Control?</span></a>
<a href="WriterOptions.html#chunk" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>chunk?</span></a>
<a href="WriterOptions.html#contentDisposition" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-1024"></use></svg><span>content<wbr/>Disposition?</span></a>
@@ -8,12 +8,12 @@
<li>It always appends content to the end of the file.</li>
<li>It will create file if the path does not exist.</li>
</ul>
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L73">generated.d.ts:73</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="cacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>cache<wbr/>Control</span><a href="#cacheControl" aria-label="Permalink" class="tsd- [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L91">generated.d.ts:91</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="chunk" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>chunk</span><a href="#chunk" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox=" [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L73">generated.d.ts:73</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="cacheControl" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>cache<wbr/>Control</span><a href="#cacheControl" aria-label="Permalink" class="tsd- [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L91">generated.d.ts:91</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="chunk" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>chunk</span><a href="#chunk" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox=" [...]
<p>If chunk is set, the data will be chunked by the underlying writer.</p>
<a id="md:note" class="tsd-anchor"></a><h2><a href="#md:note">NOTE</a></h2><p>A service could have their own minimum chunk size while perform write
operations like multipart uploads. So the chunk size may be larger than
the given buffer size.</p>
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L85">generated.d.ts:85</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Disposition</span><a href="#contentDisposition" aria-label="Perm [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L89">generated.d.ts:89</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Type</span><a href="#contentType" aria-label="Permalink" class="tsd-anc [...]
-</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/79a7d11/bindings/nodejs/generated.d.ts#L87">generated.d.ts:87</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L85">generated.d.ts:85</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentDisposition" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Disposition</span><a href="#contentDisposition" aria-label="Perm [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L89">generated.d.ts:89</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="contentType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOptional">Optional</code> <span>content<wbr/>Type</span><a href="#contentType" aria-label="Permalink" class="tsd-anc [...]
+</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/apache/opendal/blob/90832a4/bindings/nodejs/generated.d.ts#L87">generated.d.ts:87</a></li></ul></aside></section></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="# [...]
\ No newline at end of file
diff --git a/docs/object-store/index.html b/docs/object-store/index.html
index 3484b31eb9..2b1a0dffc1 100644
--- a/docs/object-store/index.html
+++ b/docs/object-store/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">object_store Integration | 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/object-store"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en" [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 109d2865d1..c3c07277d1 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Welcome to Apache OpenDAL™ | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/overview"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 1bf8ce0f5e..018869c556 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -246,22 +246,22 @@
<a class="class" href="#Metadata">Metadata</a>
<ul class="memberlist">
<li>
- <a class="variable" href="#Metadata.content_length">content_length</a>
+ <a class="variable" href="#Metadata.content_type">content_type</a>
</li>
<li>
<a class="variable" href="#Metadata.content_md5">content_md5</a>
</li>
<li>
- <a class="variable" href="#Metadata.etag">etag</a>
+ <a class="variable" href="#Metadata.content_length">content_length</a>
</li>
<li>
- <a class="variable" href="#Metadata.mode">mode</a>
+ <a class="variable" href="#Metadata.etag">etag</a>
</li>
<li>
<a class="variable" href="#Metadata.content_disposition">content_disposition</a>
</li>
<li>
- <a class="variable" href="#Metadata.content_type">content_type</a>
+ <a class="variable" href="#Metadata.mode">mode</a>
</li>
</ul>
@@ -285,112 +285,112 @@
<a class="class" href="#Capability">Capability</a>
<ul class="memberlist">
<li>
- <a class="variable" href="#Capability.read_with_if_none_match">read_with_if_none_match</a>
+ <a class="variable" href="#Capability.read_with_override_cache_control">read_with_override_cache_control</a>
</li>
<li>
- <a class="variable" href="#Capability.read">read</a>
+ <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
</li>
<li>
- <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</a>
+ <a class="variable" href="#Capability.delete">delete</a>
</li>
<li>
- <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
+ <a class="variable" href="#Capability.write_total_max_size">write_total_max_size</a>
</li>
<li>
- <a class="variable" href="#Capability.presign">presign</a>
+ <a class="variable" href="#Capability.stat">stat</a>
</li>
<li>
- <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
+ <a class="variable" href="#Capability.read_with_if_none_match">read_with_if_none_match</a>
</li>
<li>
- <a class="variable" href="#Capability.read_with_override_cache_control">read_with_override_cache_control</a>
+ <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
</li>
<li>
- <a class="variable" href="#Capability.batch">batch</a>
+ <a class="variable" href="#Capability.write">write</a>
</li>
<li>
- <a class="variable" href="#Capability.write_multi_min_size">write_multi_min_size</a>
+ <a class="variable" href="#Capability.presign">presign</a>
</li>
<li>
- <a class="variable" href="#Capability.write_total_max_size">write_total_max_size</a>
+ <a class="variable" href="#Capability.read">read</a>
</li>
<li>
- <a class="variable" href="#Capability.write_can_empty">write_can_empty</a>
+ <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
</li>
<li>
- <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
+ <a class="variable" href="#Capability.write_can_append">write_can_append</a>
</li>
<li>
- <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
+ <a class="variable" href="#Capability.read_with_override_content_type">read_with_override_content_type</a>
</li>
<li>
- <a class="variable" href="#Capability.rename">rename</a>
+ <a class="variable" href="#Capability.write_with_cache_control">write_with_cache_control</a>
</li>
<li>
- <a class="variable" href="#Capability.write_multi_max_size">write_multi_max_size</a>
+ <a class="variable" href="#Capability.blocking">blocking</a>
</li>
<li>
- <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
+ <a class="variable" href="#Capability.create_dir">create_dir</a>
</li>
<li>
- <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
+ <a class="variable" href="#Capability.batch_max_operations">batch_max_operations</a>
</li>
<li>
<a class="variable" href="#Capability.presign_read">presign_read</a>
</li>
<li>
- <a class="variable" href="#Capability.write_can_append">write_can_append</a>
+ <a class="variable" href="#Capability.presign_write">presign_write</a>
</li>
<li>
- <a class="variable" href="#Capability.batch_delete">batch_delete</a>
+ <a class="variable" href="#Capability.write_can_multi">write_can_multi</a>
</li>
<li>
- <a class="variable" href="#Capability.presign_write">presign_write</a>
+ <a class="variable" href="#Capability.write_can_empty">write_can_empty</a>
</li>
<li>
- <a class="variable" href="#Capability.delete">delete</a>
+ <a class="variable" href="#Capability.write_multi_min_size">write_multi_min_size</a>
</li>
<li>
- <a class="variable" href="#Capability.blocking">blocking</a>
+ <a class="variable" href="#Capability.batch">batch</a>
</li>
<li>
- <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
+ <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
</li>
<li>
- <a class="variable" href="#Capability.list">list</a>
+ <a class="variable" href="#Capability.read_with_override_content_disposition">read_with_override_content_disposition</a>
</li>
<li>
- <a class="variable" href="#Capability.read_with_override_content_disposition">read_with_override_content_disposition</a>
+ <a class="variable" href="#Capability.batch_delete">batch_delete</a>
</li>
<li>
- <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</a>
+ <a class="variable" href="#Capability.write_with_content_disposition">write_with_content_disposition</a>
</li>
<li>
- <a class="variable" href="#Capability.copy">copy</a>
+ <a class="variable" href="#Capability.list_with_start_after">list_with_start_after</a>
</li>
<li>
- <a class="variable" href="#Capability.list_with_limit">list_with_limit</a>
+ <a class="variable" href="#Capability.list_with_recursive">list_with_recursive</a>
</li>
<li>
- <a class="variable" href="#Capability.stat_with_if_match">stat_with_if_match</a>
+ <a class="variable" href="#Capability.write_multi_align_size">write_multi_align_size</a>
</li>
<li>
- <a class="variable" href="#Capability.write">write</a>
+ <a class="variable" href="#Capability.read_with_if_match">read_with_if_match</a>
</li>
<li>
- <a class="variable" href="#Capability.stat">stat</a>
+ <a class="variable" href="#Capability.rename">rename</a>
</li>
<li>
- <a class="variable" href="#Capability.write_with_content_type">write_with_content_type</a>
+ <a class="variable" href="#Capability.copy">copy</a>
</li>
<li>
- <a class="variable" href="#Capability.stat_with_if_none_match">stat_with_if_none_match</a>
+ <a class="variable" href="#Capability.list">list</a>
</li>
<li>
- <a class="variable" href="#Capability.presign_stat">presign_stat</a>
+ <a class="variable" href="#Capability.write_multi_max_size">write_multi_max_size</a>
</li>
<li>
- <a class="variable" href="#Capability.create_dir">create_dir</a>
+ <a class="variable" href="#Capability.presign_stat">presign_stat</a>
</li>
</ul>
@@ -1462,15 +1462,15 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
- <div id="Metadata.content_length" class="classattr">
+ <div id="Metadata.content_type" class="classattr">
<div class="attr variable">
- <span class="name">content_length</span><span class="annotation">: int</span>
+ <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
</div>
- <a class="headerlink" href="#Metadata.content_length"></a>
+ <a class="headerlink" href="#Metadata.content_type"></a>
- <div class="docstring"><p>Content length of this entry.</p>
+ <div class="docstring"><p>Content Type of this entry.</p>
</div>
@@ -1488,28 +1488,28 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
</div>
- <div id="Metadata.etag" class="classattr">
+ <div id="Metadata.content_length" class="classattr">
<div class="attr variable">
- <span class="name">etag</span><span class="annotation">: Optional[str]</span>
+ <span class="name">content_length</span><span class="annotation">: int</span>
</div>
- <a class="headerlink" href="#Metadata.etag"></a>
+ <a class="headerlink" href="#Metadata.content_length"></a>
- <div class="docstring"><p>ETag of this entry.</p>
+ <div class="docstring"><p>Content length of this entry.</p>
</div>
</div>
- <div id="Metadata.mode" class="classattr">
+ <div id="Metadata.etag" class="classattr">
<div class="attr variable">
- <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">EntryMode</a></span>
+ <span class="name">etag</span><span class="annotation">: Optional[str]</span>
</div>
- <a class="headerlink" href="#Metadata.mode"></a>
+ <a class="headerlink" href="#Metadata.etag"></a>
- <div class="docstring"><p>mode represent this entry's mode.</p>
+ <div class="docstring"><p>ETag of this entry.</p>
</div>
@@ -1525,15 +1525,15 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
</div>
- <div id="Metadata.content_type" class="classattr">
+ <div id="Metadata.mode" class="classattr">
<div class="attr variable">
- <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
+ <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">EntryMode</a></span>
</div>
- <a class="headerlink" href="#Metadata.content_type"></a>
+ <a class="headerlink" href="#Metadata.mode"></a>
- <div class="docstring"><p>Content Type of this entry.</p>
+ <div class="docstring"><p>mode represent this entry's mode.</p>
</div>
@@ -1606,229 +1606,225 @@ by current Operator.</p>
</div>
- <div id="Capability.read_with_if_none_match" class="classattr">
+ <div id="Capability.read_with_override_cache_control" class="classattr">
<div class="attr variable">
- <span class="name">read_with_if_none_match</span><span class="annotation">: bool</span>
+ <span class="name">read_with_override_cache_control</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
+ <a class="headerlink" href="#Capability.read_with_override_cache_control"></a>
- <div class="docstring"><p>If operator supports read with if none match.</p>
+ <div class="docstring"><p>if operator supports read with override cache control.</p>
</div>
</div>
- <div id="Capability.read" class="classattr">
+ <div id="Capability.stat_with_if_match" class="classattr">
<div class="attr variable">
- <span class="name">read</span><span class="annotation">: bool</span>
+ <span class="name">stat_with_if_match</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.read"></a>
+ <a class="headerlink" href="#Capability.stat_with_if_match"></a>
- <div class="docstring"><p>If operator supports read.</p>
+ <div class="docstring"><p>If operator supports stat with if match.</p>
</div>
</div>
- <div id="Capability.read_with_override_content_type" class="classattr">
+ <div id="Capability.delete" class="classattr">
<div class="attr variable">
- <span class="name">read_with_override_content_type</span><span class="annotation">: bool</span>
+ <span class="name">delete</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.read_with_override_content_type"></a>
+ <a class="headerlink" href="#Capability.delete"></a>
- <div class="docstring"><p>if operator supports read with override content type.</p>
+ <div class="docstring"><p>If operator supports delete.</p>
</div>
</div>
- <div id="Capability.write_with_content_disposition" class="classattr">
+ <div id="Capability.write_total_max_size" class="classattr">
<div class="attr variable">
- <span class="name">write_with_content_disposition</span><span class="annotation">: bool</span>
+ <span class="name">write_total_max_size</span><span class="annotation">: Optional[int]</span>
</div>
- <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
+ <a class="headerlink" href="#Capability.write_total_max_size"></a>
- <div class="docstring"><p>If operator supports write with content disposition.</p>
+ <div class="docstring"><p>write_total_max_size is the max size that services support in write_total.</p>
+
+<p>For example, Cloudflare D1 supports 1MB as max in write_total.</p>
</div>
</div>
- <div id="Capability.presign" class="classattr">
+ <div id="Capability.stat" class="classattr">
<div class="attr variable">
- <span class="name">presign</span><span class="annotation">: bool</span>
+ <span class="name">stat</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.presign"></a>
+ <a class="headerlink" href="#Capability.stat"></a>
- <div class="docstring"><p>If operator supports presign.</p>
+ <div class="docstring"><p>If operator supports stat.</p>
</div>
</div>
- <div id="Capability.write_with_cache_control" class="classattr">
+ <div id="Capability.read_with_if_none_match" class="classattr">
<div class="attr variable">
- <span class="name">write_with_cache_control</span><span class="annotation">: bool</span>
+ <span class="name">read_with_if_none_match</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_with_cache_control"></a>
+ <a class="headerlink" href="#Capability.read_with_if_none_match"></a>
- <div class="docstring"><p>If operator supports write with cache control.</p>
+ <div class="docstring"><p>If operator supports read with if none match.</p>
</div>
</div>
- <div id="Capability.read_with_override_cache_control" class="classattr">
+ <div id="Capability.write_with_content_type" class="classattr">
<div class="attr variable">
- <span class="name">read_with_override_cache_control</span><span class="annotation">: bool</span>
+ <span class="name">write_with_content_type</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.read_with_override_cache_control"></a>
+ <a class="headerlink" href="#Capability.write_with_content_type"></a>
- <div class="docstring"><p>if operator supports read with override cache control.</p>
+ <div class="docstring"><p>If operator supports write with content type.</p>
</div>
</div>
- <div id="Capability.batch" class="classattr">
+ <div id="Capability.write" class="classattr">
<div class="attr variable">
- <span class="name">batch</span><span class="annotation">: bool</span>
+ <span class="name">write</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.batch"></a>
+ <a class="headerlink" href="#Capability.write"></a>
- <div class="docstring"><p>If operator supports batch.</p>
+ <div class="docstring"><p>If operator supports write.</p>
</div>
</div>
- <div id="Capability.write_multi_min_size" class="classattr">
+ <div id="Capability.presign" class="classattr">
<div class="attr variable">
- <span class="name">write_multi_min_size</span><span class="annotation">: Optional[int]</span>
+ <span class="name">presign</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_multi_min_size"></a>
+ <a class="headerlink" href="#Capability.presign"></a>
- <div class="docstring"><p>write_multi_min_size is the min size that services support in write_multi.</p>
-
-<p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
+ <div class="docstring"><p>If operator supports presign.</p>
</div>
</div>
- <div id="Capability.write_total_max_size" class="classattr">
+ <div id="Capability.read" class="classattr">
<div class="attr variable">
- <span class="name">write_total_max_size</span><span class="annotation">: Optional[int]</span>
+ <span class="name">read</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_total_max_size"></a>
+ <a class="headerlink" href="#Capability.read"></a>
- <div class="docstring"><p>write_total_max_size is the max size that services support in write_total.</p>
-
-<p>For example, Cloudflare D1 supports 1MB as max in write_total.</p>
+ <div class="docstring"><p>If operator supports read.</p>
</div>
</div>
- <div id="Capability.write_can_empty" class="classattr">
+ <div id="Capability.list_with_limit" class="classattr">
<div class="attr variable">
- <span class="name">write_can_empty</span><span class="annotation">: bool</span>
+ <span class="name">list_with_limit</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_can_empty"></a>
+ <a class="headerlink" href="#Capability.list_with_limit"></a>
- <div class="docstring"><p>If operator supports write with empty content.</p>
+ <div class="docstring"><p>If backend supports list with limit.</p>
</div>
</div>
- <div id="Capability.batch_max_operations" class="classattr">
+ <div id="Capability.write_can_append" class="classattr">
<div class="attr variable">
- <span class="name">batch_max_operations</span><span class="annotation">: Optional[int]</span>
+ <span class="name">write_can_append</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.batch_max_operations"></a>
+ <a class="headerlink" href="#Capability.write_can_append"></a>
- <div class="docstring"><p>The max operations that operator supports in batch.</p>
+ <div class="docstring"><p>If operator supports write by append.</p>
</div>
</div>
- <div id="Capability.read_with_if_match" class="classattr">
+ <div id="Capability.read_with_override_content_type" class="classattr">
<div class="attr variable">
- <span class="name">read_with_if_match</span><span class="annotation">: bool</span>
+ <span class="name">read_with_override_content_type</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.read_with_if_match"></a>
+ <a class="headerlink" href="#Capability.read_with_override_content_type"></a>
- <div class="docstring"><p>If operator supports read with if match.</p>
+ <div class="docstring"><p>if operator supports read with override content type.</p>
</div>
</div>
- <div id="Capability.rename" class="classattr">
+ <div id="Capability.write_with_cache_control" class="classattr">
<div class="attr variable">
- <span class="name">rename</span><span class="annotation">: bool</span>
+ <span class="name">write_with_cache_control</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.rename"></a>
+ <a class="headerlink" href="#Capability.write_with_cache_control"></a>
- <div class="docstring"><p>If operator supports rename.</p>
+ <div class="docstring"><p>If operator supports write with cache control.</p>
</div>
</div>
- <div id="Capability.write_multi_max_size" class="classattr">
+ <div id="Capability.blocking" class="classattr">
<div class="attr variable">
- <span class="name">write_multi_max_size</span><span class="annotation">: Optional[int]</span>
+ <span class="name">blocking</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_multi_max_size"></a>
+ <a class="headerlink" href="#Capability.blocking"></a>
- <div class="docstring"><p>write_multi_max_size is the max size that services support in write_multi.</p>
-
-<p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
+ <div class="docstring"><p>If operator supports blocking.</p>
</div>
</div>
- <div id="Capability.list_with_recursive" class="classattr">
+ <div id="Capability.create_dir" class="classattr">
<div class="attr variable">
- <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
+ <span class="name">create_dir</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.list_with_recursive"></a>
+ <a class="headerlink" href="#Capability.create_dir"></a>
- <div class="docstring"><p>If backend supports list without delimiter.</p>
+ <div class="docstring"><p>If operator supports create dir.</p>
</div>
</div>
- <div id="Capability.write_can_multi" class="classattr">
+ <div id="Capability.batch_max_operations" class="classattr">
<div class="attr variable">
- <span class="name">write_can_multi</span><span class="annotation">: bool</span>
+ <span class="name">batch_max_operations</span><span class="annotation">: Optional[int]</span>
</div>
- <a class="headerlink" href="#Capability.write_can_multi"></a>
+ <a class="headerlink" href="#Capability.batch_max_operations"></a>
- <div class="docstring"><p>If operator supports write can be called in multi times.</p>
+ <div class="docstring"><p>The max operations that operator supports in batch.</p>
</div>
@@ -1846,238 +1842,242 @@ by current Operator.</p>
</div>
- <div id="Capability.write_can_append" class="classattr">
+ <div id="Capability.presign_write" class="classattr">
<div class="attr variable">
- <span class="name">write_can_append</span><span class="annotation">: bool</span>
+ <span class="name">presign_write</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_can_append"></a>
+ <a class="headerlink" href="#Capability.presign_write"></a>
- <div class="docstring"><p>If operator supports write by append.</p>
+ <div class="docstring"><p>If operator supports presign write.</p>
</div>
</div>
- <div id="Capability.batch_delete" class="classattr">
+ <div id="Capability.write_can_multi" class="classattr">
<div class="attr variable">
- <span class="name">batch_delete</span><span class="annotation">: bool</span>
+ <span class="name">write_can_multi</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.batch_delete"></a>
+ <a class="headerlink" href="#Capability.write_can_multi"></a>
- <div class="docstring"><p>If operator supports batch delete.</p>
+ <div class="docstring"><p>If operator supports write can be called in multi times.</p>
</div>
</div>
- <div id="Capability.presign_write" class="classattr">
+ <div id="Capability.write_can_empty" class="classattr">
<div class="attr variable">
- <span class="name">presign_write</span><span class="annotation">: bool</span>
+ <span class="name">write_can_empty</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.presign_write"></a>
+ <a class="headerlink" href="#Capability.write_can_empty"></a>
- <div class="docstring"><p>If operator supports presign write.</p>
+ <div class="docstring"><p>If operator supports write with empty content.</p>
</div>
</div>
- <div id="Capability.delete" class="classattr">
+ <div id="Capability.write_multi_min_size" class="classattr">
<div class="attr variable">
- <span class="name">delete</span><span class="annotation">: bool</span>
+ <span class="name">write_multi_min_size</span><span class="annotation">: Optional[int]</span>
</div>
- <a class="headerlink" href="#Capability.delete"></a>
+ <a class="headerlink" href="#Capability.write_multi_min_size"></a>
- <div class="docstring"><p>If operator supports delete.</p>
+ <div class="docstring"><p>write_multi_min_size is the min size that services support in write_multi.</p>
+
+<p>For example, AWS S3 requires at least 5MiB in write_multi expect the last one.</p>
</div>
</div>
- <div id="Capability.blocking" class="classattr">
+ <div id="Capability.batch" class="classattr">
<div class="attr variable">
- <span class="name">blocking</span><span class="annotation">: bool</span>
+ <span class="name">batch</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.blocking"></a>
+ <a class="headerlink" href="#Capability.batch"></a>
- <div class="docstring"><p>If operator supports blocking.</p>
+ <div class="docstring"><p>If operator supports batch.</p>
</div>
</div>
- <div id="Capability.write_multi_align_size" class="classattr">
+ <div id="Capability.stat_with_if_none_match" class="classattr">
<div class="attr variable">
- <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
+ <span class="name">stat_with_if_none_match</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_multi_align_size"></a>
+ <a class="headerlink" href="#Capability.stat_with_if_none_match"></a>
- <div class="docstring"><p>write_multi_align_size is the align size that services required in write_multi.</p>
-
-<p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
+ <div class="docstring"><p>If operator supports stat with if none match.</p>
</div>
</div>
- <div id="Capability.list" class="classattr">
+ <div id="Capability.read_with_override_content_disposition" class="classattr">
<div class="attr variable">
- <span class="name">list</span><span class="annotation">: bool</span>
+ <span class="name">read_with_override_content_disposition</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.list"></a>
+ <a class="headerlink" href="#Capability.read_with_override_content_disposition"></a>
- <div class="docstring"><p>If operator supports list.</p>
+ <div class="docstring"><p>if operator supports read with override content disposition.</p>
</div>
</div>
- <div id="Capability.read_with_override_content_disposition" class="classattr">
+ <div id="Capability.batch_delete" class="classattr">
<div class="attr variable">
- <span class="name">read_with_override_content_disposition</span><span class="annotation">: bool</span>
+ <span class="name">batch_delete</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.read_with_override_content_disposition"></a>
+ <a class="headerlink" href="#Capability.batch_delete"></a>
- <div class="docstring"><p>if operator supports read with override content disposition.</p>
+ <div class="docstring"><p>If operator supports batch delete.</p>
</div>
</div>
- <div id="Capability.list_with_start_after" class="classattr">
+ <div id="Capability.write_with_content_disposition" class="classattr">
<div class="attr variable">
- <span class="name">list_with_start_after</span><span class="annotation">: bool</span>
+ <span class="name">write_with_content_disposition</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.list_with_start_after"></a>
+ <a class="headerlink" href="#Capability.write_with_content_disposition"></a>
- <div class="docstring"><p>If backend supports list with start after.</p>
+ <div class="docstring"><p>If operator supports write with content disposition.</p>
</div>
</div>
- <div id="Capability.copy" class="classattr">
+ <div id="Capability.list_with_start_after" class="classattr">
<div class="attr variable">
- <span class="name">copy</span><span class="annotation">: bool</span>
+ <span class="name">list_with_start_after</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.copy"></a>
+ <a class="headerlink" href="#Capability.list_with_start_after"></a>
- <div class="docstring"><p>If operator supports copy.</p>
+ <div class="docstring"><p>If backend supports list with start after.</p>
</div>
</div>
- <div id="Capability.list_with_limit" class="classattr">
+ <div id="Capability.list_with_recursive" class="classattr">
<div class="attr variable">
- <span class="name">list_with_limit</span><span class="annotation">: bool</span>
+ <span class="name">list_with_recursive</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.list_with_limit"></a>
+ <a class="headerlink" href="#Capability.list_with_recursive"></a>
- <div class="docstring"><p>If backend supports list with limit.</p>
+ <div class="docstring"><p>If backend supports list without delimiter.</p>
</div>
</div>
- <div id="Capability.stat_with_if_match" class="classattr">
+ <div id="Capability.write_multi_align_size" class="classattr">
<div class="attr variable">
- <span class="name">stat_with_if_match</span><span class="annotation">: bool</span>
+ <span class="name">write_multi_align_size</span><span class="annotation">: Optional[int]</span>
</div>
- <a class="headerlink" href="#Capability.stat_with_if_match"></a>
+ <a class="headerlink" href="#Capability.write_multi_align_size"></a>
- <div class="docstring"><p>If operator supports stat with if match.</p>
+ <div class="docstring"><p>write_multi_align_size is the align size that services required in write_multi.</p>
+
+<p>For example, Google GCS requires align size to 256KiB in write_multi.</p>
</div>
</div>
- <div id="Capability.write" class="classattr">
+ <div id="Capability.read_with_if_match" class="classattr">
<div class="attr variable">
- <span class="name">write</span><span class="annotation">: bool</span>
+ <span class="name">read_with_if_match</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write"></a>
+ <a class="headerlink" href="#Capability.read_with_if_match"></a>
- <div class="docstring"><p>If operator supports write.</p>
+ <div class="docstring"><p>If operator supports read with if match.</p>
</div>
</div>
- <div id="Capability.stat" class="classattr">
+ <div id="Capability.rename" class="classattr">
<div class="attr variable">
- <span class="name">stat</span><span class="annotation">: bool</span>
+ <span class="name">rename</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.stat"></a>
+ <a class="headerlink" href="#Capability.rename"></a>
- <div class="docstring"><p>If operator supports stat.</p>
+ <div class="docstring"><p>If operator supports rename.</p>
</div>
</div>
- <div id="Capability.write_with_content_type" class="classattr">
+ <div id="Capability.copy" class="classattr">
<div class="attr variable">
- <span class="name">write_with_content_type</span><span class="annotation">: bool</span>
+ <span class="name">copy</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.write_with_content_type"></a>
+ <a class="headerlink" href="#Capability.copy"></a>
- <div class="docstring"><p>If operator supports write with content type.</p>
+ <div class="docstring"><p>If operator supports copy.</p>
</div>
</div>
- <div id="Capability.stat_with_if_none_match" class="classattr">
+ <div id="Capability.list" class="classattr">
<div class="attr variable">
- <span class="name">stat_with_if_none_match</span><span class="annotation">: bool</span>
+ <span class="name">list</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.stat_with_if_none_match"></a>
+ <a class="headerlink" href="#Capability.list"></a>
- <div class="docstring"><p>If operator supports stat with if none match.</p>
+ <div class="docstring"><p>If operator supports list.</p>
</div>
</div>
- <div id="Capability.presign_stat" class="classattr">
+ <div id="Capability.write_multi_max_size" class="classattr">
<div class="attr variable">
- <span class="name">presign_stat</span><span class="annotation">: bool</span>
+ <span class="name">write_multi_max_size</span><span class="annotation">: Optional[int]</span>
</div>
- <a class="headerlink" href="#Capability.presign_stat"></a>
+ <a class="headerlink" href="#Capability.write_multi_max_size"></a>
- <div class="docstring"><p>If operator supports presign stat.</p>
+ <div class="docstring"><p>write_multi_max_size is the max size that services support in write_multi.</p>
+
+<p>For example, AWS S3 supports 5GiB as max in write_multi.</p>
</div>
</div>
- <div id="Capability.create_dir" class="classattr">
+ <div id="Capability.presign_stat" class="classattr">
<div class="attr variable">
- <span class="name">create_dir</span><span class="annotation">: bool</span>
+ <span class="name">presign_stat</span><span class="annotation">: bool</span>
</div>
- <a class="headerlink" href="#Capability.create_dir"></a>
+ <a class="headerlink" href="#Capability.presign_stat"></a>
- <div class="docstring"><p>If operator supports create dir.</p>
+ <div class="docstring"><p>If operator supports presign stat.</p>
</div>
diff --git a/docs/python/search.js b/docs/python/search.js
index 53c8a2a13a..ce3447b5c1 100644
--- a/docs/python/search.js
+++ b/docs/python/search.js
@@ -1 +1 @@
-window.pdocSearch=function(){!function(){var a=function(e){var t=new a.Index;return t.pipeline.add(a.trimmer,a.stopWordFilter,a.stemmer),e&&e.call(t,t),t};a.version="0.9.5",lunr=a,a.utils={},a.utils.warn=function(a){return function(e){a.console&&console.warn&&console.warn(e)}}(this),a.utils.toString=function(a){return null==a?"":a.toString()},a.EventEmitter=function(){this.events={}},a.EventEmitter.prototype.addListener=function(){var a=Array.prototype.slice.call(arguments),e=a.pop(),t=a [...]
\ No newline at end of file
+window.pdocSearch=function(){!function(){var a=function(e){var t=new a.Index;return t.pipeline.add(a.trimmer,a.stopWordFilter,a.stemmer),e&&e.call(t,t),t};a.version="0.9.5",lunr=a,a.utils={},a.utils.warn=function(a){return function(e){a.console&&console.warn&&console.warn(e)}}(this),a.utils.toString=function(a){return null==a?"":a.toString()},a.EventEmitter=function(){this.events={}},a.EventEmitter.prototype.addListener=function(){var a=Array.prototype.slice.call(arguments),e=a.pop(),t=a [...]
\ No newline at end of file
diff --git a/docs/quickstart/index.html b/docs/quickstart/index.html
index 182c7ae059..2fea503e29 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Quickstart | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/quickstart"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><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.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/rust-core/index.html b/docs/rust-core/index.html
index 25f3a28a23..7292206ba1 100644
--- a/docs/rust-core/index.html
+++ b/docs/rust-core/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Rust Core | 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/rust-core"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tr [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/docs/rust/opendal/enum.EntryMode.html b/docs/rust/opendal/enum.EntryMode.html
index 261f57a17a..dddb145c31 100644
--- a/docs/rust/opendal/enum.EntryMode.html
+++ b/docs/rust/opendal/enum.EntryMode.html
@@ -8,7 +8,7 @@
</div><section id="variant.Unknown" class="variant"><a href="#variant.Unknown" class="anchor">§</a><h3 class="code-header">Unknown</h3></section><div class="docblock"><p>Unknown means we don’t know what we can do on this path.</p>
</div></div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#32-52">source</a><a href="#impl-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.EntryMode.html" title="enum opendal::EntryMode">En [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_dir" class="method"><a class="src rightside" href="../src/opendal/types/mode.rs.html#39-41">source</a><h4 class="code-header">pub fn <a href="#method.is_dir" class="fn">is_dir</a>(self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if this mode is DIR.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#22">source</a><a href="#impl-Clone-for-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a class=" [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#22">source</a><a href="#impl-Clone-for-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a class=" [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-EntryMode" class="impl"><a class="src rightside" href="../src/opendal/types/mode.rs.html#22">source</a><a href="#impl-Copy-for-EntryMode" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="enum.EntryMode.html" title [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/docs/rust/opendal/enum.Metakey.html b/docs/rust/opendal/enum.Metakey.html
index aaad1e6831..a2fdf97539 100644
--- a/docs/rust/opendal/enum.Metakey.html
+++ b/docs/rust/opendal/enum.Metakey.html
@@ -33,9 +33,9 @@ already contains all metadata.</p>
</div><section id="variant.LastModified" class="variant"><a href="#variant.LastModified" class="anchor">§</a><h3 class="code-header">LastModified</h3></section><div class="docblock"><p>Key for last modified.</p>
</div><section id="variant.Version" class="variant"><a href="#variant.Version" class="anchor">§</a><h3 class="code-header">Version</h3></section><div class="docblock"><p>Key for version.</p>
</div><section id="variant.UserMetaData" class="variant"><a href="#variant.UserMetaData" class="anchor">§</a><h3 class="code-header">UserMetaData</h3></section><div class="docblock"><p>Key for user metadata</p>
-</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BitAnd%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#531-573">source</a><a href="#impl-BitAnd%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a class= [...]
+</div></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BitAnd%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#531-573">source</a><a href="#impl-BitAnd%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a class= [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Rem%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#531-573">source</a><a href="#impl-Rem%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Rem%3CR%3E-for-Metakey" class="impl"><a class="src rightside" href="../src/opendal/types/metadata.rs.html#531-573">source</a><a href="#impl-Rem%3CR%3E-for-Metakey" class="anchor">§</a><h3 class="code-header">impl<R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:/ [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/docs/rust/opendal/enum.Scheme.html b/docs/rust/opendal/enum.Scheme.html
index e3b0a5690c..db833624c1 100644
--- a/docs/rust/opendal/enum.Scheme.html
+++ b/docs/rust/opendal/enum.Scheme.html
@@ -154,7 +154,7 @@ This function returns all enabled schemes so users can make decisions based on i
<span class="kw">if </span>!enabled_schemes.contains(<span class="kw-2">&</span>Scheme::Memory) {
<span class="macro">panic!</span>(<span class="string">"s3 support is not enabled"</span>)
}</code></pre></div>
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Scheme" class="impl"><a class="src rightside" href="../src/opendal/types/scheme.rs.html#32">source</a><a href="#impl-Clone-for-Scheme" class="anchor">§</a><h3 class="code-header">impl <a class="trai [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Scheme" class="impl"><a class="src rightside" href="../src/opendal/types/scheme.rs.html#32">source</a><a href="#impl-Clone-for-Scheme" class="anchor">§</a><h3 class="code-header">impl <a class="trai [...]
H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></d [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
diff --git a/docs/rust/opendal/raw/enum.FourWays.html b/docs/rust/opendal/raw/enum.FourWays.html
index 8505bdead5..ddbfc0b6f1 100644
--- a/docs/rust/opendal/raw/enum.FourWays.html
+++ b/docs/rust/opendal/raw/enum.FourWays.html
@@ -17,7 +17,7 @@
ONE: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>,
TWO: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>,
THREE: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>,
- FOUR: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.read" class="method trait-impl"><a class="src rightside" href="../../src/opendal/raw/enum_utils.rs.html#195-202">source</a><a href="#method.read" class="anchor">§</a><h4 class="code-header">fn <a href="oio/trait.BlockingRead.html#tymethod.r [...]
+ FOUR: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.read-1" class="method trait-impl"><a class="src rightside" href="../../src/opendal/raw/enum_utils.rs.html#195-202">source</a><a href="#method.read-1" class="anchor">§</a><h4 class="code-header">fn <a href="oio/trait.BlockingRead.html#tymeth [...]
ONE: <a class="trait" href="oio/trait.List.html" title="trait opendal::raw::oio::List">List</a>,
TWO: <a class="trait" href="oio/trait.List.html" title="trait opendal::raw::oio::List">List</a>,
THREE: <a class="trait" href="oio/trait.List.html" title="trait opendal::raw::oio::List">List</a>,
@@ -25,7 +25,7 @@
ONE: <a class="trait" href="oio/trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>,
TWO: <a class="trait" href="oio/trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>,
THREE: <a class="trait" href="oio/trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>,
- FOUR: <a class="trait" href="oio/trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.read-1" class="method trait-impl"><a class="src rightside" href="../../src/opendal/raw/enum_utils.rs.html#178-185">source</a><a href="#method.read-1" class="anchor">§</a><h4 class="code-header">async fn <a href="oio/trait.Read.html#tymethod.read" class="fn">read</ [...]
+ FOUR: <a class="trait" href="oio/trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.read" class="method trait-impl"><a class="src rightside" href="../../src/opendal/raw/enum_utils.rs.html#178-185">source</a><a href="#method.read" class="anchor">§</a><h4 class="code-header">async fn <a href="oio/trait.Read.html#tymethod.read" class="fn">read</a>(& [...]
ONE: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,
TWO: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,
THREE: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,
diff --git a/docs/rust/opendal/raw/enum.Operation.html b/docs/rust/opendal/raw/enum.Operation.html
index 3fea1bca62..38e6c7a9f8 100644
--- a/docs/rust/opendal/raw/enum.Operation.html
+++ b/docs/rust/opendal/raw/enum.Operation.html
@@ -60,7 +60,7 @@
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_oneshot" class="method"><a class="src rightside" href="../../src/opendal/raw/operation.rs.html#95-105">source</a><h4 class="code-header">pub fn <a href="#method.is_oneshot" class="fn">is_oneshot</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if given operation is oneshot or not.</p>
<p>For example, <code>Stat</code> is oneshot but <code>ReaderRead</code> could happen multiple times.</p>
<p>This function can be used to decide take actions based on operations like logging.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Operation" class="impl"><a class="src rightside" href="../../src/opendal/raw/operation.rs.html#22">source</a><a href="#impl-Clone-for-Operation" class="anchor">§</a><h3 class="code-header">impl <a c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Operation" class="impl"><a class="src rightside" href="../../src/opendal/raw/operation.rs.html#22">source</a><a href="#impl-Clone-for-Operation" class="anchor">§</a><h3 class="code-header">impl <a c [...]
H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></d [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
diff --git a/docs/rust/opendal/raw/oio/trait.List.html b/docs/rust/opendal/raw/oio/trait.List.html
index d57bc344b3..1219503eaa 100644
--- a/docs/rust/opendal/raw/oio/trait.List.html
+++ b/docs/rust/opendal/raw/oio/trait.List.html
@@ -15,4 +15,4 @@ to <code>next</code> will always get the same result.</p>
ONE: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,
TWO: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,
THREE: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,
- FOUR: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,</div></h3></section><section id="impl-List-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#124-140">source</a><a href="#impl-List-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>> <a class= [...]
\ No newline at end of file
+ FOUR: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>,</div></h3></section><section id="impl-List-for-HierarchyLister%3CP%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/list/hierarchy_list.rs.html#124-140">source</a><a href="#impl-List-for-HierarchyLister%3CP%3E" class="anchor">§</a><h3 class="code-header">impl<P: <a class="trait" href="trait.List.html" title="trait opendal::raw::oio::List">List</a>> <a class= [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.Write.html b/docs/rust/opendal/raw/oio/trait.Write.html
index 6b528a92fe..5325d8be33 100644
--- a/docs/rust/opendal/raw/oio/trait.Write.html
+++ b/docs/rust/opendal/raw/oio/trait.Write.html
@@ -18,4 +18,4 @@
</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="im [...]
W: <a class="trait" href="trait.AppendWrite.html" title="trait opendal::raw::oio::AppendWrite">AppendWrite</a>,</div></h3></section><section id="impl-Write-for-BlockWriter%3CW%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/block_write.rs.html#163-235">source</a><a href="#impl-Write-for-BlockWriter%3CW%3E" class="anchor">§</a><h3 class="code-header">impl<W> <a class="trait" href="trait.Write.html" title="trait opendal::raw::oio::Write">Write</ [...]
W: <a class="trait" href="trait.BlockWrite.html" title="trait opendal::raw::oio::BlockWrite">BlockWrite</a>,</div></h3></section><section id="impl-Write-for-MultipartWriter%3CW%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/multipart_write.rs.html#202-301">source</a><a href="#impl-Write-for-MultipartWriter%3CW%3E" class="anchor">§</a><h3 class="code-header">impl<W> <a class="trait" href="trait.Write.html" title="trait opendal::raw::oio::Write [...]
- W: <a class="trait" href="trait.MultipartWrite.html" title="trait opendal::raw::oio::MultipartWrite">MultipartWrite</a>,</div></h3></section><section id="impl-Write-for-OneShotWriter%3CW%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/one_shot_write.rs.html#52-77">source</a><a href="#impl-Write-for-OneShotWriter%3CW%3E" class="anchor">§</a><h3 class="code-header">impl<W: <a class="trait" href="trait.OneShotWrite.html" title="trait opendal::raw::o [...]
\ No newline at end of file
+ W: <a class="trait" href="trait.MultipartWrite.html" title="trait opendal::raw::oio::MultipartWrite">MultipartWrite</a>,</div></h3></section><section id="impl-Write-for-OneShotWriter%3CW%3E" class="impl"><a class="src rightside" href="../../../src/opendal/raw/oio/write/one_shot_write.rs.html#52-77">source</a><a href="#impl-Write-for-OneShotWriter%3CW%3E" class="anchor">§</a><h3 class="code-header">impl<W: <a class="trait" href="trait.OneShotWrite.html" title="trait opendal::raw::o [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/struct.BytesContentRange.html b/docs/rust/opendal/raw/struct.BytesContentRange.html
index ff19e17dfe..f2a94111ab 100644
--- a/docs/rust/opendal/raw/struct.BytesContentRange.html
+++ b/docs/rust/opendal/raw/struct.BytesContentRange.html
@@ -20,8 +20,8 @@ Please make sure their comes up with <code>with_range</code> or <code>with_size<
</div></details><details class="toggle method-toggle" open><summary><section id="method.range" class="method"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_content_range.rs.html#90-96">source</a><h4 class="code-header">pub fn <a href="#method.range" class="fn">range</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.o [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.range_inclusive" class="method"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_content_range.rs.html#99-105">source</a><h4 class="code-header">pub fn <a href="#method.range_inclusive" class="fn">range_inclusive</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.to_header" class="method"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_content_range.rs.html#108-110">source</a><h4 class="code-header">pub fn <a href="#method.to_header" class="fn">to_header</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BytesContentRange" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_content_range.rs.html#49">source</a><a href="#impl-Clone-for-BytesContentRange" class="anchor">§< [...]
- __D: <a class="trait" href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BytesContentRange" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_content_range.rs.html#49">source</a><a href="#impl-Clone-for-BytesContentRange" class="anchor">§< [...]
+ __D: <a class="trait" href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Displ [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-BytesContentRange" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_content_range.rs.html#49">source</a><a href="#impl-Serialize-for-BytesContentRange" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.207/serde/ser/trait.S [...]
__S: <a class="trait" href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Copy-for-BytesContentRange" class="impl"><a class="src rightside" href="../../src/ope [...]
diff --git a/docs/rust/opendal/raw/struct.BytesRange.html b/docs/rust/opendal/raw/struct.BytesRange.html
index 4ed1c78d89..fa147e6758 100644
--- a/docs/rust/opendal/raw/struct.BytesRange.html
+++ b/docs/rust/opendal/raw/struct.BytesRange.html
@@ -22,7 +22,7 @@ Range: bytes=<range-start>-<range-end>
<p>If this range is full, we don’t need to specify it in http request.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.to_header" class="method"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_range.rs.html#92-94">source</a><h4 class="code-header">pub fn <a href="#method.to_header" class="fn">to_header</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="do [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.to_range" class="method"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_range.rs.html#97-105">source</a><h4 class="code-header">pub fn <a href="#method.to_range" class="fn">to_range</a>(&self) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html" title="trait core::ops::range::RangeBounds">RangeBounds</a><<a class="primi [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BytesRange" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_range.rs.html#41">source</a><a href="#impl-Clone-for-BytesRange" class="anchor">§</a><h3 class="code-hea [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BytesRange" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_range.rs.html#41">source</a><a href="#impl-Clone-for-BytesRange" class="anchor">§</a><h3 class="code-hea [...]
T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html" title="trait core::ops::range::RangeBounds">RangeBounds</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_r [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-BytesRange" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/bytes_range.rs.html#41">source</a><a href="#impl-Copy-for-BytesRange" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="stru [...]
diff --git a/docs/rust/opendal/raw/struct.HttpBody.html b/docs/rust/opendal/raw/struct.HttpBody.html
index e94b0d582e..70e1917086 100644
--- a/docs/rust/opendal/raw/struct.HttpBody.html
+++ b/docs/rust/opendal/raw/struct.HttpBody.html
@@ -4,9 +4,9 @@
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HttpBody" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/body.rs.html#50-104">source</a><a href="#impl-HttpBody" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.HttpBody.html" title="struct ope [...]
S: Stream<Item = <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a><<a class="struct" href="../struct.Buffer.html" title="struct opendal::Buffer">Buffer</a>>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href=" [...]
</div></details><details class="toggle method-toggle" open><summary><section id="method.to_buffer" class="method"><a class="src rightside" href="../../src/opendal/raw/http_util/body.rs.html#101-103">source</a><h4 class="code-header">pub async fn <a href="#method.to_buffer" class="fn">to_buffer</a>(&mut self) -> <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a><<a class="struct" href="../struct.Buffer.html" title="struct opendal::Buffer">Buffer</ [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-HttpBody" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/body.rs.html#106-119">source</a><a href="#impl-Read-for-HttpBody" class="anchor">§</a><h3 class="code-header">imp [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-HttpBody" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/body.rs.html#106-119">source</a><a href="#impl-Read-for-HttpBody" class="anchor">§</a><h3 class="code-header">imp [...]
<p>HttpBody is send on non wasm32 targets.</p>
-</div><section id="impl-Sync-for-HttpBody" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/body.rs.html#48">source</a><a href="#impl-Sync-for-HttpBody" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.HttpBody.html" title="struct opendal::raw::HttpBody">HttpBody</a></h3></section><div class="docblock [...]
+</div><section id="impl-Sync-for-HttpBody" class="impl"><a class="src rightside" href="../../src/opendal/raw/http_util/body.rs.html#48">source</a><a href="#impl-Sync-for-HttpBody" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.HttpBody.html" title="struct opendal::raw::HttpBody">HttpBody</a></h3></section><div class="docblock [...]
<p>HttpBody is sync on non wasm32 targets.</p>
</div></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-HttpBody" class="impl"><a href="#impl-Freeze-for-HttpBody" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/docs/rust/opendal/services/struct.Monoiofs.html b/docs/rust/opendal/services/struct.Monoiofs.html
index 474aa030f7..afe7e1528c 100644
--- a/docs/rust/opendal/services/struct.Monoiofs.html
+++ b/docs/rust/opendal/services/struct.Monoiofs.html
@@ -1,18 +1,18 @@
-<!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="File system support via `monoio`."><title>Monoiofs in opendal::services - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a78 [...]
+<!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="File system support via `monoio`."><title>Monoiofs in opendal::services - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a78 [...]
<h3 id="capabilities"><a class="doc-anchor" href="#capabilities">§</a>Capabilities</h3>
<p>This service can be used to:</p>
<ul>
-<li><input disabled="" type="checkbox"/>
+<li><input disabled="" type="checkbox" checked=""/>
stat</li>
-<li><input disabled="" type="checkbox"/>
+<li><input disabled="" type="checkbox" checked=""/>
read</li>
-<li><input disabled="" type="checkbox"/>
+<li><input disabled="" type="checkbox" checked=""/>
write</li>
<li><input disabled="" type="checkbox"/>
append</li>
<li><input disabled="" type="checkbox"/>
create_dir</li>
-<li><input disabled="" type="checkbox"/>
+<li><input disabled="" type="checkbox" checked=""/>
delete</li>
<li><input disabled="" type="checkbox"/>
copy</li>
@@ -49,9 +49,9 @@ blocking</li>
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
-</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MonoiofsBuilder" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#57-69">source</a><a href="#impl-MonoiofsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Monoiofs.htm [...]
+</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MonoiofsBuilder" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#60-72">source</a><a href="#impl-MonoiofsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Monoiofs.htm [...]
<p>All operations will happen under this root.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-MonoiofsBuilder" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#71-105">source</a><a href="#impl-Builder-for-MonoiofsBuilder" class="anchor">§</a>< [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-MonoiofsBuilder" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#74-108">source</a><a href="#impl-Builder-for-MonoiofsBuilder" class="anchor">§</a>< [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:/ [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/docs/rust/opendal/services/struct.MonoiofsConfig.html b/docs/rust/opendal/services/struct.MonoiofsConfig.html
index d3f513ba35..d0f631a380 100644
--- a/docs/rust/opendal/services/struct.MonoiofsConfig.html
+++ b/docs/rust/opendal/services/struct.MonoiofsConfig.html
@@ -1,15 +1,15 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Config for monoiofs services support."><title>MonoiofsConfig in opendal::services - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Med [...]
+<!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="Config for monoiofs services support."><title>MonoiofsConfig in opendal::services - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Med [...]
pub root: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>>,
}</code></pre><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>services-monoiofs</code></strong> only.</div></span><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Config for monoiofs services support.</p>
</div></details><h2 id="fields" class="fields section-header">Fields (Non-exhaustive)<a href="#fields" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This struct is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional <code>Struct { .. }</code> syntax; cannot be matche [...]
<p>All operations will happen under this root.</p>
<p>Builder::build will return error if not set.</p>
-</div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MonoiofsConfig" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#31">source</a><a href="#impl-Clone-for-MonoiofsConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trai [...]
- <a class="struct" href="struct.MonoiofsConfig.html" title="struct opendal::services::MonoiofsConfig">MonoiofsConfig</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/opendal/services/mono [...]
- __D: <a class="trait" href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Parti [...]
+</div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MonoiofsConfig" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#34">source</a><a href="#impl-Clone-for-MonoiofsConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trai [...]
+ <a class="struct" href="struct.MonoiofsConfig.html" title="struct opendal::services::MonoiofsConfig">MonoiofsConfig</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deserialize" class="method trait-impl"><a class="src rightside" href="../../src/opendal/services/mono [...]
+ __D: <a class="trait" href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserializer.html" title="trait serde::de::Deserializer">Deserializer</a><'de>,</div></h4></section></summary><div class='docblock'>Deserialize this value from the given Serde deserializer. <a href="https://docs.rs/serde/1.0.207/serde/de/trait.Deserialize.html#tymethod.deserialize">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Parti [...]
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-MonoiofsConfig" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#31">source</a><a href="#impl-Serialize-for-MonoiofsConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serialize.html" [...]
- __S: <a class="trait" href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-MonoiofsConfig" class="impl"><a class="src rightside" href="../../src/opendal/ [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Serialize-for-MonoiofsConfig" class="impl"><a class="src rightside" href="../../src/opendal/services/monoiofs/backend.rs.html#34">source</a><a href="#impl-Serialize-for-MonoiofsConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serialize.html" [...]
+ __S: <a class="trait" href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div class='docblock'>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.207/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></div></details></div></details><section id="impl-Eq-for-MonoiofsConfig" class="impl"><a class="src rightside" href="../../src/opendal/ [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https:/ [...]
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href= [...]
diff --git a/docs/rust/opendal/struct.Buffer.html b/docs/rust/opendal/struct.Buffer.html
index a51f43e843..26d53ef096 100644
--- a/docs/rust/opendal/struct.Buffer.html
+++ b/docs/rust/opendal/struct.Buffer.html
@@ -72,7 +72,7 @@ Please use API from [<code>Buf</code>], <a href="https://doc.rust-lang.org/night
<p>This operation is not zero copy, it will copy all bytes into one single <a href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec"><code>Vec<u8></code></a>.
Please use API from [<code>Buf</code>], <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> or [<code>Stream</code>] whenever possible.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.to_io_slice" class="method"><a class="src rightside" href="../src/opendal/types/buffer.rs.html#311-326">source</a><h4 class="code-header">pub fn <a href="#method.to_io_slice" class="fn">to_io_slice</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="struct" href="https://doc.rust-lang.org/nightly/ [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-Buffer" class="impl"><a class="src rightside" href="../src/opendal/raw/oio/read/api.rs.html#142-146">source</a><a href="#impl-BlockingRead-for-Buffer" class="anchor">§</a><h3 class="code-head [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-Buffer" class="impl"><a class="src rightside" href="../src/opendal/raw/oio/read/api.rs.html#142-146">source</a><a href="#impl-BlockingRead-for-Buffer" class="anchor">§</a><h3 class="code-head [...]
the buffer. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.chunk" class="method trait-impl"><a class="src rightside" href="../src/opendal/types/buffer.rs.html#434-452">source</a><a href="#method.chunk" class="anchor">§</a><h4 class="code-header">fn <a class="fn">chunk</a>(&self) -> &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&a [...]
and <code>Buf::remaining()</code>. Note that this <em>can</em> return shorter slice (this allows
non-continuous internal representation). <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.chunks_vectored" class="method trait-impl"><a class="src rightside" href="../src/opendal/types/buffer.rs.html#455-484">source</a><a href="#method.chunks_vectored" class="anchor">§</a><h4 class="code-header">fn <a class="fn">chunks_vectored</a><'a>(&'a self, dst: &mut [<a class="struct" href="https://doc.rust-lang.org/nightly/std/io [...]
@@ -87,7 +87,7 @@ with this data. <a>Read more</a></div></details><details class="toggle method-to
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an adaptor which will read at most <code>limit</code> bytes from <code>self</code>. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.chain" class="method trait-impl"><a href="#method.chain" class="anchor">§</a><h4 class="code-header">f [...]
U: Buf,
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Creates an adaptor which will chain this buffer with another. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.reader" class="method trait-impl"><a href="#method.reader" class="anchor">§</a><h4 class="code-header">fn <a class="fn">reader</a>(s [...]
- Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>std</code></strong> only.</div></span><div class='docblock'>Creates an adaptor which implements the <code>Read</code> trait for <code>self</code>. <a>Read more</a></div></details></div></details><details class="toggle impleme [...]
+ Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><span class="item-info"><div class="stab portability">Available on <strong>crate feature <code>std</code></strong> only.</div></span><div class='docblock'>Creates an adaptor which implements the <code>Read</code> trait for <code>self</code>. <a>Read more</a></div></details></div></details><details class="toggle impleme [...]
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Returns a view of the buffer with the specified range. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.filled" class="method trait-impl"><a href="#method.filled" class="anchor">§</a><h4 class="code-header">fn <a class="fn">filled</a>(&sel [...]
&mut self,
) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.o [...]
@@ -281,7 +281,7 @@ greater than or equal to those of another. <a href="https://doc.rust-lang.org/ni
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -> K,
K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given key extraction
-function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-Buffer" class="impl"><a class="src rightside" href="../src/opendal/raw/oio/read/api.rs.html#79-83">source</a><a href="#impl-Read-for-Buffer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="raw/oio/trait.Read.html" [...]
+function. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-Buffer" class="impl"><a class="src rightside" href="../src/opendal/raw/oio/read/api.rs.html#79-83">source</a><a href="#impl-Read-for-Buffer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="raw/oio/trait.Read.html" [...]
Each call to this function must be preceded by a successful call to
<code>poll_ready</code> which returned <code>Poll::Ready(Ok(()))</code>. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_flush" class="method trait-impl"><a class="src rightside" href="../src/opendal/types/write/buffer_sink.rs.html#70-109">source</a><a href="#method.poll_flush" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_flush</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/str [...]
self: <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut Self</a>>,
diff --git a/docs/rust/opendal/struct.Error.html b/docs/rust/opendal/struct.Error.html
index 07bf7a7424..fc1235ad4a 100644
--- a/docs/rust/opendal/struct.Error.html
+++ b/docs/rust/opendal/struct.Error.html
@@ -68,7 +68,7 @@ Backtrace:
<p>By setting persistent, we indicate the retry should be stopped.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.kind" class="method"><a class="src rightside" href="../src/opendal/types/error.rs.html#395-397">source</a><h4 class="code-header">pub fn <a href="#method.kind" class="fn">kind</a>(&self) -> <a class="enum" href="enum.ErrorKind.html" title="enum opendal::ErrorKind">ErrorKind</a></h4></section></summary><div class="docblock"><p>Return error’s kind.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_temporary" class="method"><a class="src rightside" href="../src/opendal/types/error.rs.html#400-402">source</a><h4 class="code-header">pub fn <a href="#method.is_temporary" class="fn">is_temporary</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if this error is temporary.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="src rightside" href="../src/opendal/types/error.rs.html#256-296">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="tr [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="src rightside" href="../src/opendal/types/error.rs.html#256-296">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="tr [...]
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href [...]
T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_error_source" class="method trait-impl"><a href="#method.as_error_source" class="anchor">§</a><h4 class="code-header">fn <a class="fn">as_error_source</a>(&self) -> &(dyn <a class="trait" href="https://doc [...]
to benefit from Rust’s automatic dereferencing of method
diff --git a/docs/rust/opendal/trait.Builder.html b/docs/rust/opendal/trait.Builder.html
index c069964709..9c6e9d88e6 100644
--- a/docs/rust/opendal/trait.Builder.html
+++ b/docs/rust/opendal/trait.Builder.html
@@ -29,4 +29,4 @@
</div></details></div><h2 id="required-associated-consts" class="section-header">Required Associated Constants<a href="#required-associated-consts" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedconstant.SCHEME" class="method"><a class="src rightside" href="../src/opendal/types/builder.rs.html#52">source</a><h4 class="code-header">const <a href="#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="enum. [...]
</div></details></div><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.build" class="method"><a class="src rightside" href="../src/opendal/types/builder.rs.html#57">source</a><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(self) -> <a class="type" href="type.Result.html" title="type opendal::Result [...]
</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="im [...]
-</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl"><a class="src rightside" href="../src/opendal/types/builder.rs.html#62">source</a><a href="#associatedconstant.SCHEME-1" class="anchor">§</a><h4 class="code-header">const <a href="#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> = _</h4></section><section id="associatedtype.Config-1" class="as [...]
\ No newline at end of file
+</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl"><a class="src rightside" href="../src/opendal/types/builder.rs.html#62">source</a><a href="#associatedconstant.SCHEME-1" class="anchor">§</a><h4 class="code-header">const <a href="#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> = _</h4></section><section id="associatedtype.Config-1" class="as [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/trait.Configurator.html b/docs/rust/opendal/trait.Configurator.html
index 64f1a8e16a..a46972d831 100644
--- a/docs/rust/opendal/trait.Configurator.html
+++ b/docs/rust/opendal/trait.Configurator.html
@@ -56,4 +56,4 @@
</div></details></div><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.into_builder" class="method"><a class="src rightside" href="../src/opendal/types/builder.rs.html#139">source</a><h4 class="code-header">fn <a href="#tymethod.into_builder" class="fn">into_builder</a>(self) -> Self::<a class="associatedtype" href="trait.C [...]
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.from_iter" class="method"><a class="src rightside" href="../src/opendal/types/builder.rs.html#130-136">source</a><h4 class="code-header">fn <a href="#method.from_iter" class="fn">from_iter</a>(iter: impl <a class="trait" href="https://doc.rust-lang.org/nightl [...]
<p>This API is provided by opendal, developer should not implement it.</p>
-</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="im [...]
\ No newline at end of file
+</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="im [...]
\ No newline at end of file
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index 238124acd1..cc60372410 100644
--- a/docs/rust/search-index.js
+++ b/docs/rust/search-index.js
@@ -1 +1 @@
-var searchIndex=new Map(JSON.parse('[["opendal",{"t":"PPPPPPPPFFFFFFFKRPPFPPPPPRPKPPPPPPPPPPPPFGPFGPPKFPPPPFFFFPPPPPPPPPPPPPPPPPFPPFGPPPPPPPPPPPFFFPPPPPPPFPPIPPTGPPPPFFFPPPPPPPPPPPPPPFPNNNNOOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN [...]
\ No newline at end of file
+var searchIndex=new Map(JSON.parse('[["opendal",{"t":"PPPPPPPPFFFFFFFKRPPFPPPPPRPKPPPPPPPPPPPPFGPFGPPKFPPPPFFFFPPPPPPPPPPPPPPPPPFPPFGPPPPPPPPPPPFFFPPPPPPPFPPIPPTGPPPPFFFPPPPPPPPPPPPPPFPNNNNOOONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN [...]
\ No newline at end of file
diff --git a/docs/rust/search.desc/opendal/opendal-desc-0-.js b/docs/rust/search.desc/opendal/opendal-desc-0-.js
index c2ded0ddb6..04ff376fee 100644
--- a/docs/rust/search.desc/opendal/opendal-desc-0-.js
+++ b/docs/rust/search.desc/opendal/opendal-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("opendal",0,"Apache OpenDAL\u2122 is a data access layer that allows users \u2026\naliyun_drive: Aliyun Drive services.\nalluxio: Alluxio services.\nThe given path already exists thus we failed to the \u2026\natomicserver: Atomicserver services.\nazblob: Azure Storage Blob services.\nAzdls: Azure Data Lake Storage Gen2.\nazfile: Azfile Services\nB2: Backblaze B2 Services.\nBlockingLister is designed to list entries at given path \u2026\nBlockingOperator is the [...]
\ No newline at end of file
+searchState.loadedDescShard("opendal",0,"Apache OpenDAL\u2122 is a data access layer that allows users \u2026\naliyun_drive: Aliyun Drive services.\nalluxio: Alluxio services.\nThe given path already exists thus we failed to the \u2026\natomicserver: Atomicserver services.\nazblob: Azure Storage Blob services.\nAzdls: Azure Data Lake Storage Gen2.\nazfile: Azfile Services\nB2: Backblaze B2 Services.\nBlockingLister is designed to list entries at given path \u2026\nBlockingOperator is the [...]
\ No newline at end of file
diff --git a/docs/rust/src-files.js b/docs/rust/src-files.js
index e23f85c44d..497809fda9 100644
--- a/docs/rust/src-files.js
+++ b/docs/rust/src-files.js
@@ -1 +1 @@
-var srcIndex=new Map(JSON.parse('[["opendal",["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["async_backtrace.rs","await_tree.rs","blocking.rs","chaos.rs","complete.rs","concurrent_limit.rs","dtrace.rs","error_context.rs","fastrace.rs","immutable_index.rs","logging.rs","metrics.rs","mime_guess.rs","mod.rs","oteltrace.rs","prometheus.rs","prometheus_client.rs","retry.rs","throt [...]
\ No newline at end of file
+var srcIndex=new Map(JSON.parse('[["opendal",["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["async_backtrace.rs","await_tree.rs","blocking.rs","chaos.rs","complete.rs","concurrent_limit.rs","dtrace.rs","error_context.rs","fastrace.rs","immutable_index.rs","logging.rs","metrics.rs","mime_guess.rs","mod.rs","oteltrace.rs","prometheus.rs","prometheus_client.rs","retry.rs","throt [...]
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/monoiofs/backend.rs.html b/docs/rust/src/opendal/services/monoiofs/backend.rs.html
index 0fa60560ff..22095f006d 100644
--- a/docs/rust/src/opendal/services/monoiofs/backend.rs.html
+++ b/docs/rust/src/opendal/services/monoiofs/backend.rs.html
@@ -127,6 +127,80 @@
<a href="#127" id="127">127</a>
<a href="#128" id="128">128</a>
<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<a href="#158" id="158">158</a>
+<a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</a>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<a href="#197" id="197">197</a>
+<a href="#198" id="198">198</a>
+<a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -149,10 +223,13 @@
<span class="kw">use </span>std::path::PathBuf;
<span class="kw">use </span>std::sync::Arc;
+<span class="kw">use </span>chrono::DateTime;
<span class="kw">use </span>serde::Deserialize;
<span class="kw">use </span>serde::Serialize;
<span class="kw">use </span><span class="kw">super</span>::core::MonoiofsCore;
+<span class="kw">use </span><span class="kw">super</span>::reader::MonoiofsReader;
+<span class="kw">use </span><span class="kw">super</span>::writer::MonoiofsWriter;
<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
<span class="kw">use crate</span>::<span class="kw-2">*</span>;
@@ -239,8 +316,8 @@
}
<span class="kw">impl </span>Access <span class="kw">for </span>MonoiofsBackend {
- <span class="kw">type </span>Reader = ();
- <span class="kw">type </span>Writer = ();
+ <span class="kw">type </span>Reader = MonoiofsReader;
+ <span class="kw">type </span>Writer = MonoiofsWriter;
<span class="kw">type </span>Lister = ();
<span class="kw">type </span>BlockingReader = ();
<span class="kw">type </span>BlockingWriter = ();
@@ -251,9 +328,80 @@
am.set_scheme(Scheme::Monoiofs)
.set_root(<span class="kw-2">&</span><span class="self">self</span>.core.root().to_string_lossy())
.set_native_capability(Capability {
+ stat: <span class="bool-val">true</span>,
+ read: <span class="bool-val">true</span>,
+ write: <span class="bool-val">true</span>,
+ delete: <span class="bool-val">true</span>,
..Default::default()
});
am.into()
}
+
+ <span class="kw">async fn </span>stat(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, _args: OpStat) -> <span class="prelude-ty">Result</span><RpStat> {
+ <span class="kw">let </span>path = <span class="self">self</span>.core.prepare_path(path);
+ <span class="kw">let </span>meta = <span class="self">self
+ </span>.core
+ .dispatch(<span class="kw">move </span>|| monoio::fs::metadata(path))
+ .<span class="kw">await
+ </span>.map_err(new_std_io_error)<span class="question-mark">?</span>;
+ <span class="kw">let </span>mode = <span class="kw">if </span>meta.is_dir() {
+ EntryMode::DIR
+ } <span class="kw">else if </span>meta.is_file() {
+ EntryMode::FILE
+ } <span class="kw">else </span>{
+ EntryMode::Unknown
+ };
+ <span class="kw">let </span>m = Metadata::new(mode)
+ .with_content_length(meta.len())
+ .with_last_modified(
+ meta.modified()
+ .map(DateTime::from)
+ .map_err(new_std_io_error)<span class="question-mark">?</span>,
+ );
+ <span class="prelude-val">Ok</span>(RpStat::new(m))
+ }
+
+ <span class="kw">async fn </span>read(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, args: OpRead) -> <span class="prelude-ty">Result</span><(RpRead, <span class="self">Self</span>::Reader)> {
+ <span class="kw">let </span>path = <span class="self">self</span>.core.prepare_path(path);
+ <span class="kw">let </span>reader = MonoiofsReader::new(<span class="self">self</span>.core.clone(), path, args.range()).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>((RpRead::default(), reader))
+ }
+
+ <span class="kw">async fn </span>write(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, _args: OpWrite) -> <span class="prelude-ty">Result</span><(RpWrite, <span class="self">Self</span>::Writer)> {
+ <span class="comment">// TODO: create parent directory before write
+ </span><span class="kw">let </span>path = <span class="self">self</span>.core.prepare_path(path);
+ <span class="kw">let </span>writer = MonoiofsWriter::new(<span class="self">self</span>.core.clone(), path).<span class="kw">await</span><span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>((RpWrite::default(), writer))
+ }
+
+ <span class="kw">async fn </span>delete(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str, _args: OpDelete) -> <span class="prelude-ty">Result</span><RpDelete> {
+ <span class="kw">let </span>path = <span class="self">self</span>.core.prepare_path(path);
+ <span class="kw">let </span>meta = <span class="self">self
+ </span>.core
+ .dispatch({
+ <span class="kw">let </span>path = path.clone();
+ <span class="kw">move </span>|| monoio::fs::metadata(path)
+ })
+ .<span class="kw">await</span>;
+ <span class="kw">match </span>meta {
+ <span class="prelude-val">Ok</span>(meta) => {
+ <span class="kw">if </span>meta.is_dir() {
+ <span class="self">self</span>.core
+ .dispatch(<span class="kw">move </span>|| monoio::fs::remove_dir(path))
+ .<span class="kw">await
+ </span>.map_err(new_std_io_error)<span class="question-mark">?</span>;
+ } <span class="kw">else </span>{
+ <span class="self">self</span>.core
+ .dispatch(<span class="kw">move </span>|| monoio::fs::remove_file(path))
+ .<span class="kw">await
+ </span>.map_err(new_std_io_error)<span class="question-mark">?</span>;
+ }
+
+ <span class="prelude-val">Ok</span>(RpDelete::default())
+ }
+ <span class="prelude-val">Err</span>(err) <span class="kw">if </span>err.kind() == std::io::ErrorKind::NotFound => <span class="prelude-val">Ok</span>(RpDelete::default()),
+ <span class="prelude-val">Err</span>(err) => <span class="prelude-val">Err</span>(new_std_io_error(err)),
+ }
+ }
}
</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/monoiofs/core.rs.html b/docs/rust/src/opendal/services/monoiofs/core.rs.html
index 221aae39ed..f798cb3bb7 100644
--- a/docs/rust/src/opendal/services/monoiofs/core.rs.html
+++ b/docs/rust/src/opendal/services/monoiofs/core.rs.html
@@ -234,6 +234,52 @@
<a href="#234" id="234">234</a>
<a href="#235" id="235">235</a>
<a href="#236" id="236">236</a>
+<a href="#237" id="237">237</a>
+<a href="#238" id="238">238</a>
+<a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</a>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -260,21 +306,26 @@
<span class="kw">use </span>flume::Sender;
<span class="kw">use </span>futures::channel::oneshot;
<span class="kw">use </span>futures::Future;
+<span class="kw">use </span>monoio::task::JoinHandle;
<span class="kw">use </span>monoio::FusionDriver;
<span class="kw">use </span>monoio::RuntimeBuilder;
-<span class="doccomment">/// a boxed function that spawns task in current monoio runtime
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">pub const </span>BUFFER_SIZE: usize = <span class="number">2 </span>* <span class="number">1024 </span>* <span class="number">1024</span>; <span class="comment">// 2 MiB
+
+</span><span class="doccomment">/// a boxed function that spawns task in current monoio runtime
</span><span class="kw">type </span>TaskSpawner = Box<<span class="kw">dyn </span>FnOnce() + Send>;
<span class="attr">#[derive(Debug)]
</span><span class="kw">pub struct </span>MonoiofsCore {
root: PathBuf,
- <span class="attr">#[allow(dead_code)]
- </span><span class="doccomment">/// sender that sends [`TaskSpawner`] to worker threads
+ <span class="doccomment">/// sender that sends [`TaskSpawner`] to worker threads
</span>tx: Sender<TaskSpawner>,
- <span class="attr">#[allow(dead_code)]
- </span><span class="doccomment">/// join handles of worker threads
+ <span class="doccomment">/// join handles of worker threads
</span>threads: Mutex<Vec<std::thread::JoinHandle<()>>>,
+ <span class="kw">pub </span>buf_pool: oio::PooledBuf,
}
<span class="kw">impl </span>MonoiofsCore {
@@ -295,13 +346,22 @@
.collect();
<span class="kw">let </span>threads = Mutex::new(threads);
- <span class="self">Self </span>{ root, tx, threads }
+ <span class="self">Self </span>{
+ root,
+ tx,
+ threads,
+ buf_pool: oio::PooledBuf::new(<span class="number">16</span>).with_initial_capacity(BUFFER_SIZE),
+ }
}
<span class="kw">pub fn </span>root(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="kw-2">&</span>PathBuf {
<span class="kw-2">&</span><span class="self">self</span>.root
}
+ <span class="kw">pub fn </span>prepare_path(<span class="kw-2">&</span><span class="self">self</span>, path: <span class="kw-2">&</span>str) -> PathBuf {
+ <span class="self">self</span>.root.join(path.trim_end_matches(<span class="string">'/'</span>))
+ }
+
<span class="doccomment">/// entrypoint of each worker thread, sets up monoio runtimes and channels
</span><span class="kw">fn </span>worker_entrypoint(rx: Receiver<TaskSpawner>, io_uring_entries: u32) {
<span class="kw">let </span><span class="kw-2">mut </span>rt = RuntimeBuilder::<FusionDriver>::new()
@@ -318,9 +378,8 @@
})
}
- <span class="attr">#[allow(dead_code)]
- </span><span class="doccomment">/// create a TaskSpawner, send it to the thread pool and wait
- /// for its result
+ <span class="doccomment">/// Create a TaskSpawner, send it to the thread pool and wait
+ /// for its result. Task panic will propagate.
</span><span class="kw">pub async fn </span>dispatch<F, Fut, T>(<span class="kw-2">&</span><span class="self">self</span>, f: F) -> T
<span class="kw">where
</span>F: FnOnce() -> Fut + <span class="lifetime">'static </span>+ Send,
@@ -329,32 +388,54 @@
{
<span class="comment">// oneshot channel to send result back
</span><span class="kw">let </span>(tx, rx) = oneshot::channel();
- <span class="self">self</span>.tx
+ <span class="kw">let </span>result = <span class="self">self
+ </span>.tx
.send_async(Box::new(<span class="kw">move </span>|| {
- monoio::spawn(<span class="kw">async move </span>{
- tx.send(f().<span class="kw">await</span>)
- <span class="comment">// discard result because it may be non-Debug and
- // we don't need it to appear in the panic message
- </span>.map_err(|<span class="kw">_</span>| ())
- .expect(<span class="string">"send result from worker thread should success"</span>);
+ <span class="comment">// task will be spawned on current thread, task panic
+ // will cause current worker thread panic
+ </span>monoio::spawn(<span class="kw">async move </span>{
+ <span class="comment">// discard the result if send failed due to
+ // MonoiofsCore::dispatch cancelled
+ </span><span class="kw">let _ </span>= tx.send(f().<span class="kw">await</span>);
});
}))
- .<span class="kw">await
- </span>.expect(<span class="string">"send new TaskSpawner to worker thread should success"</span>);
- <span class="kw">match </span>rx.<span class="kw">await </span>{
- <span class="prelude-val">Ok</span>(result) => result,
- <span class="comment">// tx is dropped without sending result, probably the worker
- // thread has panicked.
- </span><span class="prelude-val">Err</span>(<span class="kw">_</span>) => <span class="self">self</span>.propagate_worker_panic(),
- }
+ .<span class="kw">await</span>;
+ <span class="self">self</span>.unwrap(result);
+ <span class="self">self</span>.unwrap(rx.<span class="kw">await</span>)
+ }
+
+ <span class="doccomment">/// Create a TaskSpawner, send it to the thread pool, spawn the task
+ /// and return its [`JoinHandle`]. Task panic cannot propagate
+ /// through the [`JoinHandle`] and should be handled elsewhere.
+ </span><span class="kw">pub async fn </span>spawn<F, Fut, T>(<span class="kw-2">&</span><span class="self">self</span>, f: F) -> JoinHandle<T>
+ <span class="kw">where
+ </span>F: FnOnce() -> Fut + <span class="lifetime">'static </span>+ Send,
+ Fut: Future<Output = T>,
+ T: <span class="lifetime">'static </span>+ Send,
+ {
+ <span class="comment">// oneshot channel to send JoinHandle back
+ </span><span class="kw">let </span>(tx, rx) = oneshot::channel();
+ <span class="kw">let </span>result = <span class="self">self
+ </span>.tx
+ .send_async(Box::new(<span class="kw">move </span>|| {
+ <span class="comment">// task will be spawned on current thread, task panic
+ // will cause current worker thread panic
+ </span><span class="kw">let </span>handle = monoio::spawn(<span class="kw">async move </span>{ f().<span class="kw">await </span>});
+ <span class="comment">// discard the result if send failed due to
+ // MonoiofsCore::spawn cancelled
+ </span><span class="kw">let _ </span>= tx.send(handle);
+ }))
+ .<span class="kw">await</span>;
+ <span class="self">self</span>.unwrap(result);
+ <span class="self">self</span>.unwrap(rx.<span class="kw">await</span>)
}
<span class="doccomment">/// This method always panics. It is called only when at least a
/// worker thread has panicked or meet a broken rx, which is
/// unrecoverable. It propagates worker thread's panic if there
/// is any and panics on normally exited thread.
- </span><span class="kw">fn </span>propagate_worker_panic(<span class="kw-2">&</span><span class="self">self</span>) -> ! {
- <span class="kw">let </span><span class="kw-2">mut </span>guard = <span class="self">self</span>.threads.lock().unwrap();
+ </span><span class="kw">pub fn </span>propagate_worker_panic(<span class="kw-2">&</span><span class="self">self</span>) -> ! {
+ <span class="kw">let </span><span class="kw-2">mut </span>guard = <span class="self">self</span>.threads.lock().expect(<span class="string">"worker thread has panicked"</span>);
<span class="comment">// wait until the panicked thread exits
</span>std::thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="kw">let </span>threads = mem::take(<span class="kw-2">&mut *</span>guard);
@@ -373,6 +454,17 @@
}
<span class="macro">unreachable!</span>(<span class="string">"this method should panic"</span>)
}
+
+ <span class="doccomment">/// Unwrap result if result is Ok, otherwise propagates worker thread's
+ /// panic. This method facilitates panic propagation in situation where
+ /// Err returned by broken channel indicates that the worker thread has
+ /// panicked.
+ </span><span class="kw">pub fn </span>unwrap<T, E>(<span class="kw-2">&</span><span class="self">self</span>, result: <span class="prelude-ty">Result</span><T, E>) -> T {
+ <span class="kw">match </span>result {
+ <span class="prelude-val">Ok</span>(result) => result,
+ <span class="prelude-val">Err</span>(<span class="kw">_</span>) => <span class="self">self</span>.propagate_worker_panic(),
+ }
+ }
}
<span class="attr">#[cfg(test)]
diff --git a/docs/rust/src/opendal/services/monoiofs/mod.rs.html b/docs/rust/src/opendal/services/monoiofs/mod.rs.html
index d8e8101445..ad2ff733ed 100644
--- a/docs/rust/src/opendal/services/monoiofs/mod.rs.html
+++ b/docs/rust/src/opendal/services/monoiofs/mod.rs.html
@@ -20,6 +20,8 @@
<a href="#20" id="20">20</a>
<a href="#21" id="21">21</a>
<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
@@ -42,4 +44,6 @@
<span class="kw">pub use </span>backend::MonoiofsConfig;
<span class="kw">mod </span>core;
+<span class="kw">mod </span>reader;
+<span class="kw">mod </span>writer;
</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/monoiofs/reader.rs.html b/docs/rust/src/opendal/services/monoiofs/reader.rs.html
new file mode 100644
index 0000000000..b08797c4ed
--- /dev/null
+++ b/docs/rust/src/opendal/services/monoiofs/reader.rs.html
@@ -0,0 +1,287 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/services/monoiofs/reader.rs`."><title>reader.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::path::PathBuf;
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>bytes::BytesMut;
+<span class="kw">use </span>futures::channel::{mpsc, oneshot};
+<span class="kw">use </span>futures::{SinkExt, StreamExt};
+<span class="kw">use </span>monoio::fs::OpenOptions;
+
+<span class="kw">use </span><span class="kw">super</span>::core::{MonoiofsCore, BUFFER_SIZE};
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">enum </span>ReaderRequest {
+ Read {
+ pos: u64,
+ buf: BytesMut,
+ tx: oneshot::Sender<<span class="prelude-ty">Result</span><BytesMut>>,
+ },
+}
+
+<span class="kw">pub struct </span>MonoiofsReader {
+ core: Arc<MonoiofsCore>,
+ tx: mpsc::UnboundedSender<ReaderRequest>,
+ pos: u64,
+ end_pos: <span class="prelude-ty">Option</span><u64>,
+}
+
+<span class="kw">impl </span>MonoiofsReader {
+ <span class="kw">pub async fn </span>new(core: Arc<MonoiofsCore>, path: PathBuf, range: BytesRange) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>> {
+ <span class="kw">let </span>(open_result_tx, open_result_rx) = oneshot::channel();
+ <span class="kw">let </span>(tx, rx) = mpsc::unbounded();
+ core.spawn(<span class="kw">move </span>|| <span class="self">Self</span>::worker_entrypoint(path, rx, open_result_tx))
+ .<span class="kw">await</span>;
+ core.unwrap(open_result_rx.<span class="kw">await</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="self">Self </span>{
+ core,
+ tx,
+ pos: range.offset(),
+ end_pos: range.size().map(|size| range.offset() + size),
+ })
+ }
+
+ <span class="doccomment">/// entrypoint of worker task that runs in context of monoio
+ </span><span class="kw">async fn </span>worker_entrypoint(
+ path: PathBuf,
+ <span class="kw-2">mut </span>rx: mpsc::UnboundedReceiver<ReaderRequest>,
+ open_result_tx: oneshot::Sender<<span class="prelude-ty">Result</span><()>>,
+ ) {
+ <span class="kw">let </span>result = OpenOptions::new().read(<span class="bool-val">true</span>).open(path).<span class="kw">await</span>;
+ <span class="comment">// [`monoio::fs::File`] is non-Send, hence it is kept within
+ // worker thread
+ </span><span class="kw">let </span>file = <span class="kw">match </span>result {
+ <span class="prelude-val">Ok</span>(file) => {
+ open_result_tx
+ .send(<span class="prelude-val">Ok</span>(()))
+ .expect(<span class="string">"send result from worker thread should success"</span>);
+ file
+ }
+ <span class="prelude-val">Err</span>(e) => {
+ open_result_tx
+ .send(<span class="prelude-val">Err</span>(new_std_io_error(e)))
+ .expect(<span class="string">"send result from worker thread should success"</span>);
+ <span class="kw">return</span>;
+ }
+ };
+ <span class="comment">// wait for read request and send back result to main thread
+ </span><span class="kw">loop </span>{
+ <span class="kw">let </span><span class="prelude-val">Some</span>(req) = rx.next().<span class="kw">await else </span>{
+ <span class="comment">// MonoiofsReader is dropped, exit worker task
+ </span><span class="kw">break</span>;
+ };
+ <span class="kw">match </span>req {
+ ReaderRequest::Read { pos, buf, tx } => {
+ <span class="kw">let </span>(result, buf) = file.read_at(buf, pos).<span class="kw">await</span>;
+ <span class="comment">// buf.len() will be set to n by monoio if read successfully,
+ // so n is dropped
+ </span><span class="kw">let </span>result = result.map(<span class="kw">move </span>|<span class="kw">_</span>| buf).map_err(new_std_io_error);
+ <span class="comment">// discard the result if send failed due to
+ // MonoiofsReader::read cancelled
+ </span><span class="kw">let _ </span>= tx.send(result);
+ }
+ }
+ }
+ }
+}
+
+<span class="kw">impl </span>oio::Read <span class="kw">for </span>MonoiofsReader {
+ <span class="doccomment">/// Send read request to worker thread and wait for result. Actual
+ /// read happens in [`MonoiofsReader::worker_entrypoint`] running
+ /// on worker thread.
+ </span><span class="kw">async fn </span>read(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><Buffer> {
+ <span class="kw">if let </span><span class="prelude-val">Some</span>(end_pos) = <span class="self">self</span>.end_pos {
+ <span class="kw">if </span><span class="self">self</span>.pos >= end_pos {
+ <span class="kw">return </span><span class="prelude-val">Ok</span>(Buffer::new());
+ }
+ }
+
+ <span class="comment">// allocate and resize buffer
+ </span><span class="kw">let </span><span class="kw-2">mut </span>buf = <span class="self">self</span>.core.buf_pool.get();
+ <span class="kw">let </span>size = <span class="self">self
+ </span>.end_pos
+ .map_or(BUFFER_SIZE, |end_pos| (end_pos - <span class="self">self</span>.pos) <span class="kw">as </span>usize);
+ <span class="comment">// set capacity of buf to exact size to avoid excessive read
+ </span>buf.reserve(size);
+ <span class="kw">let _ </span>= buf.split_off(size);
+
+ <span class="comment">// send read request to worker thread and wait for result
+ </span><span class="kw">let </span>(tx, rx) = oneshot::channel();
+ <span class="self">self</span>.core.unwrap(
+ <span class="self">self</span>.tx
+ .send(ReaderRequest::Read {
+ pos: <span class="self">self</span>.pos,
+ buf,
+ tx,
+ })
+ .<span class="kw">await</span>,
+ );
+ <span class="kw">let </span><span class="kw-2">mut </span>buf = <span class="self">self</span>.core.unwrap(rx.<span class="kw">await</span>)<span class="question-mark">?</span>;
+
+ <span class="comment">// advance cursor if read successfully
+ </span><span class="self">self</span>.pos += buf.len() <span class="kw">as </span>u64;
+ <span class="kw">let </span>buffer = Buffer::from(buf.split().freeze());
+ <span class="self">self</span>.core.buf_pool.put(buf);
+ <span class="prelude-val">Ok</span>(buffer)
+ }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/services/monoiofs/writer.rs.html b/docs/rust/src/opendal/services/monoiofs/writer.rs.html
new file mode 100644
index 0000000000..307319050d
--- /dev/null
+++ b/docs/rust/src/opendal/services/monoiofs/writer.rs.html
@@ -0,0 +1,307 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `src/services/monoiofs/writer.rs`."><title>writer.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium [...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::path::PathBuf;
+<span class="kw">use </span>std::sync::Arc;
+
+<span class="kw">use </span>bytes::{Buf, Bytes};
+<span class="kw">use </span>futures::channel::{mpsc, oneshot};
+<span class="kw">use </span>futures::{SinkExt, StreamExt};
+<span class="kw">use </span>monoio::fs::OpenOptions;
+
+<span class="kw">use </span><span class="kw">super</span>::core::MonoiofsCore;
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="kw">enum </span>WriterRequest {
+ Write {
+ pos: u64,
+ buf: Bytes,
+ tx: oneshot::Sender<<span class="prelude-ty">Result</span><()>>,
+ },
+ Close {
+ tx: oneshot::Sender<<span class="prelude-ty">Result</span><()>>,
+ },
+}
+
+<span class="kw">pub struct </span>MonoiofsWriter {
+ core: Arc<MonoiofsCore>,
+ tx: mpsc::UnboundedSender<WriterRequest>,
+ pos: u64,
+}
+
+<span class="kw">impl </span>MonoiofsWriter {
+ <span class="kw">pub async fn </span>new(core: Arc<MonoiofsCore>, path: PathBuf) -> <span class="prelude-ty">Result</span><<span class="self">Self</span>> {
+ <span class="kw">let </span>(open_result_tx, open_result_rx) = oneshot::channel();
+ <span class="kw">let </span>(tx, rx) = mpsc::unbounded();
+ core.spawn(<span class="kw">move </span>|| <span class="self">Self</span>::worker_entrypoint(path, rx, open_result_tx))
+ .<span class="kw">await</span>;
+ core.unwrap(open_result_rx.<span class="kw">await</span>)<span class="question-mark">?</span>;
+ <span class="prelude-val">Ok</span>(<span class="self">Self </span>{ core, tx, pos: <span class="number">0 </span>})
+ }
+
+ <span class="doccomment">/// entrypoint of worker task that runs in context of monoio
+ </span><span class="kw">async fn </span>worker_entrypoint(
+ path: PathBuf,
+ <span class="kw-2">mut </span>rx: mpsc::UnboundedReceiver<WriterRequest>,
+ open_result_tx: oneshot::Sender<<span class="prelude-ty">Result</span><()>>,
+ ) {
+ <span class="kw">let </span>result = OpenOptions::new()
+ .write(<span class="bool-val">true</span>)
+ .create(<span class="bool-val">true</span>)
+ .truncate(<span class="bool-val">true</span>)
+ .open(path)
+ .<span class="kw">await</span>;
+ <span class="comment">// [`monoio::fs::File`] is non-Send, hence it is kept within
+ // worker thread
+ </span><span class="kw">let </span>file = <span class="kw">match </span>result {
+ <span class="prelude-val">Ok</span>(file) => {
+ open_result_tx
+ .send(<span class="prelude-val">Ok</span>(()))
+ .expect(<span class="string">"send result from worker thread should success"</span>);
+ file
+ }
+ <span class="prelude-val">Err</span>(e) => {
+ open_result_tx
+ .send(<span class="prelude-val">Err</span>(new_std_io_error(e)))
+ .expect(<span class="string">"send result from worker thread should success"</span>);
+ <span class="kw">return</span>;
+ }
+ };
+ <span class="comment">// wait for write or close request and send back result to main thread
+ </span><span class="kw">loop </span>{
+ <span class="kw">let </span><span class="prelude-val">Some</span>(req) = rx.next().<span class="kw">await else </span>{
+ <span class="comment">// MonoiofsWriter is dropped, exit worker task
+ </span><span class="kw">break</span>;
+ };
+ <span class="kw">match </span>req {
+ WriterRequest::Write { pos, buf, tx } => {
+ <span class="kw">let </span>(result, <span class="kw">_</span>) = file.write_all_at(buf, pos).<span class="kw">await</span>;
+ <span class="comment">// discard the result if send failed due to
+ // MonoiofsWriter::write cancelled
+ </span><span class="kw">let _ </span>= tx.send(result.map_err(new_std_io_error));
+ }
+ WriterRequest::Close { tx } => {
+ <span class="kw">let </span>result = file.sync_all().<span class="kw">await</span>;
+ <span class="comment">// discard the result if send failed due to
+ // MonoiofsWriter::close cancelled
+ </span><span class="kw">let _ </span>= tx.send(result.map_err(new_std_io_error));
+ <span class="comment">// file is closed in background and result is useless
+ </span><span class="kw">let _ </span>= file.close().<span class="kw">await</span>;
+ <span class="kw">break</span>;
+ }
+ }
+ }
+ }
+}
+
+<span class="kw">impl </span>oio::Write <span class="kw">for </span>MonoiofsWriter {
+ <span class="doccomment">/// Send write request to worker thread and wait for result. Actual
+ /// write happens in [`MonoiofsWriter::worker_entrypoint`] running
+ /// on worker thread.
+ </span><span class="kw">async fn </span>write(<span class="kw-2">&mut </span><span class="self">self</span>, <span class="kw-2">mut </span>bs: Buffer) -> <span class="prelude-ty">Result</span><()> {
+ <span class="kw">while </span>bs.has_remaining() {
+ <span class="kw">let </span>buf = bs.current();
+ <span class="kw">let </span>n = buf.len();
+ <span class="kw">let </span>(tx, rx) = oneshot::channel();
+ <span class="self">self</span>.core.unwrap(
+ <span class="self">self</span>.tx
+ .send(WriterRequest::Write {
+ pos: <span class="self">self</span>.pos,
+ buf,
+ tx,
+ })
+ .<span class="kw">await</span>,
+ );
+ <span class="self">self</span>.core.unwrap(rx.<span class="kw">await</span>)<span class="question-mark">?</span>;
+ <span class="self">self</span>.pos += n <span class="kw">as </span>u64;
+ bs.advance(n);
+ }
+ <span class="prelude-val">Ok</span>(())
+ }
+
+ <span class="doccomment">/// Send close request to worker thread and wait for result. Actual
+ /// close happens in [`MonoiofsWriter::worker_entrypoint`] running
+ /// on worker thread.
+ </span><span class="kw">async fn </span>close(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><()> {
+ <span class="kw">let </span>(tx, rx) = oneshot::channel();
+ <span class="self">self</span>.core
+ .unwrap(<span class="self">self</span>.tx.send(WriterRequest::Close { tx }).<span class="kw">await</span>);
+ <span class="self">self</span>.core.unwrap(rx.<span class="kw">await</span>)
+ }
+
+ <span class="kw">async fn </span>abort(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Result</span><()> {
+ <span class="prelude-val">Err</span>(Error::new(
+ ErrorKind::Unsupported,
+ <span class="string">"Monoiofs doesn't support abort"</span>,
+ ))
+ }
+}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/download/index.html b/download/index.html
index 07f1730e60..da2db51af4 100644
--- a/download/index.html
+++ b/download/index.html
@@ -6,7 +6,7 @@
<title data-rh="true">Apache OpenDAL™ Downloads | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/download"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/index.html b/index.html
index 3bd1449c6f..23cda1346d 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
<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" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusauru [...]
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.b86df8bd.css">
<script src="/assets/js/runtime~main.f9466706.js" defer="defer"></script>
-<script src="/assets/js/main.90b69084.js" defer="defer"></script>
+<script src="/assets/js/main.43f06f97.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentEle [...]
diff --git a/lunr-index-1724179067315.json b/lunr-index-1724179067315.json
deleted file mode 100644
index 8e8eeec401..0000000000
--- a/lunr-index-1724179067315.json
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,155.086,1,57.47,2,362.346,3,393.903,4,393.903,5,224.23,6,377.07]],["content/0",[0,1.999,1,1.316,2,7.698,3,8.368,4,7.552,5,4.299,6,8.01,7,2.822,8,3.067,9,3.942,10,2.109,11,3.634,12,4.671,13,4.86,14,4.182,15,9.138,16,3.067,17,3.942,18,5.331,19,3.942,20,2.936,21,3.22,22,1.086,23,2.332,24,2.271,25,4.41,26,3.942,27,5.331,28,7.552,29,3.067,30,3.634,31,1.682,32,4.752,33,3.634,34,3.264,35,3.195,36,3.942,37,2 [...]
\ No newline at end of file
diff --git a/lunr-index-1724215481955.json b/lunr-index-1724215481955.json
new file mode 100644
index 0000000000..d582090586
--- /dev/null
+++ b/lunr-index-1724215481955.json
@@ -0,0 +1 @@
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,155.086,1,57.47,2,362.346,3,393.903,4,393.903,5,224.23,6,377.07]],["content/0",[0,1.999,1,1.316,2,7.698,3,8.368,4,7.552,5,4.299,6,8.01,7,2.822,8,3.067,9,3.942,10,2.109,11,3.634,12,4.671,13,4.86,14,4.182,15,9.138,16,3.067,17,3.942,18,5.331,19,3.942,20,2.936,21,3.22,22,1.086,23,2.332,24,2.271,25,4.41,26,3.942,27,5.331,28,7.552,29,3.067,30,3.634,31,1.682,32,4.752,33,3.634,34,3.264,35,3.195,36,3.942,37,2 [...]
\ No newline at end of file
diff --git a/lunr-index.json b/lunr-index.json
index 8e8eeec401..d582090586 100644
--- a/lunr-index.json
+++ b/lunr-index.json
@@ -1 +1 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,155.086,1,57.47,2,362.346,3,393.903,4,393.903,5,224.23,6,377.07]],["content/0",[0,1.999,1,1.316,2,7.698,3,8.368,4,7.552,5,4.299,6,8.01,7,2.822,8,3.067,9,3.942,10,2.109,11,3.634,12,4.671,13,4.86,14,4.182,15,9.138,16,3.067,17,3.942,18,5.331,19,3.942,20,2.936,21,3.22,22,1.086,23,2.332,24,2.271,25,4.41,26,3.942,27,5.331,28,7.552,29,3.067,30,3.634,31,1.682,32,4.752,33,3.634,34,3.264,35,3.195,36,3.942,37,2 [...]
\ No newline at end of file
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,155.086,1,57.47,2,362.346,3,393.903,4,393.903,5,224.23,6,377.07]],["content/0",[0,1.999,1,1.316,2,7.698,3,8.368,4,7.552,5,4.299,6,8.01,7,2.822,8,3.067,9,3.942,10,2.109,11,3.634,12,4.671,13,4.86,14,4.182,15,9.138,16,3.067,17,3.942,18,5.331,19,3.942,20,2.936,21,3.22,22,1.086,23,2.332,24,2.271,25,4.41,26,3.942,27,5.331,28,7.552,29,3.067,30,3.634,31,1.682,32,4.752,33,3.634,34,3.264,35,3.195,36,3.942,37,2 [...]
\ No newline at end of file
diff --git a/search-doc-1724179067315.json b/search-doc-1724179067315.json
deleted file mode 100644
index 347435d4da..0000000000
--- a/search-doc-1724179067315.json
+++ /dev/null
@@ -1 +0,0 @@
-{"searchDocs":[{"title":"Apache OpenDAL™ participates in Google Summer of Code 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-gsoc-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Google Summer of Code (GSoC) 2024. If you're not eligible or interested in participating in GSoC, then most of this post likely isn't relevant to you; if you are, this should contain some useful info [...]
\ No newline at end of file
diff --git a/search-doc-1724215481955.json b/search-doc-1724215481955.json
new file mode 100644
index 0000000000..7d4ae61526
--- /dev/null
+++ b/search-doc-1724215481955.json
@@ -0,0 +1 @@
+{"searchDocs":[{"title":"Apache OpenDAL™ participates in Google Summer of Code 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-gsoc-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Google Summer of Code (GSoC) 2024. If you're not eligible or interested in participating in GSoC, then most of this post likely isn't relevant to you; if you are, this should contain some useful info [...]
\ No newline at end of file
diff --git a/search-doc.json b/search-doc.json
index 347435d4da..7d4ae61526 100644
--- a/search-doc.json
+++ b/search-doc.json
@@ -1 +1 @@
-{"searchDocs":[{"title":"Apache OpenDAL™ participates in Google Summer of Code 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-gsoc-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Google Summer of Code (GSoC) 2024. If you're not eligible or interested in participating in GSoC, then most of this post likely isn't relevant to you; if you are, this should contain some useful info [...]
\ No newline at end of file
+{"searchDocs":[{"title":"Apache OpenDAL™ participates in Google Summer of Code 2024","type":0,"sectionRef":"#","url":"/blog/apache-opendal-participates-in-gsoc-2024","content":"Hello, everyone! We're writing this blog post to announce that the Apache OpenDAL™ Project will be participating in Google Summer of Code (GSoC) 2024. If you're not eligible or interested in participating in GSoC, then most of this post likely isn't relevant to you; if you are, this should contain some useful info [...]
\ No newline at end of file