Skip to main contentModule promise
Source - PromiseRc 🔒
- A single-threaded reference-counting pointer. ‘Rc’ stands for ‘Reference
Counted’.
- PromiseRefCell 🔒
- A mutable memory location with dynamically checked borrow rules
- blob_bytes_to_string 🔒
- Blob の隠しプロパティ
_blob_bytes(ObjKind::Array の数値配列)を UTF-8
文字列へ同期的に変換する(クリップボード書き込みで .text() の Promise を
経由せず値を取り出すためのヘルパー)。 - callable_or_none 🔒
- clipboard_item_ctor 🔒
new ClipboardItem({mimeType: blobOrValue, ...})(丸ごと未対応だった)。
.types(キー一覧)と .getType(type)(対応する Blob/値を解決済み
Promise で返す)のみの簡略実装。- clipboard_item_get_type 🔒
ClipboardItem.prototype.getType(type)。- clipboard_read_text 🔒
navigator.clipboard.readText()。- clipboard_write_text 🔒
navigator.clipboard.writeText(text)。この OS 全体で共有される実クリップボードは
無いため、navigator.clipboard オブジェクト自身が持つ _clipboard prop への
単純な文字列保持で近似する。- data_url_body 🔒
data:[<mime>][;base64],<data> の本文部分(カンマ以降)を取り出す。base64 は未対応。- dom_media_pause
<audio>/<video>.pause()。.play() と対になり、内部専用属性
_paused を切り替えるだけの簡略実装(.paused getter と状態を共有)。
仕様どおり pause イベントを発火する(既に一時停止中なら発火しない)。- dom_media_play
<audio>/<video> の .play()(HTMLMediaElement。丸ごと未対応だった)。
実際の再生までは配線しない無害な簡略実装だが、仕様どおり Promise を返す
(await el.play()/el.play().catch(...) という定番パターンで
「Promise ではない」別種のエラーになるのを防ぐ)。- format_last_modified
document.lastModified を仕様どおりの "MM/DD/YYYY HH:MM:SS" 形式へ整形する。
実ファイルの mtime を追跡する仕組みが無いため、epoch_ms_now()(Date.now()
と同じ現在時刻ソース)をそのまま使う簡略実装。- history_back 🔒
- history_change_state 🔒
- history.pushState / replaceState 共通: url 指定があれば location を書換え、state を保存。
pushState のみ length をインクリメント。popstate は仕様通り発火しない。
- history_forward 🔒
- history_go 🔒
- history_push_state 🔒
- history_replace_state 🔒
- http_status_text 🔒
- Response オブジェクトを生成(status/ok/_body と text()/json() メソッドを持つ)。
Response.prototype.statusText(丸ごと未対応で常に undefined だった。if (!response.ok) console.log(response.status, response.statusText) のような
エラーログの定番パターンでよく参照される)。標準的な HTTP ステータス文言の
主要なもののみのテーブルで近似する(Reason-Phrase はサーバ実装依存で仕様上も
クライアント側で正確に再現できるものではない)。 - location_assign 🔒
- location.assign(url): 指定URLへ遷移(履歴に新エントリを積む)。
- location_components 🔒
- 絶対URL
scheme://host[:port]/path[?query][#hash] を location の各成分へ分解。
string_slice lint 回避で split_once / strip_prefix のみ使用。 - location_hostname
- グローバルの location.hostname を読む(未設定なら空文字列。
document.domain
の読み取り専用近似が呼ぶ)。 - location_href
- グローバルの location.href を読む(未設定/空なら None)。
- location_reload 🔒
- location.reload(): 現在のページを再読込する。
- location_replace 🔒
- location.replace(url): 指定URLへ遷移(現在の履歴エントリを置換)。
- location_to_string 🔒
- location.toString(): href を返す(
String(location) / 文字列連結用)。 - make_empty_time_ranges
TimeRanges(buffered/seekable用)の常に空の実装。length:0 に
加え、範囲外アクセスとして仕様どおり例外を投げる start/end を持つ。- make_response 🔒
- make_response_with_url 🔒
Response.prototype.url(fetch() が実際に取得した絶対 URL。相対 URL 指定時
でも解決済みの絶対形が返る、リダイレクト後の最終 URL 確認等で使われる定番
プロパティ)が丸ごと未対応で常に undefined だった。make_response の呼び出し元
が URL を知っている場合はこちらを使う。- navigator_clipboard_read 🔒
navigator.clipboard.read()(丸ごと未対応だった)。現在の _clipboard
文字列を text/plain の Blob として包んだ ClipboardItem 1件を返す。- navigator_clipboard_write 🔒
navigator.clipboard.write(items)(丸ごと未対応だった。ClipboardItem
配列を受け取り、内部の text/plain エントリを既存の _clipboard
文字列プロパティへ書き込む簡略実装。画像等の他 MIME タイプは対象外)。- navigator_get_high_entropy_values 🔒
navigator.userAgentData.getHighEntropyValues(hints)(丸ごと未対応
だった。低エントロピー値(brands/mobile/platform)は常に含み、
要求されたヒントに応じて残りの固定値を追加で返す誠実な簡略実装。
実データを収集する仕組みが無いため全て固定値だが、既存の
navigator.userAgent/.platformと整合する値を返す)。- navigator_storage_estimate 🔒
navigator.storage.estimate()(StorageManager API。丸ごと未対応
だった)。実際のディスク使用量計測機構が無いためusage: 0(誠実な
未計測値)、quotaは固定の代表値(1GB)を返す簡略実装。- navigator_storage_persist 🔒
navigator.storage.persist()/.persisted()(丸ごと未対応だった)。
この処理系はSylFSへの書き込みが常に永続化されるため、両方とも常に
trueを返す誠実な簡略実装。- new_pending 🔒
- promise_ctor 🔒
new Promise((resolve, reject) => {...})。executor を同期実行する。- promise_reject_static 🔒
- promise_resolve_static 🔒
- promise_try_static 🔒
Promise.try(callbackFn, ...args)(ES2025): callbackFn を同期実行し、
同期例外なら reject、戻り値が thenable ならその状態を採用、それ以外は resolve する。
new Promise(...) と違い、callbackFn は非 async 関数でも同期/非同期どちらの結果も統一的に扱える。- promise_with_resolvers_static 🔒
Promise.withResolvers()(ES2024): { promise, resolve, reject } を返す。- queue_location_nav 🔒
- location オブジェクトにナビゲーション要求を積む共通ヘルパ。
mode: “assign”(履歴あり) / “replace”(履歴置換) / “reload”(再読込)。
ホストが take_pending_location() で回収して実ナビゲーションする。 - rejected_promise 🔒
- 拒否済みの Promise を作る(fetch 失敗時)。
- resolved_promise 🔒
- 既に解決済みの Promise を作る(同期取得した値を await 互換で返すため)。
- response_array_buffer 🔒
- Response.arrayBuffer(): 本文を UTF-8 バイト列化した実バイト列付き
ArrayBuffer
(make_arraybuffer_with_bytes())で解決する Promise。 - response_blob 🔒
- Response.blob(): 本文を UTF-8 バイト列化した
Blob で解決する Promise。 - response_body_string 🔒
- this._body を取り出す共通処理。
- response_clone 🔒
Response.prototype.clone()。同じ status/本文を持つ新しい Response
オブジェクトを返す(この処理系は本文を消費済みにする bodyUsed 追跡が無く
.text()/.json() 等を複数回呼べる簡略実装のため、clone() は主に
「呼び出し自体が壊れない」ことを保証する意味合いが強い)。- response_ctor 🔒
new Response(body, init)(Fetch API)。- response_error_static 🔒
Response.error()(ネットワークエラーを表す、ok:false/type:"error" の
特殊な不透明 Response)。- response_init_status 🔒
init.status({status, headers} 形の ResponseInit)を読む共通ヘルパ。- response_json 🔒
- Response.json(): 本文を JSON.parse して解決する Promise。
- response_json_static 🔒
Response.json(data, init)(ES2022 static factory。JSON.stringify +
content-type: application/json ヘッダ付与を1回で行う)。- response_redirect_static 🔒
Response.redirect(url, status?)(既定 302。Location ヘッダ付きの
リダイレクト応答を表す Response を返す)。- response_text 🔒
- Response.text(): 本文文字列で解決する Promise。
- set_pending_nav 🔒
- history のナビゲーション要求を history オブジェクトの隠し props
_pending_nav に積む。
値は相対移動量(負=戻る / 正=進む)。エンジンが JS 実行後に take_pending_nav で回収し、
go_back / go_forward を実行してから popstate を発火する。
(SPA だけでなく実ページ遷移にも対応するため、実ナビはホスト側に委譲する)。 - split_http_url 🔒
- URL を (is_https, host, path) に分解。スキーム無しは弾く(絶対のみ)。
string_slice lint を避けるため添字スライスは使わず split_once/strip_prefix で処理。 - this_promise_state 🔒
- time_ranges_out_of_bounds 🔒