| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-03-04 19:28:09 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2026-03-04 19:28:26 UTC |
| parent | ba4aceb609842298cbbe5c37037f8ca6bf22e634 |
| Makefile | +2 | -0 |
| borogove/AvailableChatIterator.hx | +18 | -1 |
| npm/index.ts | +1 | -0 |
diff --git a/Makefile b/Makefile index 6aadff7..e45b7c8 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ npm/borogove-browser.js: haxe browserjs.hxml sed -i '/;var $$hx_exports = typeof exports != "undefined" ? exports : globalThis;/{N;N;N;d;}' npm/borogove-browser.js sed -i 's/^$$hx_exports[^=]*=\(.*\);$$/export {\1 };/g' npm/borogove-browser.js + sed -i 's/"\[Symbol.asyncIterator\]"() {/[Symbol.asyncIterator]() {/g' npm/borogove-browser.js cd npm && npx cjstoesm borogove-browser.js awk -f optional-sqlite.awk npm/borogove-browser.js mv npm/browser-no-sqlite.js npm/borogove-browser.js @@ -35,6 +36,7 @@ npm/borogove.js: haxe nodejs.hxml sed -i '/;var $$hx_exports = typeof exports != "undefined" ? exports : globalThis;/{N;N;N;d;}' npm/borogove.js sed -i 's/^$$hx_exports[^=]*=\(.*\);$$/export {\1 };/g' npm/borogove.js + sed -i 's/"\[Symbol.asyncIterator\]"() {/[Symbol.asyncIterator]() {/g' npm/borogove.js cd npm && npx cjstoesm borogove.js npm: npm/borogove-browser.js npm/borogove.js borogove/persistence/IDB.js borogove/persistence/MediaStoreCache.js borogove/persistence/sqlite-worker1.mjs diff --git a/borogove/AvailableChatIterator.hx b/borogove/AvailableChatIterator.hx index 1bf1001..0ea3792 100644 --- a/borogove/AvailableChatIterator.hx +++ b/borogove/AvailableChatIterator.hx @@ -151,12 +151,29 @@ class AvailableChatIterator { /** Get the next AvailableChat from this iterator **/ + #if js + @:native("[Symbol.asyncIterator]") + public function asyncIterator() { + return this; + } + + public function next(): Promise<{ done: Bool, ?value: AvailableChat }> { + return internalNext().then(v -> { + return { done: v == null, value: v }; + }); + } + #else public function next(): Promise<Null<AvailableChat>> { + return internalNext(); + } + #end + + private function internalNext(): Promise<Null<AvailableChat>> { if (results.length < 1) return Promise.resolve(null); return results.shift().then(available -> { if (available == null || dedup[available.chatId]) { - return this.next(); + return this.internalNext(); } else { dedup[available.chatId] = true; return Promise.resolve(available); diff --git a/npm/index.ts b/npm/index.ts index 9b13343..f18a5ce 100644 --- a/npm/index.ts +++ b/npm/index.ts @@ -9,6 +9,7 @@ export { } from "./borogove-enums"; export { borogove_AvailableChat as AvailableChat, + borogove_AvailableChatIterator as AvailableChatIterator, borogove_Channel as Channel, borogove_Chat as Chat, borogove_ChatAttachment as ChatAttachment,