Skip to main contentModule static_classlist
Source - array_of 🔒
- body_to_string 🔒
- fetch/XHR の body 値を文字列化する。FormData / URLSearchParams は内部
_query
(“k=v&k=v”)をそのまま送信本文に使う。それ以外は通常の文字列化。 - do_http_request 🔒
- 同期 HTTP リクエストの共通処理。(status, body) を返す。
data: と http(s): 対応(fetch/XHR 共有)。
base が非空なら相対URLを解決。method は GET/POST/PUT/DELETE/PATCH/HEAD 等を任意に通す
(web_request 内で英大文字トークン検証)。 - dom_classlist_item
- dom_classlist_to_string
- eye_dropper_ctor 🔒
new EyeDropper()(丸ごと未対応だった)。.open() メソッドのみを持つ
オブジェクトを返す。- eye_dropper_open 🔒
EyeDropper.prototype.open()。実際のピッカー UI が無いため、ユーザーが
ピッカーをキャンセルした場合と同じ仕様どおりの AbortError で常に拒否
する(色を拾えていないのに成功を偽装しない)。- fetch 🔒
- fetch(url|Request, options?): options.method/body/headers に対応(GET/POST)。
AtmOS の HTTP は同期なので、その場で取得し解決済み Promise を返す。
- geolocation_clear_watch 🔒
navigator.geolocation.clearWatch(id)。監視自体が実在しないため no-op。- geolocation_get_current_position 🔒
navigator.geolocation.getCurrentPosition(success, error, options)(丸ごと
未対応だった)。この処理系には位置情報を提供する手段が一切無いため、常に
error を PERMISSION_DENIED で同期的に呼ぶ簡略実装(success は永遠に
呼ばれない)。- geolocation_watch_position 🔒
navigator.geolocation.watchPosition(success, error, options)。継続監視の
概念が無いためワンショットの getCurrentPosition と同じ即時エラー通知の
みだが、clearWatch と対にするための一意な id は仕様どおり返す。- headers_append 🔒
append(name, value)。既存値があれば ", " 区切りで連結する(仕様どおり
複数値ヘッダのコンマ結合表現。set-cookie 等の例外は非対応)。- headers_content_type 🔒
- headers オブジェクトから Content-Type を大小無視で探す。
- headers_ctor 🔒
Headers(Fetch API。new Headers(init)/response.headers.get(...) という
定番パターンで使われる get/set/has/append/delete 付きの専用クラス)が丸ごと
未対応で、headers は単なるプレーンオブジェクトとしてしか扱えなかった。
ヘッダ名は仕様どおり大小無視・小文字正規化して格納する(プロパティキー自体を
小文字化したヘッダ名として使う。メソッド名 “get”/“set” 等と衝突するヘッダ名
は理論上あり得るが実用上まず出現しないため簡略化として許容する)。- headers_delete 🔒
- headers_entries 🔒
headers.entries()/for (const [k,v] of headers)(Symbol.iterator は
entries() と同義)が丸ごと未対応だった。- headers_entries_sorted 🔒
Headers の実データ(メソッド/内部マーカーを除いた header 名/値)を、仕様どおり
名前順にソートして返す(forEach/entries/keys/values/Symbol.iterator
が共有する)。- headers_for_each 🔒
- headers_get 🔒
- headers_get_set_cookie 🔒
- headers_has 🔒
- headers_key 🔒
- headers_keys 🔒
- headers_set 🔒
- headers_values 🔒
- make_geolocation_error 🔒
GeolocationPositionError 相当のオブジェクトを組み立てる(code/message/
PERMISSION_DENIED/POSITION_UNAVAILABLE/TIMEOUT 定数。仕様どおり
インスタンスにも static 同名定数が生えている)。- make_headers 🔒
headers_ctor の実体(Interp を必要としないため response.headers の
生成箇所からも直接呼べる)。- navigator_can_share 🔒
navigator.canShare(data)(Web Share API。丸ごと未対応だった)。実際の
共有先 UI が無くいかなる data も共有できないため、仕様上の「対応不明」
を意味する誠実な false を常に返す簡略実装。- navigator_get_battery 🔒
- navigator_locks_query 🔒
navigator.locks.query()。実際の排他状態を追跡していないため、保持中/
待機中とも常に空のスナップショットを返す。- navigator_locks_request 🔒
navigator.getBattery()(Battery Status API。丸ごと未対応だった)。この
OS のターゲット(Raspberry Pi)はバッテリー非搭載で常時 AC 電源動作の
ため、「常時満充電で給電中」を返す簡略実装(levelchange 等のイベントは
対象外)。
navigator.locks.request(name, options?, callback)(Web Locks API。丸ごと
未対応だった)。options は省略可能なため、実際に呼び出し可能な最後の
引数をコールバックとして扱う。コールバックへ渡す Lock は仕様の必須
プロパティ(name/mode)のみを持つ簡略オブジェクト。- navigator_send_beacon 🔒
navigator.sendBeacon(url, data)(丸ごと未対応だった。ページ離脱時の
計測データ送信に使われる定番パターン)。この処理系の HTTP は同期実行の
ため、仕様上の「ページ破棄後も配送を継続する」非同期性の恩恵は無いが、
既存の fetch() と同じ POST 経路(同じ body/content-type 推論)を通して
その場で送信し、常に成功(true)を返す簡略実装。戻り値の Promise は
仕様どおり呼び出し元へ返さないため破棄する。- navigator_share 🔒
navigator.share(data)(Web Share API。丸ごと未対応だった)。実際の
共有先 UI が無いため、ユーザーがネイティブ共有シートを閉じた場合と同じ
仕様どおりの AbortError で常に拒否する(成功を偽装しない)。- navigator_vibrate 🔒
navigator.vibrate(pattern)(Vibration API。丸ごと未対応だった)。仕様上
戻り値は「リクエストを受理したか」のみを表しハードウェアの有無とは無関係
なため、常に true を返す簡略実装(実際に振動は発生しない)。- normalize_dot_segments 🔒
- 相対URLを base(現在ページの絶対URL)基準で解決する。
絶対(http/https)・
data: はそのまま。/... は scheme+host 直下、その他はディレクトリ相対。
string_slice lint 回避のため split_once / str::get のみ使用。
パスセグメントの ./.. を解決する(RFC 3986 §5.2.4 の簡略版)。
以前は resolve_url がディレクトリ相対結合のみで ./.. をそのまま
文字列結合していたため、new URL('../style.css', 'https://h.com/a/b/c')
のような(相対URLで最も頻繁に使われる)親ディレクトリ参照が
https://h.com/a/b/../style.css のように未解決のまま残るバグだった。 - obj_prop 🔒
- Value::Object のプロパティを取得(非オブジェクトは None)。
- permissions_query 🔒
navigator.permissions.query({name})(丸ごと未対応だった)。PermissionStatus
相当の {state, name, onchange} を解決済み Promise で返す。実プロンプト UI が
無いため、他 API の実装状況と整合する固定値のみを返す簡略実装。- promise_all_static 🔒
- Promise.all: マイクロタスクを駆動して各入力を解決し、結果配列に集約する。
- promise_catch_m 🔒
- promise_finally_m 🔒
Promise.prototype.finally(cb)。以前は cb を fulfill/reject 双方で副作用として
実行するだけで戻り値/例外を完全に無視していた。仕様上は cb が例外を投げる、
または reject する Promise を返した場合、その結果が元の settle を上書きすべき
(Promise.resolve(1).finally(() => { throw 'x' }) は 1 ではなく 'x' で
reject すべき)で、これが cb に副作用以上の意味が無いという誤った前提の
静かな破壊バグだった。ネイティブ関数はクロージャで cb/this を束縛できない
ため(AbortSignal.any 等と同じ制約)、グローバルの一時変数経由で渡した上で
eval_source に組み立てた JS(仕様の finally 展開そのもの)を実行する。- promise_method
then/catch/finally メソッド(interp の get_property から返す)。- promise_then_m 🔒
- request_ctor 🔒
new Request(input, options?)(Fetch API。fetch(new Request(url, opts)) という
定番パターンで使われる)が丸ごと未対応で Request is not defined になっていた。
input は URL 文字列、または別の Request(.url/.method 等をコピーする
clone 的な使い方)のどちらも受け付ける。- resolve_url
- string_from_char_code 🔒
String.fromCharCode(...codes)(ES1)が String.fromCodePoint(ES2015)と全く同じ
実装を共有しており、2つのバグがあった。(1) 各引数を 16bit コード単位へマスクしておらず、
仕様上 fromCharCode(0x1F600) は単一の UTF-16 コード単位(0xF600 相当)になるべき
ところ絵文字そのものになっていた。(2) サロゲートペア(fromCharCode(0xD83D,0xDE00) で
絵文字1文字を表す ES1 以来の定番イディオム)を一切結合しておらず、個々の値は単独では
無効な Unicode スカラー値のため char::from_u32 が None を返し無音で消えていた。
UTF-16 コード単位列として正しくデコードする(String::from_utf16_lossy がサロゲート
ペアの結合を担う)ことで両方解消する。- string_from_code_point 🔒
String.fromCodePoint(...codePoints)(ES2015)。fromCharCode と異なり各引数は
フルの Unicode コードポイント(〜0x10FFFF)で、16bit マスクやサロゲートペア結合は
行わない。不正なコードポイントは仕様どおり RangeError 相当の例外にする。- string_raw 🔒
String.raw({raw: [...]}, ...substitutions)(ES2015)。タグ付きテンプレートの
String.raw`a\nb${x}c` で使う定番の組込みタグ関数。raw 配列の要素を
エスケープ解決せずそのまま連結し、間に substitutions を挟む。- update_location
- グローバルの location オブジェクトの各成分を url から更新する(メソッドは保持)。
- wake_lock_request 🔒
navigator.wakeLock.request(type)(Screen Wake Lock API。丸ごと未対応
だった)。実際の電源管理機構は無いため、WakeLockSentinel 相当の
{released, type, release()} を状態のみ追跡する簡略実装で返す。- wake_lock_sentinel_release 🔒
WakeLockSentinel.prototype.release()(対をなす解放メソッド)。- xhr_add_event_listener 🔒
- addEventListener(type, fn) を on プロパティへ写像(最後の登録が有効)。
- xhr_ctor 🔒
- XMLHttpRequest: AtmOS の HTTP は同期なので send() で即取得し readyState=4 まで進め、
onreadystatechange → onload(またはonerror) を同期発火する。
- xhr_empty_str 🔒
- xhr_get_response_header 🔒
- xhr_noop 🔒
- xhr_open 🔒
- xhr_remove_event_listener 🔒
- removeEventListener(type, fn)。
AbortSignal と同じ「on<type> に単一リスナを
格納する」簡略方式に合わせ、渡された関数が現在登録済みのものと同一参照の場合
のみ削除する。 - xhr_send 🔒
- xhr_set_request_header 🔒
- setRequestHeader(name, value): Content-Type のみ保持(POST のボディ送信に使用)。