Skip to main contentModule web_forms
Source - LS_FILENAME 🔒
- COOKIES 🔒
- LOCAL_STORAGE 🔒
- LS_LOADED 🔒
- SESSION_STORAGE 🔒
- build_query 🔒
- collect_form_data 🔒
- cookie_set
document.cookie = "..." の setter: 先頭の name=value セグメントのみを
反映し、; expires=.../; path=... 等の後続属性は無視する(name が空、
または = が無い場合は何もしない)。- cookie_store_delete 🔒
cookieStore.delete(name)。- cookie_store_get 🔒
cookieStore.get(name)(Cookie Store API。丸ごと未対応だった)。
document.cookie と同じ COOKIES を参照する。見つからなければ仕様どおり
null。- cookie_store_get_all 🔒
cookieStore.getAll(name?)(対応する複数形。name 省略時は全 Cookie)。- cookie_store_set 🔒
cookieStore.set(name, value)(cookieStore.set({name, value}) 形式も
対応)。既存の cookie_set と同じ COOKIES へ書き込む。- cookie_string
document.cookie の getter: "name=value; name2=value2" 形式で結合する。- data_attr_to_camel 🔒
data-user-id → userId(camel_to_data_attr の逆変換)。- dataset_host_entries
dataset_host_keys と同じ判定条件で、camelCase キー→属性値のペア一覧を
返す(Object.values/Object.entries 用)。- dataset_host_keys
kind が dataset:N(element.dataset)の ObjKind::Host なら、対応する
DOM 要素の data-* 属性一覧を camelCase キーへ変換して返す。
Object.keys(el.dataset)/for...in el.dataset が実データ(data-* 属性、
.props ではなく DOM 要素側の属性ストアにある)を素通しして常に空を
返していたバグの修正用(storage_host_keys(localStorage/sessionStorage)
で修正済みの同型バグ)。- fd_entries 🔒
- fd_for_each 🔒
- fd_keys 🔒
- fd_values 🔒
- form_data_ctor 🔒
- form_url_encode 🔒
- form-urlencoded(RFC1738 系)でエンコード。空白は
+、それ以外の非英数字は %XX。 - has_url_scheme 🔒
- ls_deserialize 🔒
- バイナリ形式から BTreeMap を復元。
- ls_ensure_loaded 🔒
- 起動後初回アクセス時に SylFS から localStorage を読み込む(FS 未マウントなら skip)。
- ls_flush 🔒
- localStorage の変更を SylFS に書き出す(FS 未マウントなら skip)。
- ls_serialize 🔒
- BTreeMap を長さプレフィクス付きバイナリ形式にシリアライズ。
- match_pathname_pattern 🔒
- パスパターン(
/users/:idのような:name名前付きセグメントを含む)を
ターゲットパスとスラッシュ区切りのセグメント単位で照合する。
以前はmatch_pattern_partがパターン全体を1個の文字列として扱い、
pattern.starts_with(':')(パターン全体の先頭が:の場合のみ)しか
見ていなかったため、/users/:idのように名前付きセグメントが途中に
ある一般的なパターンが常にマッチ失敗し、かつgroups(URLPatternの
名前付きキャプチャ結果、res.pathname.groups.id等でアクセスされる)
も一切生成されないバグだった。一致した場合は(名前, 値)のキャプチャ
一覧を返す。 - match_pattern_part 🔒
- parse_query 🔒
- storage_clear 🔒
- storage_get_item 🔒
- storage_get_prop
storage: host のプロパティ取得(メソッド / length / データキー)。- storage_host_keys
kind が localStorage/sessionStorage の ObjKind::Host なら、実データを保持する
storage_map から現在のキー一覧を返す。Object.keys(localStorage)/for...in localStorage
が常に空を返していたバグの修正用(実データは .props ではなく別マップにあるため)。- storage_key 🔒
- storage_map 🔒
- storage_remove_item 🔒
- storage_remove_prop
storage: host へのプロパティ代入(length 以外は setItem 相当)。
delete localStorage.foo/delete sessionStorage.foo(プロパティ直接削除。removeItem
と同義だが、こちらの経路は Host プロキシが .props を持たないため以前は黙って
何も起きなかった)。- storage_set_item 🔒
- storage_set_prop
- this_storage_tag 🔒
- url_can_parse 🔒
- new URL(href): location 風の成分 + searchParams を持つオブジェクト。
URL.canParse(url, base?) の実体。この処理系の new URL()/resolve_url
は寛容な簡略実装で不正な入力でも例外を投げないため、代わりに「解決結果が
scheme: 形式を持つか」で判定する(WHATWG のスキーム構文
[a-zA-Z][a-zA-Z0-9+.-]*: に準拠した簡易チェック)。 - url_ctor 🔒
- url_get_hash 🔒
- url_get_host 🔒
- url_get_hostname 🔒
- url_get_pathname 🔒
- url_get_port 🔒
- url_get_protocol 🔒
- url_get_search 🔒
url.searchゲッター。
【安全性・2026-07-23】toString()/hrefと同じくsearchParamsから毎回
再構成する版(usp_to_string経由でsearchParamsオブジェクトを参照する
実装)を試した際、u.searchParams.set(...); u.searchという呼び出し順序で
QEMU起動がハングする現象が一度観測されていたが、後日の徹底調査で「QEMU
起動ハングはビルドごとのヒープレイアウトに依存する非決定的現象であり、
特定のコード内容には紐づかない」と判明した(詳細はspec/walkthrough.md
「QEMU起動ハングの二分探索」参照)。この修正自体はurl_to_stringと
同じ既に安全実績のあるパターン(o.borrow()一度きり、別オブジェクトへの
単純な委譲)であり内容起因のリスクは無いと判断し、再適用する。- url_parse 🔒
URL.parse(url, base?)(ES2024/WHATWG。丸ごと未対応だった)。
try { return new URL(...) } catch { return null } という定番イディオムを
1メソッドで完結させる(URL.canParse は真偽値のみを返す存在確認、
こちらは実際に使う URL インスタンスまたは null を返す)。この処理系の
new URL() 自体は不正な URL でも例外を投げず素通しする簡略実装のため、
有効性判定は canParse と同じ has_url_scheme を流用する。- url_pattern_ctor 🔒
new URLPattern(pattern, baseURL?) または new URLPattern({ pathname, hostname, ... })- url_pattern_exec 🔒
- url_pattern_test 🔒
- url_prop_or_empty 🔒
- url_rebuild_host_and_origin 🔒
protocol/hostname/portのいずれかが変更された後、それらから導出される
host(hostname+:+port)とorigin(protocol+//+host)を
再計算して.propsへ書き戻す。hostセッター自身はhostname/portへ分割
した後にこの関数を呼ぶ。- url_search_params_ctor 🔒
- url_set_hash 🔒
- url_set_host 🔒
url.host = 'hostname:port'。hostname/portへ分割して保存し直す
(hostname/port個別セッターとhostの内部表現を一致させるため)。- url_set_hostname 🔒
- url_set_href 🔒
url.href = newHref(URL.prototype.hrefセッター)。url_ctorと同じ
分解ロジックを、新規オブジェクトを作る代わりに既存のthisへ上書き
する形で再利用する(オブジェクト identity は保つ)。- url_set_pathname 🔒
- url_set_port 🔒
- url_set_protocol 🔒
- url_set_search 🔒
url.search = '...'。searchParamsが「唯一の真実源」(toString()/hrefは
searchプロパティ自体でなくsearchParamsから毎回再構成する)ため、
searchプロパティの更新だけでなくsearchParams自体も作り直す必要がある。- url_to_string 🔒
URL.prototype.toString()。href の静的スナップショットを返すのではなく、
searchParams の現在の内容から毎回クエリ文字列を再構成する(protocol/host/
pathname/hash は construction 時点のまま。この処理系は pathname/hash への
代入自体は未対応なので、それらのプロパティ再代入との不整合は生じない)。- usp_append 🔒
- usp_delete 🔒
delete(name, value)(ES2023 で追加された第2引数。has と同じく省略時は名前だけ
で全削除、指定時は名前と値の両方が一致するエントリのみ削除する。以前は第2引数を
完全に無視しており、値を問わず同名のエントリを全て消してしまうバグだった)。- usp_entry_count
URLSearchParams.prototype.size(ES2023)の実体。interp.rs のプロパティ
getter から呼ばれる(USP は専用 ObjKind を持たない plain object 実装のため、
Map/Set の size のように直接カウントを持たず、その都度クエリ文字列をパース
して数える)。- usp_get 🔒
- usp_get_all 🔒
- usp_has 🔒
has(name, value)(ES2023 で追加された第2引数 value。省略時は名前だけで判定する
従来どおりの挙動だが、指定時は名前と値の両方が一致するエントリの有無を返す。
以前は第2引数を完全に無視しており、has('a', 'wrong-value') が誤って true に
なるバグだった)。- usp_iterator 🔒
URLSearchParams の既定イテレーション(entries() と同義)。make_iterator() で
本物のイテレータ形状(.next())にして返す。- usp_query 🔒
- usp_set 🔒
- usp_set_query 🔒
- usp_sort 🔒
URLSearchParams.prototype.sort()(ES2020)が丸ごと未対応だった。全エントリを
キー名でソートする(仕様どおり安定ソート。同名キー同士の相対順序は保持する)。- usp_to_string 🔒