// Generated by scripts/generate.mjs from bindings/api.mjs. Do not edit.
///|
#external
pub type UserData
///|
pub extern "js" fn UserData::keys(self : UserData) -> FixedArray[String] =
#| (self) => Object.keys(self)
///|
pub extern "js" fn UserData::has(self : UserData, key : String) -> Bool =
#| (self, key) => Object.hasOwn(self, key)
///|
pub extern "js" fn UserData::remove(self : UserData, key : String) -> Bool =
#| (self, key) => { if (!Object.hasOwn(self, key)) return false; return delete self[key]; }
///|
extern "js" fn UserData::ffi_get_string(
self : UserData,
key : String,
) -> Nullable[String] =
#| (self, key) => { const value = Object.hasOwn(self, key) ? self[key] : undefined; return typeof value === "string" ? value : null; }
///|
pub fn UserData::get_string(self : UserData, key : String) -> String? {
self.ffi_get_string(key).to_option()
}
///|
pub extern "js" fn UserData::set_string(
self : UserData,
key : String,
value : String,
) -> Unit =
#| (self, key, value) => { Object.defineProperty(self, key, { value, enumerable: true, configurable: true, writable: true }); }
///|
extern "js" fn UserData::ffi_get_bool(
self : UserData,
key : String,
) -> Nullable[Bool] =
#| (self, key) => { const value = Object.hasOwn(self, key) ? self[key] : undefined; return typeof value === "boolean" ? value : null; }
///|
pub fn UserData::get_bool(self : UserData, key : String) -> Bool? {
self.ffi_get_bool(key).to_option()
}
///|
pub extern "js" fn UserData::set_bool(
self : UserData,
key : String,
value : Bool,
) -> Unit =
#| (self, key, value) => { Object.defineProperty(self, key, { value, enumerable: true, configurable: true, writable: true }); }
///|
extern "js" fn UserData::ffi_get_double(
self : UserData,
key : String,
) -> Nullable[Double] =
#| (self, key) => { const value = Object.hasOwn(self, key) ? self[key] : undefined; return typeof value === "number" ? value : null; }
///|
pub fn UserData::get_double(self : UserData, key : String) -> Double? {
self.ffi_get_double(key).to_option()
}
///|
pub extern "js" fn UserData::set_double(
self : UserData,
key : String,
value : Double,
) -> Unit =
#| (self, key, value) => { Object.defineProperty(self, key, { value, enumerable: true, configurable: true, writable: true }); }
///|
extern "js" fn UserData::ffi_get_int(
self : UserData,
key : String,
) -> Nullable[Int] =
#| (self, key) => { const value = Object.hasOwn(self, key) ? self[key] : undefined; return Number.isInteger(value) && value >= -2147483648 && value <= 2147483647 ? value : null; }
///|
pub fn UserData::get_int(self : UserData, key : String) -> Int? {
self.ffi_get_int(key).to_option()
}
///|
pub extern "js" fn UserData::set_int(
self : UserData,
key : String,
value : Int,
) -> Unit =
#| (self, key, value) => { Object.defineProperty(self, key, { value, enumerable: true, configurable: true, writable: true }); }
///|
extern "js" fn UserData::ffi_get_object(
self : UserData,
key : String,
) -> Nullable[UserData] =
#| (self, key) => { const value = Object.hasOwn(self, key) ? self[key] : undefined; return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null; }
///|
pub fn UserData::get_object(self : UserData, key : String) -> UserData? {
self.ffi_get_object(key).to_option()
}
///|
pub extern "js" fn UserData::set_object(
self : UserData,
key : String,
value : UserData,
) -> Unit =
#| (self, key, value) => { Object.defineProperty(self, key, { value, enumerable: true, configurable: true, writable: true }); }