summaryrefslogtreecommitdiff
path: root/vendor/js-sys/src
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-15 16:37:08 -0600
committermo khan <mo@mokhan.ca>2025-07-17 16:30:22 -0600
commit45df4d0d9b577fecee798d672695fe24ff57fb1b (patch)
tree1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/js-sys/src
parentf94f79608393d4ab127db63cc41668445ef6b243 (diff)
feat: migrate from Cedar to SpiceDB authorization system
This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema.
Diffstat (limited to 'vendor/js-sys/src')
-rw-r--r--vendor/js-sys/src/Temporal.rs1057
-rw-r--r--vendor/js-sys/src/lib.rs6439
2 files changed, 0 insertions, 7496 deletions
diff --git a/vendor/js-sys/src/Temporal.rs b/vendor/js-sys/src/Temporal.rs
deleted file mode 100644
index ee6d97d1..00000000
--- a/vendor/js-sys/src/Temporal.rs
+++ /dev/null
@@ -1,1057 +0,0 @@
-use super::*;
-
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type Instant;
-
- #[wasm_bindgen(static_method_of = Instant, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> Instant;
-
- #[wasm_bindgen(static_method_of = Instant, js_namespace = Temporal)]
- pub fn compare(one: &Instant, two: &Instant) -> i32;
-
- #[wasm_bindgen(method, getter, structural, js_name = epochSeconds)]
- pub fn epoch_seconds(this: &Instant) -> u64;
- #[wasm_bindgen(method, getter, structural, js_name = epochMilliseconds)]
- pub fn epoch_milliseconds(this: &Instant) -> u64;
- #[wasm_bindgen(method, getter, structural, js_name = epochMicroseconds)]
- pub fn epoch_microseconds(this: &Instant) -> BigInt;
- #[wasm_bindgen(method, getter, structural, js_name = epochNanoseconds)]
- pub fn epoch_nanoseconds(this: &Instant) -> BigInt;
-
- /// This method adds duration to Instant.
- ///
- /// The years, months, weeks, and days fields of duration must be zero.
- #[wasm_bindgen(method)]
- pub fn add(this: &Instant, duration: &Duration, options: &JsValue) -> Instant;
-
- /// This method subtracts duration to Instant.
- ///
- /// The years, months, weeks, and days fields of duration must be zero.
- #[wasm_bindgen(method)]
- pub fn subtract(this: &Instant, duration: &Duration, options: &JsValue) -> Instant;
-
- /// This method computes the difference between the two times represented by zonedDateTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is earlier
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn until(this: &Instant, other: &Instant, options: &JsValue) -> Duration;
-
- /// This method computes the difference between the two times represented by zonedDateTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is later
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn since(this: &Instant, other: &Instant, options: &JsValue) -> Duration;
-
- /// Returns a new Temporal.Instant object which is zonedDateTime rounded to `roundTo` (if
- /// a string parameter is used) or `roundingIncrement` of `smallestUnit` (if an object parameter
- /// is used).
- #[wasm_bindgen(method)]
- pub fn round(this: &Instant, round_to: &JsValue) -> Instant;
-
- #[wasm_bindgen(method)]
- pub fn equals(this: &Instant, other: &Instant) -> bool;
-
- /// This method overrides the Object.prototype.toString() method and provides a convenient, unambiguous
- /// string representation of date. The string can be passed to Temporal.PlainDate.from() to
- /// create a new Temporal.PlainDate object.
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Instant) -> JsString;
-
- /// This method overrides `Object.prototype.toLocaleString()` to provide a human-readable,
- /// language-sensitive representation of duration.
- ///
- /// The locales and options arguments are the same as in the constructor to Intl.DateTimeFormat.
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &Instant, locales: &JsValue, options: &JsValue) -> JsString;
-
-}
-
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type PlainDateTime;
-
- #[wasm_bindgen(static_method_of = PlainDateTime, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> PlainDateTime;
-
- #[wasm_bindgen(static_method_of = PlainDateTime, js_namespace = Temporal)]
- pub fn compare(one: &PlainDateTime, two: &PlainDateTime) -> i32;
-
- #[wasm_bindgen(method, getter, structural)]
- pub fn year(this: &PlainDateTime) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn month(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn week(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn day(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn hour(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn minute(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn second(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn millisecond(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn microsecond(this: &PlainDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn nanosecond(this: &PlainDateTime) -> u32;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural, js_name = eraYear)]
- pub fn era_year(this: &PlainDateTime) -> JsValue;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural)]
- pub fn era(this: &PlainDateTime) -> JsValue;
-
- /// The dayOfWeek read-only property gives the weekday number that the date falls
- /// on. For the ISO 8601 calendar, the weekday number is defined as in the ISO 8601
- /// standard: a value between 1 and 7, inclusive, with Monday being 1, and Sunday 7.
- #[wasm_bindgen(method, getter, structural, js_name = dayOfWeek)]
- pub fn day_of_week(this: &PlainDateTime) -> u32;
-
- /// The dayOfYear read-only property gives the ordinal day of the year that the date
- /// falls on. For the ISO 8601 calendar, this is a value between 1 and 365, or 366 in
- /// a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = dayOfYear)]
- pub fn day_of_year(this: &PlainDateTime) -> u32;
-
- /// The weekOfYear read-only property gives the ISO week number of the date. For the
- /// ISO 8601 calendar, this is normally a value between 1 and 52, but in a few cases it
- /// can be 53 as well. ISO week 1 is the week containing the first Thursday of the year.
- #[wasm_bindgen(method, getter, structural, js_name = weekOfYear)]
- pub fn week_of_year(this: &PlainDateTime) -> u32;
-
- /// The daysInWeek read-only property gives the number of days in the week that the
- /// date falls in. For the ISO 8601 calendar, this is always 7, but in other calendar
- /// systems it may differ from week to week.
- #[wasm_bindgen(method, getter, structural, js_name = daysInWeek)]
- pub fn days_in_week(this: &PlainDateTime) -> u32;
-
- /// The daysInMonth read-only property gives the number of days in the month that the
- /// date falls in. For the ISO 8601 calendar, this is 28, 29, 30, or 31, depending
- /// on the month and whether the year is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInMonth)]
- pub fn days_in_month(this: &PlainDateTime) -> u32;
-
- /// The daysInYear read-only property gives the number of days in the year that the date
- /// falls in. For the ISO 8601 calendar, this is 365 or 366, depending on whether the year
- /// is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInYear)]
- pub fn days_in_year(this: &PlainDateTime) -> u32;
-
- /// The monthsInYear read-only property gives the number of months in the year that the date
- /// falls in. For the ISO 8601 calendar, this is always 12, but in other calendar systems
- /// it may differ from year to year.
- #[wasm_bindgen(method, getter, structural, js_name = monthsInWeek)]
- pub fn months_in_year(this: &PlainDateTime) -> u32;
-
- /// The inLeapYear read-only property tells whether the year that the date falls in is a
- /// leap year or not. Its value is true if the year is a leap year, and false if not.
- #[wasm_bindgen(method, getter, structural, js_name = inLeapYear)]
- pub fn in_leap_year(this: &PlainDateTime) -> bool;
-
- /// This method creates a new Temporal.PlainDateTime which is a copy of zonedDateTime, but any
- /// properties present on parameter override the ones already present on zonedDateTime.
- #[wasm_bindgen(method, js_name = withPlainDate)]
- pub fn with(this: &PlainDateTime, parameter: &JsValue, options: &JsValue) -> PlainDateTime;
-
- /// Returns a new `Temporal.PlainDateTime` object which replaces the calendar date of zonedDateTime
- /// with the calendar date represented by plainDate.
- #[wasm_bindgen(method, js_name = withPlainDate)]
- pub fn with_plain_date(this: &PlainDateTime, date: &PlainDate) -> PlainDateTime;
-
- /// Returns a new `Temporal.PlainDateTime` object which is the date indicated by date, projected
- /// into calendar.
- #[wasm_bindgen(method, js_name = withCalendar)]
- pub fn with_calendar(this: &PlainDateTime, calendar: &str) -> PlainDateTime;
-
- /// This method adds duration to zonedDateTime.
- #[wasm_bindgen(method)]
- pub fn add(this: &PlainDateTime, duration: &Duration, options: &JsValue) -> PlainDateTime;
-
- /// This method subtracts duration to zonedDateTime.
- #[wasm_bindgen(method)]
- pub fn subtract(this: &PlainDateTime, duration: &Duration, options: &JsValue) -> PlainDateTime;
-
- /// This method computes the difference between the two times represented by zonedDateTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is earlier
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn until(this: &PlainDateTime, other: &PlainDateTime, options: &JsValue) -> Duration;
-
- /// This method computes the difference between the two times represented by zonedDateTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is later
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn since(this: &PlainDateTime, other: &PlainDateTime, options: &JsValue) -> Duration;
-
- /// Returns a new Temporal.PlainDateTime object which is zonedDateTime rounded to `roundTo` (if
- /// a string parameter is used) or `roundingIncrement` of `smallestUnit` (if an object parameter
- /// is used).
- #[wasm_bindgen(method)]
- pub fn round(this: &PlainDateTime, round_to: &JsValue) -> PlainDateTime;
-
- #[wasm_bindgen(method)]
- pub fn equals(this: &PlainDateTime, other: &PlainDateTime) -> bool;
-
- /// Returns: a plain object with properties expressing zonedDateTime in the ISO 8601 calendar, including
- /// all date/time fields as well as the calendar, timeZone, and offset properties.
- ///
- /// This is an advanced method that's mainly useful if you are implementing a custom calendar. Most
- /// developers will not need to use it.
- #[wasm_bindgen(method, js_name = getISOFields)]
- pub fn get_iso_fields(this: &PlainDateTime) -> JsValue;
-}
-
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type ZonedDateTime;
-
- #[wasm_bindgen(static_method_of = ZonedDateTime, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> ZonedDateTime;
-
- #[wasm_bindgen(static_method_of = ZonedDateTime, js_namespace = Temporal)]
- pub fn compare(one: &ZonedDateTime, two: &ZonedDateTime) -> i32;
-
- #[wasm_bindgen(method, getter, structural)]
- pub fn year(this: &ZonedDateTime) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn month(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn week(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn day(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn hour(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn minute(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn second(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn millisecond(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn microsecond(this: &ZonedDateTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn nanosecond(this: &ZonedDateTime) -> u32;
-
- #[wasm_bindgen(method, getter, structural, js_name = epochSeconds)]
- pub fn epoch_seconds(this: &ZonedDateTime) -> u64;
- #[wasm_bindgen(method, getter, structural, js_name = epochMilliseconds)]
- pub fn epoch_milliseconds(this: &ZonedDateTime) -> u64;
- #[wasm_bindgen(method, getter, structural, js_name = epochMicroseconds)]
- pub fn epoch_microseconds(this: &ZonedDateTime) -> BigInt;
- #[wasm_bindgen(method, getter, structural, js_name = epochNanoseconds)]
- pub fn epoch_nanoseconds(this: &ZonedDateTime) -> BigInt;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural, js_name = eraYear)]
- pub fn era_year(this: &ZonedDateTime) -> JsValue;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural)]
- pub fn era(this: &ZonedDateTime) -> JsValue;
-
- /// The dayOfWeek read-only property gives the weekday number that the date falls
- /// on. For the ISO 8601 calendar, the weekday number is defined as in the ISO 8601
- /// standard: a value between 1 and 7, inclusive, with Monday being 1, and Sunday 7.
- #[wasm_bindgen(method, getter, structural, js_name = dayOfWeek)]
- pub fn day_of_week(this: &ZonedDateTime) -> u32;
-
- /// The dayOfYear read-only property gives the ordinal day of the year that the date
- /// falls on. For the ISO 8601 calendar, this is a value between 1 and 365, or 366 in
- /// a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = dayOfYear)]
- pub fn day_of_year(this: &ZonedDateTime) -> u32;
-
- /// The weekOfYear read-only property gives the ISO week number of the date. For the
- /// ISO 8601 calendar, this is normally a value between 1 and 52, but in a few cases it
- /// can be 53 as well. ISO week 1 is the week containing the first Thursday of the year.
- #[wasm_bindgen(method, getter, structural, js_name = weekOfYear)]
- pub fn week_of_year(this: &ZonedDateTime) -> u32;
-
- /// The daysInWeek read-only property gives the number of days in the week that the
- /// date falls in. For the ISO 8601 calendar, this is always 7, but in other calendar
- /// systems it may differ from week to week.
- #[wasm_bindgen(method, getter, structural, js_name = daysInWeek)]
- pub fn days_in_week(this: &ZonedDateTime) -> u32;
-
- /// The daysInMonth read-only property gives the number of days in the month that the
- /// date falls in. For the ISO 8601 calendar, this is 28, 29, 30, or 31, depending
- /// on the month and whether the year is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInMonth)]
- pub fn days_in_month(this: &ZonedDateTime) -> u32;
-
- /// The daysInYear read-only property gives the number of days in the year that the date
- /// falls in. For the ISO 8601 calendar, this is 365 or 366, depending on whether the year
- /// is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInYear)]
- pub fn days_in_year(this: &ZonedDateTime) -> u32;
-
- /// The monthsInYear read-only property gives the number of months in the year that the date
- /// falls in. For the ISO 8601 calendar, this is always 12, but in other calendar systems
- /// it may differ from year to year.
- #[wasm_bindgen(method, getter, structural, js_name = monthsInWeek)]
- pub fn months_in_year(this: &ZonedDateTime) -> u32;
-
- /// The inLeapYear read-only property tells whether the year that the date falls in is a
- /// leap year or not. Its value is true if the year is a leap year, and false if not.
- #[wasm_bindgen(method, getter, structural, js_name = inLeapYear)]
- pub fn in_leap_year(this: &ZonedDateTime) -> bool;
-
- /// The `hoursInDay` read-only property returns the number of real-world hours
- /// between the start of the current day (usually midnight) in zonedDateTime.timeZone to
- /// the start of the next calendar day in the same time zone. Normally days will be 24 hours
- /// long, but on days where there are DST changes or other time zone transitions, this
- /// property may return 23 or 25. In rare cases, other integers or even non-integer
- /// values may be returned, e.g. when time zone definitions change by less than one hour.
- #[wasm_bindgen(method, getter, structural, js_name = inLeapYear)]
- pub fn hours_in_day(this: &ZonedDateTime) -> u32;
-
- #[wasm_bindgen(method, getter, structural, js_name = startOfDay)]
- pub fn start_of_day(this: &ZonedDateTime) -> ZonedDateTime;
-
- /// The offset read-only property is the offset (formatted as a string) relative
- /// to UTC of the current time zone and exact instant. Examples: '-08:00' or '+05:30'
- #[wasm_bindgen(method, getter, structural)]
- pub fn offset(this: &ZonedDateTime) -> JsString;
-
- /// This method creates a new Temporal.ZonedDateTime which is a copy of zonedDateTime, but any
- /// properties present on parameter override the ones already present on zonedDateTime.
- #[wasm_bindgen(method, js_name = withPlainDate)]
- pub fn with(this: &ZonedDateTime, parameter: &JsValue, options: &JsValue) -> ZonedDateTime;
-
- /// Returns a new `Temporal.ZonedDateTime` object which replaces the calendar date of zonedDateTime
- /// with the calendar date represented by plainDate.
- #[wasm_bindgen(method, js_name = withPlainDate)]
- pub fn with_plain_date(this: &ZonedDateTime, date: &PlainDate) -> ZonedDateTime;
-
- /// Returns a new `Temporal.ZonedDateTime` object which is the date indicated by date, projected
- /// into calendar.
- #[wasm_bindgen(method, js_name = withCalendar)]
- pub fn with_calendar(this: &ZonedDateTime, calendar: &str) -> ZonedDateTime;
-
- /// This method adds duration to zonedDateTime.
- #[wasm_bindgen(method)]
- pub fn add(this: &ZonedDateTime, duration: &Duration, options: &JsValue) -> ZonedDateTime;
-
- /// This method subtracts duration to zonedDateTime.
- #[wasm_bindgen(method)]
- pub fn subtract(this: &ZonedDateTime, duration: &Duration, options: &JsValue) -> ZonedDateTime;
-
- /// This method computes the difference between the two times represented by zonedDateTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is earlier
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn until(this: &ZonedDateTime, other: &ZonedDateTime, options: &JsValue) -> Duration;
-
- /// This method computes the difference between the two times represented by zonedDateTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is later
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn since(this: &ZonedDateTime, other: &ZonedDateTime, options: &JsValue) -> Duration;
-
- /// Returns a new Temporal.ZonedDateTime object which is zonedDateTime rounded to `roundTo` (if
- /// a string parameter is used) or `roundingIncrement` of `smallestUnit` (if an object parameter
- /// is used).
- #[wasm_bindgen(method)]
- pub fn round(this: &ZonedDateTime, round_to: &JsValue) -> ZonedDateTime;
-
- #[wasm_bindgen(method)]
- pub fn equals(this: &ZonedDateTime, other: &ZonedDateTime) -> bool;
-
- /// Returns: a plain object with properties expressing zonedDateTime in the ISO 8601 calendar, including
- /// all date/time fields as well as the calendar, timeZone, and offset properties.
- ///
- /// This is an advanced method that's mainly useful if you are implementing a custom calendar. Most
- /// developers will not need to use it.
- #[wasm_bindgen(method, js_name = getISOFields)]
- pub fn get_iso_fields(this: &ZonedDateTime) -> JsValue;
-}
-
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type Duration;
-
- #[wasm_bindgen(static_method_of = Duration, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> Duration;
-
- #[wasm_bindgen(static_method_of = Duration, js_namespace = Temporal)]
- pub fn compare(one: &Duration, two: &Duration) -> i32;
-
- #[wasm_bindgen(method, getter, structural)]
- pub fn years(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn months(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn weeks(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn days(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn hours(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn minutes(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn seconds(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn milliseconds(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn microseconds(this: &Duration) -> i32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn nanoseconds(this: &Duration) -> i32;
-
- /// The read-only `sign` property has the value –1, 0, or 1, depending on whether
- /// the duration is negative, zero, or positive.
- #[wasm_bindgen(method, getter, structural)]
- pub fn sign(this: &Duration) -> i32;
-
- /// The read-only `blank` property is a convenience property that tells whether duration
- /// represents a zero length of time. In other words, `duration.blank === (duration.sign === 0)`.
- #[wasm_bindgen(method, getter, structural)]
- pub fn blank(this: &Duration) -> bool;
-
- /// In order to be valid, the resulting duration must not have fields with mixed signs, and
- /// so the result is balanced. For usage examples and a more complete explanation of how
- /// balancing works and why it is necessary, see [Duration balancing].
- ///
- /// [Duration balancing]: https://tc39.es/proposal-temporal/docs/balancing.html
- #[wasm_bindgen(method)]
- pub fn add(this: &Duration, other: &Duration, options: &JsValue) -> Duration;
-
- /// In order to be valid, the resulting duration must not have fields with mixed signs, and
- /// so the result is balanced. For usage examples and a more complete explanation of how
- /// balancing works and why it is necessary, see [Duration balancing].
- ///
- /// [Duration balancing]: https://tc39.es/proposal-temporal/docs/balancing.html
- #[wasm_bindgen(method)]
- pub fn subtract(this: &Duration, other: &Duration, options: &JsValue) -> Duration;
-
- /// This method gives the absolute value of duration. It returns a newly constructed
- /// `Temporal.Duration` with all the fields having the same magnitude as those of
- /// duration, but positive. If duration is already positive or zero, then the returned
- /// object is a copy of duration.
- #[wasm_bindgen(method)]
- pub fn abs(this: &Duration) -> Duration;
-
- /// Rounds and/or balances duration to the given largest and smallest units and rounding
- /// increment, and returns the result as a new `Temporal.Duration` object.
- #[wasm_bindgen(method)]
- pub fn round(this: &Duration, round_to: &JsValue) -> Duration;
-
- /// Calculates the number of units of time that can fit in a particular `Temporal.Duration`.
- /// If the duration IS NOT evenly divisible by the desired unit, then a fractional remainder
- /// will be present in the result. If the duration IS evenly divisible by the desired
- /// unit, then the integer result will be identical
- /// to `duration.round({ smallestUnit: unit, largestUnit: unit, relativeTo })[unit]`
- #[wasm_bindgen(method)]
- pub fn total(this: &Duration, total_of: &JsValue) -> f64;
-
- /// This method overrides `Object.prototype.toString()` and provides the ISO 8601
- /// description of the duration.
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Duration, options: &JsValue) -> JsString;
-
- /// This method is the same as duration.toString(). It is usually not called directly, but
- /// it can be called automatically by JSON.stringify().
- #[wasm_bindgen(method, js_name = toJson)]
- pub fn to_json(this: &Duration) -> JsString;
-
- /// This method overrides `Object.prototype.toLocaleString()` to provide a human-readable,
- /// language-sensitive representation of duration.
- ///
- /// The locales and options arguments are the same as in the constructor to Intl.DurationFormat.
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &Duration, locales: &JsValue, options: &JsValue) -> JsString;
-
-}
-
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type PlainTime;
-
- #[wasm_bindgen(static_method_of = PlainTime, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> PlainTime;
-
- #[wasm_bindgen(static_method_of = PlainTime, js_namespace = Temporal)]
- pub fn compare(one: &PlainTime, two: &PlainTime) -> i32;
-
- #[wasm_bindgen(method, getter, structural)]
- pub fn hour(this: &PlainTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn minute(this: &PlainTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn second(this: &PlainTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn millisecond(this: &PlainTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn microsecond(this: &PlainTime) -> u32;
- #[wasm_bindgen(method, getter, structural)]
- pub fn nanosecond(this: &PlainTime) -> u32;
-
- /// This method adds duration to PlainTime.
- #[wasm_bindgen(method)]
- pub fn add(this: &PlainTime, duration: &Duration, options: &JsValue) -> PlainTime;
-
- /// This method subtracts duration to PlainTime.
- #[wasm_bindgen(method)]
- pub fn subtract(this: &PlainTime, duration: &Duration, options: &JsValue) -> PlainTime;
-
- /// This method computes the difference between the two times represented by PlainTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is earlier
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn until(this: &PlainTime, other: &PlainTime, options: &JsValue) -> Duration;
-
- /// This method computes the difference between the two times represented by PlainTime and
- /// other, optionally rounds it, and returns it as a Temporal.Duration object. If other is later
- /// than zonedDateTime then the resulting duration will be negative. The returned Temporal.Duration, when
- /// added to zonedDateTime with the same options, will yield other.
- #[wasm_bindgen(method)]
- pub fn since(this: &PlainTime, other: &PlainTime, options: &JsValue) -> Duration;
-
- /// Returns a new Temporal.ZonedDateTime object which is PlainTime rounded to `roundTo` (if
- /// a string parameter is used) or `roundingIncrement` of `smallestUnit` (if an object parameter
- /// is used).
- #[wasm_bindgen(method)]
- pub fn round(this: &PlainTime, round_to: &JsValue) -> PlainTime;
-
- #[wasm_bindgen(method)]
- pub fn equals(this: &PlainTime, other: &PlainTime) -> bool;
-
- /// This method overrides `Object.prototype.toLocaleString()` to provide a human-readable,
- /// language-sensitive representation of duration.
- ///
- /// The locales and options arguments are the same as in the constructor to Intl.DateTimeFormat.
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &PlainTime, locales: &JsValue, options: &JsValue) -> JsString;
-
- /// Returns: a plain object with properties expressing PlainTime in the ISO 8601 calendar, including
- /// all date/time fields as well as the calendar, timeZone, and offset properties.
- ///
- /// This is an advanced method that's mainly useful if you are implementing a custom calendar. Most
- /// developers will not need to use it.
- #[wasm_bindgen(method, js_name = getISOFields)]
- pub fn get_iso_fields(this: &PlainTime) -> JsValue;
-
-}
-
-#[wasm_bindgen]
-extern "C" {
- /// A Temporal.PlainYearMonth represents a particular month on the calendar. For example, it
- /// could be used to represent a particular instance of a monthly recurring event, like "the
- /// June 2019 meeting".
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type PlainYearMonth;
-
- #[wasm_bindgen(static_method_of = PlainYearMonth, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> PlainYearMonth;
-
- #[wasm_bindgen(static_method_of = PlainYearMonth, js_namespace = Temporal)]
- pub fn compare(one: &PlainYearMonth, two: &PlainYearMonth) -> i32;
-
- /// `year` is a signed integer representing the number of years relative to a
- /// calendar-specific epoch. For calendars that use eras, the anchor is usually
- /// aligned with the latest era so that eraYear === year for all dates in that
- /// era. However, some calendars like Japanese may use a different anchor.
- #[wasm_bindgen(method, getter, structural)]
- pub fn year(this: &PlainYearMonth) -> i32;
-
- /// `month` is a positive integer representing the ordinal index of the month in
- /// the current year. For calendars like Hebrew or Chinese that use leap
- /// months, the same-named month may have a different month value depending on
- /// the year. The first month in every year has month equal to 1. The last month
- /// of every year has month equal to the monthsInYear property. month values
- /// start at 1, which is different from legacy Date where months are represented
- /// by zero-based indices (0 to 11).
- #[wasm_bindgen(method, getter, structural)]
- pub fn month(this: &PlainYearMonth) -> u32;
-
- /// `monthCode` is a calendar-specific string that identifies the month in
- /// a year-independent way. For common (non-leap) months, monthCode should
- /// be `M${month}`, where month is zero padded up to two digits. For uncommon
- /// (leap) months in lunisolar calendars like Hebrew or Chinese, the month code
- /// is the previous month's code with with an "L" suffix appended.
- /// Examples:
- /// * 'M02' => February;
- /// * 'M08L' => repeated 8th month in the Chinese calendar;
- /// * 'M05L' => Adar I in the Hebrew calendar.
- #[wasm_bindgen(method, getter, structural, js_name = monthCode)]
- pub fn month_code(this: &PlainYearMonth) -> JsString;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural, js_name = eraYear)]
- pub fn era_year(this: &PlainYearMonth) -> JsValue;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural)]
- pub fn era(this: &PlainYearMonth) -> JsValue;
-
- /// The daysInMonth read-only property gives the number of days in the month that the
- /// date falls in. For the ISO 8601 calendar, this is 28, 29, 30, or 31, depending
- /// on the month and whether the year is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInMonth)]
- pub fn days_in_month(this: &PlainYearMonth) -> u32;
-
- /// The daysInYear read-only property gives the number of days in the year that the date
- /// falls in. For the ISO 8601 calendar, this is 365 or 366, depending on whether the year
- /// is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInYear)]
- pub fn days_in_year(this: &PlainYearMonth) -> u32;
-
- /// The monthsInYear read-only property gives the number of months in the year that the date
- /// falls in. For the ISO 8601 calendar, this is always 12, but in other calendar systems
- /// it may differ from year to year.
- #[wasm_bindgen(method, getter, structural, js_name = monthsInWeek)]
- pub fn months_in_year(this: &PlainYearMonth) -> u32;
-
- /// The inLeapYear read-only property tells whether the year that the date falls in is a
- /// leap year or not. Its value is true if the year is a leap year, and false if not.
- #[wasm_bindgen(method, getter, structural, js_name = inLeapYear)]
- pub fn in_leap_year(this: &PlainYearMonth) -> bool;
-
- /// **Parameters:**
- ///
- ///- `duration` (`Temporal.Duration` or value convertible to one): The duration to add.
- ///- `options` (optional object): An object with properties representing options for the addition.
- ///The following options are recognized:
- ///- `overflow` (optional string): How to deal with additions that result in out-of-range values.
- /// Allowed values are `constrain` and `reject`.
- /// The default is `constrain`.
- ///
- ///**Returns:** a new `Temporal.PlainYearMonth` object which is the date indicated by `date` plus `duration`.
- ///
- ///This method adds `duration` to `date`, returning a date that is in the future relative to `date`.
- ///
- ///The `duration` argument is an object with properties denoting a duration, such as `{ days: 5 }`, or a string such as `P5D`, or a `Temporal.Duration` object.
- ///If `duration` is not a `Temporal.Duration` object, then it will be converted to one as if it were passed to `Temporal.Duration.from()`.
- ///
- ///Some additions may be ambiguous, because months have different lengths.
- ///For example, adding one month to August 31 would result in September 31, which doesn't exist.
- ///For these cases, the `overflow` option tells what to do:
- ///
- ///- In `constrain` mode (the default), out-of-range values are clamped to the nearest in-range value.
- ///- In `reject` mode, an addition that would result in an out-of-range value fails, and a `RangeError` is thrown.
- ///
- ///Additionally, if the result is earlier or later than the range of dates that `Temporal.PlainYearMonth` can represent (approximately half a million years centered on the [Unix epoch](https://en.wikipedia.org/wiki/Unix_time)), then this method will throw a `RangeError` regardless of `overflow`.
- ///
- ///Adding a negative duration is equivalent to subtracting the absolute value of that duration.
- #[wasm_bindgen(method)]
- pub fn add(this: &PlainYearMonth, duration: &Duration, options: &JsValue) -> PlainYearMonth;
-
- /// **Parameters:**
- ///- `duration` (`Temporal.Duration` or value convertible to one): The duration to subtract.
- ///- `options` (optional object): An object with properties representing options for the subtraction.
- ///The following options are recognized:
- ///- `overflow` (string): How to deal with subtractions that result in out-of-range values.
- /// Allowed values are `constrain` and `reject`.
- /// The default is `constrain`.
- ///
- ///**Returns:** a new `Temporal.PlainYearMonth` object which is the date indicated by `date` minus `duration`.
- ///
- ///This method subtracts `duration` from `date`, returning a date that is in the past relative to `date`.
- ///
- ///The `duration` argument is an object with properties denoting a duration, such as `{ days: 5 }`, or a string such as `P5D`, or a `Temporal.Duration` object.
- ///If `duration` is not a `Temporal.Duration` object, then it will be converted to one as if it were passed to `Temporal.Duration.from()`.
- ///
- ///Some subtractions may be ambiguous, because months have different lengths.
- ///For example, subtracting one month from July 31 would result in June 31, which doesn't exist.
- ///For these cases, the `overflow` option tells what to do:
- ///
- ///- In `constrain` mode (the default), out-of-range values are clamped to the nearest in-range value.
- ///- In `reject` mode, an addition that would result in an out-of-range value fails, and a `RangeError` is thrown.
- ///
- ///Additionally, if the result is earlier or later than the range of dates that `Temporal.PlainDate` can represent (approximately half a million years centered on the [Unix epoch](https://en.wikipedia.org/wiki/Unix_time)), then this method will throw a `RangeError` regardless of `overflow`.
- ///
- ///Subtracting a negative duration is equivalent to adding the absolute value of that duration.
- ///
- #[wasm_bindgen(method)]
- pub fn subtract(
- this: &PlainYearMonth,
- duration: &Duration,
- options: &JsValue,
- ) -> PlainYearMonth;
-
- /// This function exists because it's not possible to compare using date == other
- /// or date === other, due to ambiguity in the primitive representation and between
- /// Temporal types.
- ///
- /// If you don't need to know the order in which the two dates occur, then this function
- /// may be less typing and more efficient than Temporal.PlainDate.compare.
- #[wasm_bindgen(method)]
- pub fn equals(this: &PlainYearMonth, other: &PlainYearMonth) -> bool;
-
- /// This method overrides the Object.prototype.toString() method and provides a convenient, unambiguous
- /// string representation of date. The string can be passed to Temporal.PlainYearMonth.from() to
- /// create a new Temporal.PlainDate object.
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &PlainYearMonth) -> JsString;
-
- /// This method overrides `Object.prototype.toLocaleString()` to provide a human-readable,
- /// language-sensitive representation of duration.
- ///
- /// The locales and options arguments are the same as in the constructor to Intl.DateTimeFormat.
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(
- this: &PlainYearMonth,
- locales: &JsValue,
- options: &JsValue,
- ) -> JsString;
-
- /// Returns: a plain object with properties expressing date in the ISO 8601
- /// calendar, as well as the value of date.calendar.
- ///
- /// This method is mainly useful if you are implementing a custom calendar. Most
- /// code will not need to use it.
- #[wasm_bindgen(method, js_name = getISOFields)]
- pub fn get_iso_fields(this: &PlainYearMonth) -> JsValue;
-
-}
-
-#[wasm_bindgen]
-extern "C" {
- /// A date without a year component. This is useful to express
- /// things like "Bastille Day is on the 14th of July".
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type PlainMonthDay;
-
- #[wasm_bindgen(static_method_of = PlainMonthDay, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> PlainMonthDay;
-
- #[wasm_bindgen(static_method_of = PlainMonthDay, js_namespace = Temporal)]
- pub fn compare(one: &PlainMonthDay, two: &PlainMonthDay) -> i32;
-
- /// `monthCode` is a calendar-specific string that identifies the month in
- /// a year-independent way. For common (non-leap) months, monthCode should
- /// be `M${month}`, where month is zero padded up to two digits. For uncommon
- /// (leap) months in lunisolar calendars like Hebrew or Chinese, the month code
- /// is the previous month's code with with an "L" suffix appended.
- /// Examples:
- /// * 'M02' => February;
- /// * 'M08L' => repeated 8th month in the Chinese calendar;
- /// * 'M05L' => Adar I in the Hebrew calendar.
- ///
- /// Note that this type has no month property, because month is ambiguous for some
- /// calendars without knowing the year. Instead, the monthCode property is used which
- /// is year-independent in all calendars.
- #[wasm_bindgen(method, getter, structural, js_name = monthCode)]
- pub fn month_code(this: &PlainMonthDay) -> JsString;
-
- /// day is a positive integer representing the day of the month.
- #[wasm_bindgen(method, getter, structural)]
- pub fn day(this: &PlainMonthDay) -> u32;
-
- /// This function exists because it's not possible to compare using date == other
- /// or date === other, due to ambiguity in the primitive representation and between
- /// Temporal types.
- ///
- /// If you don't need to know the order in which the two dates occur, then this function
- /// may be less typing and more efficient than Temporal.PlainMonthDay.compare.
- ///
- /// Note that this function will return false if the two objects have different calendar
- /// properties, even if the actual dates are equal.
- #[wasm_bindgen(method)]
- pub fn equals(this: &PlainMonthDay, other: &PlainMonthDay) -> bool;
-
- /// This method overrides the Object.prototype.toString() method and provides a convenient, unambiguous
- /// string representation of date. The string can be passed to Temporal.PlainMonthDay.from() to
- /// create a new Temporal.PlainMonthDay object.
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &PlainMonthDay) -> JsString;
-
- /// This method overrides `Object.prototype.toLocaleString()` to provide a human-readable,
- /// language-sensitive representation of duration.
- ///
- /// The locales and options arguments are the same as in the constructor to Intl.DateTimeFormat.
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &PlainMonthDay, locales: &JsValue, options: &JsValue)
- -> JsString;
-
- /// Returns: a plain object with properties expressing date in the ISO 8601
- /// calendar, as well as the value of date.calendar.
- ///
- /// This method is mainly useful if you are implementing a custom calendar. Most
- /// code will not need to use it.
- #[wasm_bindgen(method, js_name = getISOFields)]
- pub fn get_iso_fields(this: &PlainMonthDay) -> JsValue;
-
-}
-
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_namespace = Temporal, extends = Object)]
- #[derive(Clone, Debug)]
- pub type PlainDate;
-
- #[wasm_bindgen(js_namespace = Temporal, constructor)]
- pub fn new(year: i32, month: u32, day: u32) -> PlainDate;
-
- #[wasm_bindgen(static_method_of = PlainDate, js_namespace = Temporal)]
- pub fn from(val: &JsValue) -> PlainDate;
-
- #[wasm_bindgen(static_method_of = PlainDate, js_namespace = Temporal)]
- pub fn compare(one: &PlainDate, two: &PlainDate) -> i32;
-
- /// `year` is a signed integer representing the number of years relative to a
- /// calendar-specific epoch. For calendars that use eras, the anchor is usually
- /// aligned with the latest era so that eraYear === year for all dates in that
- /// era. However, some calendars like Japanese may use a different anchor.
- #[wasm_bindgen(method, getter, structural)]
- pub fn year(this: &PlainDate) -> i32;
-
- /// `month` is a positive integer representing the ordinal index of the month in
- /// the current year. For calendars like Hebrew or Chinese that use leap
- /// months, the same-named month may have a different month value depending on
- /// the year. The first month in every year has month equal to 1. The last month
- /// of every year has month equal to the monthsInYear property. month values
- /// start at 1, which is different from legacy Date where months are represented
- /// by zero-based indices (0 to 11).
- #[wasm_bindgen(method, getter, structural)]
- pub fn month(this: &PlainDate) -> u32;
-
- /// `monthCode` is a calendar-specific string that identifies the month in
- /// a year-independent way. For common (non-leap) months, monthCode should
- /// be `M${month}`, where month is zero padded up to two digits. For uncommon
- /// (leap) months in lunisolar calendars like Hebrew or Chinese, the month code
- /// is the previous month's code with with an "L" suffix appended.
- /// Examples:
- /// * 'M02' => February;
- /// * 'M08L' => repeated 8th month in the Chinese calendar;
- /// * 'M05L' => Adar I in the Hebrew calendar.
- #[wasm_bindgen(method, getter, structural, js_name = monthCode)]
- pub fn month_code(this: &PlainDate) -> JsString;
-
- /// day is a positive integer representing the day of the month.
- #[wasm_bindgen(method, getter, structural)]
- pub fn day(this: &PlainDate) -> u32;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural, js_name = eraYear)]
- pub fn era_year(this: &PlainDate) -> JsValue;
-
- /// In calendars that use eras, the era and eraYear read-only properties can be used
- /// together to resolve an era-relative year. Both properties are undefined when using
- /// the ISO 8601 calendar. As inputs to from or with, era and eraYear can be used instead
- /// of year. Unlike year, eraYear may decrease as time proceeds because some
- /// eras (like the BCE era in the Gregorian calendar) count years backwards.
- #[wasm_bindgen(method, getter, structural)]
- pub fn era(this: &PlainDate) -> JsValue;
-
- /// The dayOfWeek read-only property gives the weekday number that the date falls
- /// on. For the ISO 8601 calendar, the weekday number is defined as in the ISO 8601
- /// standard: a value between 1 and 7, inclusive, with Monday being 1, and Sunday 7.
- #[wasm_bindgen(method, getter, structural, js_name = dayOfWeek)]
- pub fn day_of_week(this: &PlainDate) -> u32;
-
- /// The dayOfYear read-only property gives the ordinal day of the year that the date
- /// falls on. For the ISO 8601 calendar, this is a value between 1 and 365, or 366 in
- /// a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = dayOfYear)]
- pub fn day_of_year(this: &PlainDate) -> u32;
-
- /// The weekOfYear read-only property gives the ISO week number of the date. For the
- /// ISO 8601 calendar, this is normally a value between 1 and 52, but in a few cases it
- /// can be 53 as well. ISO week 1 is the week containing the first Thursday of the year.
- #[wasm_bindgen(method, getter, structural, js_name = weekOfYear)]
- pub fn week_of_year(this: &PlainDate) -> u32;
-
- /// The daysInWeek read-only property gives the number of days in the week that the
- /// date falls in. For the ISO 8601 calendar, this is always 7, but in other calendar
- /// systems it may differ from week to week.
- #[wasm_bindgen(method, getter, structural, js_name = daysInWeek)]
- pub fn days_in_week(this: &PlainDate) -> u32;
-
- /// The daysInMonth read-only property gives the number of days in the month that the
- /// date falls in. For the ISO 8601 calendar, this is 28, 29, 30, or 31, depending
- /// on the month and whether the year is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInMonth)]
- pub fn days_in_month(this: &PlainDate) -> u32;
-
- /// The daysInYear read-only property gives the number of days in the year that the date
- /// falls in. For the ISO 8601 calendar, this is 365 or 366, depending on whether the year
- /// is a leap year.
- #[wasm_bindgen(method, getter, structural, js_name = daysInYear)]
- pub fn days_in_year(this: &PlainDate) -> u32;
-
- /// The monthsInYear read-only property gives the number of months in the year that the date
- /// falls in. For the ISO 8601 calendar, this is always 12, but in other calendar systems
- /// it may differ from year to year.
- #[wasm_bindgen(method, getter, structural, js_name = monthsInWeek)]
- pub fn months_in_year(this: &PlainDate) -> u32;
-
- /// The inLeapYear read-only property tells whether the year that the date falls in is a
- /// leap year or not. Its value is true if the year is a leap year, and false if not.
- #[wasm_bindgen(method, getter, structural, js_name = inLeapYear)]
- pub fn in_leap_year(this: &PlainDate) -> bool;
-
- /// Returns a new `Temporal.PlainDate` object which is the date indicated by date, projected
- /// into calendar.
- #[wasm_bindgen(method, js_name = withCalendar)]
- pub fn with_calendar(this: &PlainDate, calendar: &str) -> PlainDate;
-
- /// **Parameters:**
- ///
- ///- `duration` (`Temporal.Duration` or value convertible to one): The duration to add.
- ///- `options` (optional object): An object with properties representing options for the addition.
- ///The following options are recognized:
- ///- `overflow` (optional string): How to deal with additions that result in out-of-range values.
- /// Allowed values are `constrain` and `reject`.
- /// The default is `constrain`.
- ///
- ///**Returns:** a new `Temporal.PlainDate` object which is the date indicated by `date` plus `duration`.
- ///
- ///This method adds `duration` to `date`, returning a date that is in the future relative to `date`.
- ///
- ///The `duration` argument is an object with properties denoting a duration, such as `{ days: 5 }`, or a string such as `P5D`, or a `Temporal.Duration` object.
- ///If `duration` is not a `Temporal.Duration` object, then it will be converted to one as if it were passed to `Temporal.Duration.from()`.
- ///
- ///Some additions may be ambiguous, because months have different lengths.
- ///For example, adding one month to August 31 would result in September 31, which doesn't exist.
- ///For these cases, the `overflow` option tells what to do:
- ///
- ///- In `constrain` mode (the default), out-of-range values are clamped to the nearest in-range value.
- ///- In `reject` mode, an addition that would result in an out-of-range value fails, and a `RangeError` is thrown.
- ///
- ///Additionally, if the result is earlier or later than the range of dates that `Temporal.PlainDate` can represent (approximately half a million years centered on the [Unix epoch](https://en.wikipedia.org/wiki/Unix_time)), then this method will throw a `RangeError` regardless of `overflow`.
- ///
- ///Adding a negative duration is equivalent to subtracting the absolute value of that duration.
- #[wasm_bindgen(method)]
- pub fn add(this: &PlainDate, duration: &Duration, options: &JsValue) -> PlainDate;
-
- /// **Parameters:**
- ///- `duration` (`Temporal.Duration` or value convertible to one): The duration to subtract.
- ///- `options` (optional object): An object with properties representing options for the subtraction.
- ///The following options are recognized:
- ///- `overflow` (string): How to deal with subtractions that result in out-of-range values.
- /// Allowed values are `constrain` and `reject`.
- /// The default is `constrain`.
- ///
- ///**Returns:** a new `Temporal.PlainDate` object which is the date indicated by `date` minus `duration`.
- ///
- ///This method subtracts `duration` from `date`, returning a date that is in the past relative to `date`.
- ///
- ///The `duration` argument is an object with properties denoting a duration, such as `{ days: 5 }`, or a string such as `P5D`, or a `Temporal.Duration` object.
- ///If `duration` is not a `Temporal.Duration` object, then it will be converted to one as if it were passed to `Temporal.Duration.from()`.
- ///
- ///Some subtractions may be ambiguous, because months have different lengths.
- ///For example, subtracting one month from July 31 would result in June 31, which doesn't exist.
- ///For these cases, the `overflow` option tells what to do:
- ///
- ///- In `constrain` mode (the default), out-of-range values are clamped to the nearest in-range value.
- ///- In `reject` mode, an addition that would result in an out-of-range value fails, and a `RangeError` is thrown.
- ///
- ///Additionally, if the result is earlier or later than the range of dates that `Temporal.PlainDate` can represent (approximately half a million years centered on the [Unix epoch](https://en.wikipedia.org/wiki/Unix_time)), then this method will throw a `RangeError` regardless of `overflow`.
- ///
- ///Subtracting a negative duration is equivalent to adding the absolute value of that duration.
- ///
- #[wasm_bindgen(method)]
- pub fn subtract(this: &PlainDate, duration: &Duration, options: &JsValue) -> PlainDate;
-
- /// This function exists because it's not possible to compare using date == other
- /// or date === other, due to ambiguity in the primitive representation and between
- /// Temporal types.
- ///
- /// If you don't need to know the order in which the two dates occur, then this function
- /// may be less typing and more efficient than Temporal.PlainDate.compare.
- ///
- /// Note that this function will return false if the two objects have different calendar
- /// properties, even if the actual dates are equal.
- #[wasm_bindgen(method)]
- pub fn equals(this: &PlainDate, other: &PlainDate) -> bool;
-
- /// This method overrides the Object.prototype.toString() method and provides a convenient, unambiguous
- /// string representation of date. The string can be passed to Temporal.PlainDate.from() to
- /// create a new Temporal.PlainDate object.
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &PlainDate) -> JsString;
-
- /// This method overrides `Object.prototype.toLocaleString()` to provide a human-readable,
- /// language-sensitive representation of duration.
- ///
- /// The locales and options arguments are the same as in the constructor to Intl.DateTimeFormat.
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &PlainDate, locales: &JsValue, options: &JsValue) -> JsString;
-
- /// Returns: a plain object with properties expressing date in the ISO 8601
- /// calendar, as well as the value of date.calendar.
- ///
- /// This method is mainly useful if you are implementing a custom calendar. Most
- /// code will not need to use it.
- #[wasm_bindgen(method, js_name = getISOFields)]
- pub fn get_iso_fields(this: &PlainDate) -> JsValue;
-
-}
-
-pub mod Now {
- use super::*;
-
- #[wasm_bindgen]
- extern "C" {
- #[wasm_bindgen(js_namespace = ["Temporal", "Now"])]
- pub fn instant() -> Instant;
-
- #[wasm_bindgen(js_namespace = ["Temporal", "Now"], js_name = zonedDateTime)]
- pub fn zoned_date_time(calendar: &str) -> ZonedDateTime;
-
- #[wasm_bindgen(js_namespace = ["Temporal", "Now"], js_name = zonedDateTimeISO)]
- pub fn zoned_date_time_iso() -> ZonedDateTime;
-
- #[wasm_bindgen(js_namespace = ["Temporal", "Now"], js_name = plainDate)]
- pub fn plain_date(calendar: &str) -> PlainDate;
-
- #[wasm_bindgen(js_namespace = ["Temporal", "Now"], js_name = plainDateISO)]
- pub fn plain_date_iso() -> PlainDate;
-
- #[wasm_bindgen(js_namespace = ["Temporal", "Now"], js_name = plainTimeISO)]
- pub fn plain_time_iso() -> PlainTime;
-
- }
-}
diff --git a/vendor/js-sys/src/lib.rs b/vendor/js-sys/src/lib.rs
deleted file mode 100644
index ac1d51bf..00000000
--- a/vendor/js-sys/src/lib.rs
+++ /dev/null
@@ -1,6439 +0,0 @@
-//! Bindings to JavaScript's standard, built-in objects, including their methods
-//! and properties.
-//!
-//! This does *not* include any Web, Node, or any other JS environment
-//! APIs. Only the things that are guaranteed to exist in the global scope by
-//! the ECMAScript standard.
-//!
-//! <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects>
-//!
-//! ## A Note About `camelCase`, `snake_case`, and Naming Conventions
-//!
-//! JavaScript's global objects use `camelCase` naming conventions for functions
-//! and methods, but Rust style is to use `snake_case`. These bindings expose
-//! the Rust style `snake_case` name. Additionally, acronyms within a method
-//! name are all lower case, where as in JavaScript they are all upper case. For
-//! example, `decodeURI` in JavaScript is exposed as `decode_uri` in these
-//! bindings.
-
-#![doc(html_root_url = "https://docs.rs/js-sys/0.2")]
-#![cfg_attr(not(feature = "std"), no_std)]
-#![cfg_attr(target_feature = "atomics", feature(thread_local))]
-
-extern crate alloc;
-
-use alloc::string::String;
-use alloc::vec::Vec;
-use core::cmp::Ordering;
-use core::convert::{self, Infallible, TryFrom};
-use core::f64;
-use core::fmt;
-use core::iter::{self, Product, Sum};
-use core::mem::{self, MaybeUninit};
-use core::ops::{Add, BitAnd, BitOr, BitXor, Div, Mul, Neg, Not, Rem, Shl, Shr, Sub};
-use core::str;
-use core::str::FromStr;
-
-pub use wasm_bindgen;
-use wasm_bindgen::prelude::*;
-
-// When adding new imports:
-//
-// * Keep imports in alphabetical order.
-//
-// * Rename imports with `js_name = ...` according to the note about `camelCase`
-// and `snake_case` in the module's documentation above.
-//
-// * Include the one sentence summary of the import from the MDN link in the
-// module's documentation above, and the MDN link itself.
-//
-// * If a function or method can throw an exception, make it catchable by adding
-// `#[wasm_bindgen(catch)]`.
-//
-// * Add a new `#[test]` into the appropriate file in the
-// `crates/js-sys/tests/wasm/` directory. If the imported function or method
-// can throw an exception, make sure to also add test coverage for that case.
-//
-// * Arguments that are `JsValue`s or imported JavaScript types should be taken
-// by reference.
-
-macro_rules! forward_deref_unop {
- (impl $imp:ident, $method:ident for $t:ty) => {
- impl $imp for $t {
- type Output = <&'static $t as $imp>::Output;
-
- #[inline]
- fn $method(self) -> Self::Output {
- $imp::$method(&self)
- }
- }
- };
-}
-
-macro_rules! forward_deref_binop {
- (impl $imp:ident, $method:ident for $t:ty) => {
- impl<'a> $imp<$t> for &'a $t {
- type Output = <&'static $t as $imp<&'static $t>>::Output;
-
- #[inline]
- fn $method(self, other: $t) -> Self::Output {
- $imp::$method(self, &other)
- }
- }
-
- impl $imp<&$t> for $t {
- type Output = <&'static $t as $imp<&'static $t>>::Output;
-
- #[inline]
- fn $method(self, other: &$t) -> Self::Output {
- $imp::$method(&self, other)
- }
- }
-
- impl $imp<$t> for $t {
- type Output = <&'static $t as $imp<&'static $t>>::Output;
-
- #[inline]
- fn $method(self, other: $t) -> Self::Output {
- $imp::$method(&self, &other)
- }
- }
- };
-}
-
-macro_rules! forward_js_unop {
- (impl $imp:ident, $method:ident for $t:ty) => {
- impl $imp for &$t {
- type Output = $t;
-
- #[inline]
- fn $method(self) -> Self::Output {
- $imp::$method(JsValue::as_ref(self)).unchecked_into()
- }
- }
-
- forward_deref_unop!(impl $imp, $method for $t);
- };
-}
-
-macro_rules! forward_js_binop {
- (impl $imp:ident, $method:ident for $t:ty) => {
- impl $imp<&$t> for &$t {
- type Output = $t;
-
- #[inline]
- fn $method(self, other: &$t) -> Self::Output {
- $imp::$method(JsValue::as_ref(self), JsValue::as_ref(other)).unchecked_into()
- }
- }
-
- forward_deref_binop!(impl $imp, $method for $t);
- };
-}
-
-macro_rules! sum_product {
- ($($a:ident)*) => ($(
- impl Sum for $a {
- #[inline]
- fn sum<I: iter::Iterator<Item=Self>>(iter: I) -> Self {
- iter.fold(
- $a::from(0),
- |a, b| a + b,
- )
- }
- }
-
- impl Product for $a {
- #[inline]
- fn product<I: iter::Iterator<Item=Self>>(iter: I) -> Self {
- iter.fold(
- $a::from(1),
- |a, b| a * b,
- )
- }
- }
-
- impl<'a> Sum<&'a $a> for $a {
- fn sum<I: iter::Iterator<Item=&'a Self>>(iter: I) -> Self {
- iter.fold(
- $a::from(0),
- |a, b| a + b,
- )
- }
- }
-
- impl<'a> Product<&'a $a> for $a {
- #[inline]
- fn product<I: iter::Iterator<Item=&'a Self>>(iter: I) -> Self {
- iter.fold(
- $a::from(1),
- |a, b| a * b,
- )
- }
- }
- )*)
-}
-
-macro_rules! partialord_ord {
- ($t:ident) => {
- impl PartialOrd for $t {
- #[inline]
- fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- Some(self.cmp(other))
- }
-
- #[inline]
- fn lt(&self, other: &Self) -> bool {
- JsValue::as_ref(self).lt(JsValue::as_ref(other))
- }
-
- #[inline]
- fn le(&self, other: &Self) -> bool {
- JsValue::as_ref(self).le(JsValue::as_ref(other))
- }
-
- #[inline]
- fn ge(&self, other: &Self) -> bool {
- JsValue::as_ref(self).ge(JsValue::as_ref(other))
- }
-
- #[inline]
- fn gt(&self, other: &Self) -> bool {
- JsValue::as_ref(self).gt(JsValue::as_ref(other))
- }
- }
-
- impl Ord for $t {
- #[inline]
- fn cmp(&self, other: &Self) -> Ordering {
- if self == other {
- Ordering::Equal
- } else if self.lt(other) {
- Ordering::Less
- } else {
- Ordering::Greater
- }
- }
- }
- };
-}
-
-#[wasm_bindgen]
-extern "C" {
- /// The `decodeURI()` function decodes a Uniform Resource Identifier (URI)
- /// previously created by `encodeURI` or by a similar routine.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI)
- #[wasm_bindgen(catch, js_name = decodeURI)]
- pub fn decode_uri(encoded: &str) -> Result<JsString, JsValue>;
-
- /// The `decodeURIComponent()` function decodes a Uniform Resource Identifier (URI) component
- /// previously created by `encodeURIComponent` or by a similar routine.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent)
- #[wasm_bindgen(catch, js_name = decodeURIComponent)]
- pub fn decode_uri_component(encoded: &str) -> Result<JsString, JsValue>;
-
- /// The `encodeURI()` function encodes a Uniform Resource Identifier (URI)
- /// by replacing each instance of certain characters by one, two, three, or
- /// four escape sequences representing the UTF-8 encoding of the character
- /// (will only be four escape sequences for characters composed of two
- /// "surrogate" characters).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI)
- #[wasm_bindgen(js_name = encodeURI)]
- pub fn encode_uri(decoded: &str) -> JsString;
-
- /// The `encodeURIComponent()` function encodes a Uniform Resource Identifier (URI) component
- /// by replacing each instance of certain characters by one, two, three, or four escape sequences
- /// representing the UTF-8 encoding of the character
- /// (will only be four escape sequences for characters composed of two "surrogate" characters).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent)
- #[wasm_bindgen(js_name = encodeURIComponent)]
- pub fn encode_uri_component(decoded: &str) -> JsString;
-
- /// The `eval()` function evaluates JavaScript code represented as a string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval)
- #[wasm_bindgen(catch)]
- pub fn eval(js_source_text: &str) -> Result<JsValue, JsValue>;
-
- /// The global `isFinite()` function determines whether the passed value is a finite number.
- /// If needed, the parameter is first converted to a number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)
- #[wasm_bindgen(js_name = isFinite)]
- pub fn is_finite(value: &JsValue) -> bool;
-
- /// The `parseInt()` function parses a string argument and returns an integer
- /// of the specified radix (the base in mathematical numeral systems), or NaN on error.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt)
- #[wasm_bindgen(js_name = parseInt)]
- pub fn parse_int(text: &str, radix: u8) -> f64;
-
- /// The `parseFloat()` function parses an argument and returns a floating point number,
- /// or NaN on error.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)
- #[wasm_bindgen(js_name = parseFloat)]
- pub fn parse_float(text: &str) -> f64;
-
- /// The `escape()` function computes a new string in which certain characters have been
- /// replaced by a hexadecimal escape sequence.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape)
- #[wasm_bindgen]
- pub fn escape(string: &str) -> JsString;
-
- /// The `unescape()` function computes a new string in which hexadecimal escape
- /// sequences are replaced with the character that it represents. The escape sequences might
- /// be introduced by a function like `escape`. Usually, `decodeURI` or `decodeURIComponent`
- /// are preferred over `unescape`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape)
- #[wasm_bindgen]
- pub fn unescape(string: &str) -> JsString;
-}
-
-// Array
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, is_type_of = Array::is_array, typescript_type = "Array<any>")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Array;
-
- /// Creates a new empty array.
- #[wasm_bindgen(constructor)]
- pub fn new() -> Array;
-
- /// Creates a new array with the specified length (elements are initialized to `undefined`).
- #[wasm_bindgen(constructor)]
- pub fn new_with_length(len: u32) -> Array;
-
- /// Retrieves the element at the index, counting from the end if negative
- /// (returns `undefined` if the index is out of range).
- #[wasm_bindgen(method)]
- pub fn at(this: &Array, index: i32) -> JsValue;
-
- /// Retrieves the element at the index (returns `undefined` if the index is out of range).
- #[wasm_bindgen(method, structural, indexing_getter)]
- pub fn get(this: &Array, index: u32) -> JsValue;
-
- /// Sets the element at the index (auto-enlarges the array if the index is out of range).
- #[wasm_bindgen(method, structural, indexing_setter)]
- pub fn set(this: &Array, index: u32, value: JsValue);
-
- /// Deletes the element at the index (does nothing if the index is out of range).
- ///
- /// The element at the index is set to `undefined`.
- ///
- /// This does not resize the array, the array will still be the same length.
- #[wasm_bindgen(method, structural, indexing_deleter)]
- pub fn delete(this: &Array, index: u32);
-
- /// The `Array.from()` method creates a new, shallow-copied `Array` instance
- /// from an array-like or iterable object.
- #[wasm_bindgen(static_method_of = Array)]
- pub fn from(val: &JsValue) -> Array;
-
- /// The `copyWithin()` method shallow copies part of an array to another
- /// location in the same array and returns it, without modifying its size.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin)
- #[wasm_bindgen(method, js_name = copyWithin)]
- pub fn copy_within(this: &Array, target: i32, start: i32, end: i32) -> Array;
-
- /// The `concat()` method is used to merge two or more arrays. This method
- /// does not change the existing arrays, but instead returns a new array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat)
- #[wasm_bindgen(method)]
- pub fn concat(this: &Array, array: &Array) -> Array;
-
- /// The `every()` method tests whether all elements in the array pass the test
- /// implemented by the provided function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every)
- #[wasm_bindgen(method)]
- pub fn every(this: &Array, predicate: &mut dyn FnMut(JsValue, u32, Array) -> bool) -> bool;
-
- /// The `fill()` method fills all the elements of an array from a start index
- /// to an end index with a static value. The end index is not included.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill)
- #[wasm_bindgen(method)]
- pub fn fill(this: &Array, value: &JsValue, start: u32, end: u32) -> Array;
-
- /// The `filter()` method creates a new array with all elements that pass the
- /// test implemented by the provided function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
- #[wasm_bindgen(method)]
- pub fn filter(this: &Array, predicate: &mut dyn FnMut(JsValue, u32, Array) -> bool) -> Array;
-
- /// The `find()` method returns the value of the first element in the array that satisfies
- /// the provided testing function. Otherwise `undefined` is returned.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
- #[wasm_bindgen(method)]
- pub fn find(this: &Array, predicate: &mut dyn FnMut(JsValue, u32, Array) -> bool) -> JsValue;
-
- /// The `findIndex()` method returns the index of the first element in the array that
- /// satisfies the provided testing function. Otherwise -1 is returned.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex)
- #[wasm_bindgen(method, js_name = findIndex)]
- pub fn find_index(this: &Array, predicate: &mut dyn FnMut(JsValue, u32, Array) -> bool) -> i32;
-
- /// The `findLast()` method of Array instances iterates the array in reverse order
- /// and returns the value of the first element that satisfies the provided testing function.
- /// If no elements satisfy the testing function, undefined is returned.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findLast)
- #[wasm_bindgen(method, js_name = findLast)]
- pub fn find_last(
- this: &Array,
- predicate: &mut dyn FnMut(JsValue, u32, Array) -> bool,
- ) -> JsValue;
-
- /// The `findLastIndex()` method of Array instances iterates the array in reverse order
- /// and returns the index of the first element that satisfies the provided testing function.
- /// If no elements satisfy the testing function, -1 is returned.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findLastIndex)
- #[wasm_bindgen(method, js_name = findLastIndex)]
- pub fn find_last_index(
- this: &Array,
- predicate: &mut dyn FnMut(JsValue, u32, Array) -> bool,
- ) -> i32;
-
- /// The `flat()` method creates a new array with all sub-array elements concatenated into it
- /// recursively up to the specified depth.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat)
- #[wasm_bindgen(method)]
- pub fn flat(this: &Array, depth: i32) -> Array;
-
- /// The `flatMap()` method first maps each element using a mapping function, then flattens
- /// the result into a new array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap)
- #[wasm_bindgen(method, js_name = flatMap)]
- pub fn flat_map(
- this: &Array,
- callback: &mut dyn FnMut(JsValue, u32, Array) -> Vec<JsValue>,
- ) -> Array;
-
- /// The `forEach()` method executes a provided function once for each array element.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
- #[wasm_bindgen(method, js_name = forEach)]
- pub fn for_each(this: &Array, callback: &mut dyn FnMut(JsValue, u32, Array));
-
- /// The `includes()` method determines whether an array includes a certain
- /// element, returning true or false as appropriate.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes)
- #[wasm_bindgen(method)]
- pub fn includes(this: &Array, value: &JsValue, from_index: i32) -> bool;
-
- /// The `indexOf()` method returns the first index at which a given element
- /// can be found in the array, or -1 if it is not present.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)
- #[wasm_bindgen(method, js_name = indexOf)]
- pub fn index_of(this: &Array, value: &JsValue, from_index: i32) -> i32;
-
- /// The `Array.isArray()` method determines whether the passed value is an Array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)
- #[wasm_bindgen(static_method_of = Array, js_name = isArray)]
- pub fn is_array(value: &JsValue) -> bool;
-
- /// The `join()` method joins all elements of an array (or an array-like object)
- /// into a string and returns this string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join)
- #[wasm_bindgen(method)]
- pub fn join(this: &Array, delimiter: &str) -> JsString;
-
- /// The `lastIndexOf()` method returns the last index at which a given element
- /// can be found in the array, or -1 if it is not present. The array is
- /// searched backwards, starting at fromIndex.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf)
- #[wasm_bindgen(method, js_name = lastIndexOf)]
- pub fn last_index_of(this: &Array, value: &JsValue, from_index: i32) -> i32;
-
- /// The length property of an object which is an instance of type Array
- /// sets or returns the number of elements in that array. The value is an
- /// unsigned, 32-bit integer that is always numerically greater than the
- /// highest index in the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length)
- #[wasm_bindgen(method, getter, structural)]
- pub fn length(this: &Array) -> u32;
-
- /// Sets the length of the array.
- ///
- /// If it is set to less than the current length of the array, it will
- /// shrink the array.
- ///
- /// If it is set to more than the current length of the array, it will
- /// increase the length of the array, filling the new space with empty
- /// slots.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length)
- #[wasm_bindgen(method, setter)]
- pub fn set_length(this: &Array, value: u32);
-
- /// `map()` calls a provided callback function once for each element in an array,
- /// in order, and constructs a new array from the results. callback is invoked
- /// only for indexes of the array which have assigned values, including undefined.
- /// It is not called for missing elements of the array (that is, indexes that have
- /// never been set, which have been deleted or which have never been assigned a value).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
- #[wasm_bindgen(method)]
- pub fn map(this: &Array, predicate: &mut dyn FnMut(JsValue, u32, Array) -> JsValue) -> Array;
-
- /// The `Array.of()` method creates a new Array instance with a variable
- /// number of arguments, regardless of number or type of the arguments.
- ///
- /// The difference between `Array.of()` and the `Array` constructor is in the
- /// handling of integer arguments: `Array.of(7)` creates an array with a single
- /// element, `7`, whereas `Array(7)` creates an empty array with a `length`
- /// property of `7` (Note: this implies an array of 7 empty slots, not slots
- /// with actual undefined values).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of)
- ///
- /// # Notes
- ///
- /// There are a few bindings to `of` in `js-sys`: `of1`, `of2`, etc...
- /// with different arities.
- #[wasm_bindgen(static_method_of = Array, js_name = of)]
- pub fn of1(a: &JsValue) -> Array;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of)
- #[wasm_bindgen(static_method_of = Array, js_name = of)]
- pub fn of2(a: &JsValue, b: &JsValue) -> Array;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of)
- #[wasm_bindgen(static_method_of = Array, js_name = of)]
- pub fn of3(a: &JsValue, b: &JsValue, c: &JsValue) -> Array;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of)
- #[wasm_bindgen(static_method_of = Array, js_name = of)]
- pub fn of4(a: &JsValue, b: &JsValue, c: &JsValue, d: &JsValue) -> Array;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of)
- #[wasm_bindgen(static_method_of = Array, js_name = of)]
- pub fn of5(a: &JsValue, b: &JsValue, c: &JsValue, d: &JsValue, e: &JsValue) -> Array;
-
- /// The `pop()` method removes the last element from an array and returns that
- /// element. This method changes the length of the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop)
- #[wasm_bindgen(method)]
- pub fn pop(this: &Array) -> JsValue;
-
- /// The `push()` method adds one or more elements to the end of an array and
- /// returns the new length of the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
- #[wasm_bindgen(method)]
- pub fn push(this: &Array, value: &JsValue) -> u32;
-
- /// The `reduce()` method applies a function against an accumulator and each element in
- /// the array (from left to right) to reduce it to a single value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)
- #[wasm_bindgen(method)]
- pub fn reduce(
- this: &Array,
- predicate: &mut dyn FnMut(JsValue, JsValue, u32, Array) -> JsValue,
- initial_value: &JsValue,
- ) -> JsValue;
-
- /// The `reduceRight()` method applies a function against an accumulator and each value
- /// of the array (from right-to-left) to reduce it to a single value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight)
- #[wasm_bindgen(method, js_name = reduceRight)]
- pub fn reduce_right(
- this: &Array,
- predicate: &mut dyn FnMut(JsValue, JsValue, u32, Array) -> JsValue,
- initial_value: &JsValue,
- ) -> JsValue;
-
- /// The `reverse()` method reverses an array in place. The first array
- /// element becomes the last, and the last array element becomes the first.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)
- #[wasm_bindgen(method)]
- pub fn reverse(this: &Array) -> Array;
-
- /// The `shift()` method removes the first element from an array and returns
- /// that removed element. This method changes the length of the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift)
- #[wasm_bindgen(method)]
- pub fn shift(this: &Array) -> JsValue;
-
- /// The `slice()` method returns a shallow copy of a portion of an array into
- /// a new array object selected from begin to end (end not included).
- /// The original array will not be modified.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
- #[wasm_bindgen(method)]
- pub fn slice(this: &Array, start: u32, end: u32) -> Array;
-
- /// The `some()` method tests whether at least one element in the array passes the test implemented
- /// by the provided function.
- /// Note: This method returns false for any condition put on an empty array.
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
- #[wasm_bindgen(method)]
- pub fn some(this: &Array, predicate: &mut dyn FnMut(JsValue) -> bool) -> bool;
-
- /// The `sort()` method sorts the elements of an array in place and returns
- /// the array. The sort is not necessarily stable. The default sort
- /// order is according to string Unicode code points.
- ///
- /// The time and space complexity of the sort cannot be guaranteed as it
- /// is implementation dependent.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
- #[wasm_bindgen(method)]
- pub fn sort(this: &Array) -> Array;
-
- /// The `splice()` method changes the contents of an array by removing existing elements and/or
- /// adding new elements.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
- #[wasm_bindgen(method)]
- pub fn splice(this: &Array, start: u32, delete_count: u32, item: &JsValue) -> Array;
-
- /// The `toLocaleString()` method returns a string representing the elements of the array.
- /// The elements are converted to Strings using their toLocaleString methods and these
- /// Strings are separated by a locale-specific String (such as a comma “,”).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toLocaleString)
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &Array, locales: &JsValue, options: &JsValue) -> JsString;
-
- /// The `toString()` method returns a string representing the specified array
- /// and its elements.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString)
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Array) -> JsString;
-
- /// The `unshift()` method adds one or more elements to the beginning of an
- /// array and returns the new length of the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift)
- #[wasm_bindgen(method)]
- pub fn unshift(this: &Array, value: &JsValue) -> u32;
-}
-
-/// Iterator returned by `Array::into_iter`
-#[derive(Debug, Clone)]
-pub struct ArrayIntoIter {
- range: core::ops::Range<u32>,
- array: Array,
-}
-
-impl core::iter::Iterator for ArrayIntoIter {
- type Item = JsValue;
-
- fn next(&mut self) -> Option<Self::Item> {
- let index = self.range.next()?;
- Some(self.array.get(index))
- }
-
- #[inline]
- fn size_hint(&self) -> (usize, Option<usize>) {
- self.range.size_hint()
- }
-
- #[inline]
- fn count(self) -> usize
- where
- Self: Sized,
- {
- self.range.count()
- }
-
- #[inline]
- fn last(self) -> Option<Self::Item>
- where
- Self: Sized,
- {
- let Self { range, array } = self;
- range.last().map(|index| array.get(index))
- }
-
- #[inline]
- fn nth(&mut self, n: usize) -> Option<Self::Item> {
- self.range.nth(n).map(|index| self.array.get(index))
- }
-}
-
-impl core::iter::DoubleEndedIterator for ArrayIntoIter {
- fn next_back(&mut self) -> Option<Self::Item> {
- let index = self.range.next_back()?;
- Some(self.array.get(index))
- }
-
- fn nth_back(&mut self, n: usize) -> Option<Self::Item> {
- self.range.nth_back(n).map(|index| self.array.get(index))
- }
-}
-
-impl core::iter::FusedIterator for ArrayIntoIter {}
-
-impl core::iter::ExactSizeIterator for ArrayIntoIter {}
-
-/// Iterator returned by `Array::iter`
-#[derive(Debug, Clone)]
-pub struct ArrayIter<'a> {
- range: core::ops::Range<u32>,
- array: &'a Array,
-}
-
-impl core::iter::Iterator for ArrayIter<'_> {
- type Item = JsValue;
-
- fn next(&mut self) -> Option<Self::Item> {
- let index = self.range.next()?;
- Some(self.array.get(index))
- }
-
- #[inline]
- fn size_hint(&self) -> (usize, Option<usize>) {
- self.range.size_hint()
- }
-
- #[inline]
- fn count(self) -> usize
- where
- Self: Sized,
- {
- self.range.count()
- }
-
- #[inline]
- fn last(self) -> Option<Self::Item>
- where
- Self: Sized,
- {
- let Self { range, array } = self;
- range.last().map(|index| array.get(index))
- }
-
- #[inline]
- fn nth(&mut self, n: usize) -> Option<Self::Item> {
- self.range.nth(n).map(|index| self.array.get(index))
- }
-}
-
-impl core::iter::DoubleEndedIterator for ArrayIter<'_> {
- fn next_back(&mut self) -> Option<Self::Item> {
- let index = self.range.next_back()?;
- Some(self.array.get(index))
- }
-
- fn nth_back(&mut self, n: usize) -> Option<Self::Item> {
- self.range.nth_back(n).map(|index| self.array.get(index))
- }
-}
-
-impl core::iter::FusedIterator for ArrayIter<'_> {}
-
-impl core::iter::ExactSizeIterator for ArrayIter<'_> {}
-
-impl Array {
- /// Returns an iterator over the values of the JS array.
- pub fn iter(&self) -> ArrayIter<'_> {
- ArrayIter {
- range: 0..self.length(),
- array: self,
- }
- }
-
- /// Converts the JS array into a new Vec.
- pub fn to_vec(&self) -> Vec<JsValue> {
- let len = self.length();
-
- let mut output = Vec::with_capacity(len as usize);
-
- for i in 0..len {
- output.push(self.get(i));
- }
-
- output
- }
-}
-
-impl core::iter::IntoIterator for Array {
- type Item = JsValue;
- type IntoIter = ArrayIntoIter;
-
- fn into_iter(self) -> Self::IntoIter {
- ArrayIntoIter {
- range: 0..self.length(),
- array: self,
- }
- }
-}
-
-// TODO pre-initialize the Array with the correct length using TrustedLen
-impl<A> core::iter::FromIterator<A> for Array
-where
- A: AsRef<JsValue>,
-{
- fn from_iter<T>(iter: T) -> Array
- where
- T: IntoIterator<Item = A>,
- {
- let mut out = Array::new();
- out.extend(iter);
- out
- }
-}
-
-impl<A> core::iter::Extend<A> for Array
-where
- A: AsRef<JsValue>,
-{
- fn extend<T>(&mut self, iter: T)
- where
- T: IntoIterator<Item = A>,
- {
- for value in iter {
- self.push(value.as_ref());
- }
- }
-}
-
-impl Default for Array {
- fn default() -> Self {
- Self::new()
- }
-}
-
-// ArrayBuffer
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "ArrayBuffer")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type ArrayBuffer;
-
- /// The `ArrayBuffer` object is used to represent a generic,
- /// fixed-length raw binary data buffer. You cannot directly
- /// manipulate the contents of an `ArrayBuffer`; instead, you
- /// create one of the typed array objects or a `DataView` object
- /// which represents the buffer in a specific format, and use that
- /// to read and write the contents of the buffer.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)
- #[wasm_bindgen(constructor)]
- pub fn new(length: u32) -> ArrayBuffer;
-
- /// The byteLength property of an object which is an instance of type ArrayBuffer
- /// it's an accessor property whose set accessor function is undefined,
- /// meaning that you can only read this property.
- /// The value is established when the array is constructed and cannot be changed.
- /// This property returns 0 if this ArrayBuffer has been detached.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength)
- #[wasm_bindgen(method, getter, js_name = byteLength)]
- pub fn byte_length(this: &ArrayBuffer) -> u32;
-
- /// The `isView()` method returns true if arg is one of the `ArrayBuffer`
- /// views, such as typed array objects or a DataView; false otherwise.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView)
- #[wasm_bindgen(static_method_of = ArrayBuffer, js_name = isView)]
- pub fn is_view(value: &JsValue) -> bool;
-
- /// The `slice()` method returns a new `ArrayBuffer` whose contents
- /// are a copy of this `ArrayBuffer`'s bytes from begin, inclusive,
- /// up to end, exclusive.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice)
- #[wasm_bindgen(method)]
- pub fn slice(this: &ArrayBuffer, begin: u32) -> ArrayBuffer;
-
- /// Like `slice()` but with the `end` argument.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice)
- #[wasm_bindgen(method, js_name = slice)]
- pub fn slice_with_end(this: &ArrayBuffer, begin: u32, end: u32) -> ArrayBuffer;
-}
-
-// SharedArrayBuffer
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "SharedArrayBuffer")]
- #[derive(Clone, Debug)]
- pub type SharedArrayBuffer;
-
- /// The `SharedArrayBuffer` object is used to represent a generic,
- /// fixed-length raw binary data buffer, similar to the `ArrayBuffer`
- /// object, but in a way that they can be used to create views
- /// on shared memory. Unlike an `ArrayBuffer`, a `SharedArrayBuffer`
- /// cannot become detached.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer)
- #[wasm_bindgen(constructor)]
- pub fn new(length: u32) -> SharedArrayBuffer;
-
- /// The byteLength accessor property represents the length of
- /// an `SharedArrayBuffer` in bytes. This is established when
- /// the `SharedArrayBuffer` is constructed and cannot be changed.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength)
- #[wasm_bindgen(method, getter, js_name = byteLength)]
- pub fn byte_length(this: &SharedArrayBuffer) -> u32;
-
- /// The `slice()` method returns a new `SharedArrayBuffer` whose contents
- /// are a copy of this `SharedArrayBuffer`'s bytes from begin, inclusive,
- /// up to end, exclusive.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice)
- #[wasm_bindgen(method)]
- pub fn slice(this: &SharedArrayBuffer, begin: u32) -> SharedArrayBuffer;
-
- /// Like `slice()` but with the `end` argument.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice)
- #[wasm_bindgen(method, js_name = slice)]
- pub fn slice_with_end(this: &SharedArrayBuffer, begin: u32, end: u32) -> SharedArrayBuffer;
-}
-
-// Array Iterator
-#[wasm_bindgen]
-extern "C" {
- /// The `keys()` method returns a new Array Iterator object that contains the
- /// keys for each index in the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/keys)
- #[wasm_bindgen(method)]
- pub fn keys(this: &Array) -> Iterator;
-
- /// The `entries()` method returns a new Array Iterator object that contains
- /// the key/value pairs for each index in the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries)
- #[wasm_bindgen(method)]
- pub fn entries(this: &Array) -> Iterator;
-
- /// The `values()` method returns a new Array Iterator object that
- /// contains the values for each index in the array.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/values)
- #[wasm_bindgen(method)]
- pub fn values(this: &Array) -> Iterator;
-}
-
-/// The `Atomics` object provides atomic operations as static methods.
-/// They are used with `SharedArrayBuffer` objects.
-///
-/// The Atomic operations are installed on an `Atomics` module. Unlike
-/// the other global objects, `Atomics` is not a constructor. You cannot
-/// use it with a new operator or invoke the `Atomics` object as a
-/// function. All properties and methods of `Atomics` are static
-/// (as is the case with the Math object, for example).
-/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics)
-#[allow(non_snake_case)]
-pub mod Atomics {
- use super::*;
-
- #[wasm_bindgen]
- extern "C" {
- /// The static `Atomics.add()` method adds a given value at a given
- /// position in the array and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// You should use `add_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/add)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn add(typed_array: &JsValue, index: u32, value: i32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.add()` method adds a given value at a given
- /// position in the array and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/add)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = add)]
- pub fn add_bigint(typed_array: &JsValue, index: u32, value: i64) -> Result<i64, JsValue>;
-
- /// The static `Atomics.and()` method computes a bitwise AND with a given
- /// value at a given position in the array, and returns the old value
- /// at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// You should use `and_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/and)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn and(typed_array: &JsValue, index: u32, value: i32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.and()` method computes a bitwise AND with a given
- /// value at a given position in the array, and returns the old value
- /// at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/and)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = and)]
- pub fn and_bigint(typed_array: &JsValue, index: u32, value: i64) -> Result<i64, JsValue>;
-
- /// The static `Atomics.compareExchange()` method exchanges a given
- /// replacement value at a given position in the array, if a given expected
- /// value equals the old value. It returns the old value at that position
- /// whether it was equal to the expected value or not.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// You should use `compare_exchange_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = compareExchange)]
- pub fn compare_exchange(
- typed_array: &JsValue,
- index: u32,
- expected_value: i32,
- replacement_value: i32,
- ) -> Result<i32, JsValue>;
-
- /// The static `Atomics.compareExchange()` method exchanges a given
- /// replacement value at a given position in the array, if a given expected
- /// value equals the old value. It returns the old value at that position
- /// whether it was equal to the expected value or not.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = compareExchange)]
- pub fn compare_exchange_bigint(
- typed_array: &JsValue,
- index: u32,
- expected_value: i64,
- replacement_value: i64,
- ) -> Result<i64, JsValue>;
-
- /// The static `Atomics.exchange()` method stores a given value at a given
- /// position in the array and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// You should use `exchange_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/exchange)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn exchange(typed_array: &JsValue, index: u32, value: i32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.exchange()` method stores a given value at a given
- /// position in the array and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/exchange)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = exchange)]
- pub fn exchange_bigint(
- typed_array: &JsValue,
- index: u32,
- value: i64,
- ) -> Result<i64, JsValue>;
-
- /// The static `Atomics.isLockFree()` method is used to determine
- /// whether to use locks or atomic operations. It returns true,
- /// if the given size is one of the `BYTES_PER_ELEMENT` property
- /// of integer `TypedArray` types.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/isLockFree)
- #[wasm_bindgen(js_namespace = Atomics, js_name = isLockFree)]
- pub fn is_lock_free(size: u32) -> bool;
-
- /// The static `Atomics.load()` method returns a value at a given
- /// position in the array.
- ///
- /// You should use `load_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/load)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn load(typed_array: &JsValue, index: u32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.load()` method returns a value at a given
- /// position in the array.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/load)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = load)]
- pub fn load_bigint(typed_array: &JsValue, index: i64) -> Result<i64, JsValue>;
-
- /// The static `Atomics.notify()` method notifies up some agents that
- /// are sleeping in the wait queue.
- /// Note: This operation works with a shared `Int32Array` only.
- /// If `count` is not provided, notifies all the agents in the queue.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/notify)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn notify(typed_array: &Int32Array, index: u32) -> Result<u32, JsValue>;
-
- /// Notifies up to `count` agents in the wait queue.
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = notify)]
- pub fn notify_with_count(
- typed_array: &Int32Array,
- index: u32,
- count: u32,
- ) -> Result<u32, JsValue>;
-
- /// The static `Atomics.or()` method computes a bitwise OR with a given value
- /// at a given position in the array, and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// You should use `or_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/or)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn or(typed_array: &JsValue, index: u32, value: i32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.or()` method computes a bitwise OR with a given value
- /// at a given position in the array, and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/or)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = or)]
- pub fn or_bigint(typed_array: &JsValue, index: u32, value: i64) -> Result<i64, JsValue>;
-
- /// The static `Atomics.store()` method stores a given value at the given
- /// position in the array and returns that value.
- ///
- /// You should use `store_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/store)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn store(typed_array: &JsValue, index: u32, value: i32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.store()` method stores a given value at the given
- /// position in the array and returns that value.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/store)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = store)]
- pub fn store_bigint(typed_array: &JsValue, index: u32, value: i64) -> Result<i64, JsValue>;
-
- /// The static `Atomics.sub()` method subtracts a given value at a
- /// given position in the array and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// You should use `sub_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/sub)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn sub(typed_array: &JsValue, index: u32, value: i32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.sub()` method subtracts a given value at a
- /// given position in the array and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/sub)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = sub)]
- pub fn sub_bigint(typed_array: &JsValue, index: u32, value: i64) -> Result<i64, JsValue>;
-
- /// The static `Atomics.wait()` method verifies that a given
- /// position in an `Int32Array` still contains a given value
- /// and if so sleeps, awaiting a wakeup or a timeout.
- /// It returns a string which is either "ok", "not-equal", or "timed-out".
- /// Note: This operation only works with a shared `Int32Array`
- /// and may not be allowed on the main thread.
- ///
- /// You should use `wait_bigint` to operate on a `BigInt64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn wait(typed_array: &Int32Array, index: u32, value: i32) -> Result<JsString, JsValue>;
-
- /// The static `Atomics.wait()` method verifies that a given
- /// position in an `BigInt64Array` still contains a given value
- /// and if so sleeps, awaiting a wakeup or a timeout.
- /// It returns a string which is either "ok", "not-equal", or "timed-out".
- /// Note: This operation only works with a shared `BigInt64Array`
- /// and may not be allowed on the main thread.
- ///
- /// You should use `wait` to operate on a `Int32Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = wait)]
- pub fn wait_bigint(
- typed_array: &BigInt64Array,
- index: u32,
- value: i64,
- ) -> Result<JsString, JsValue>;
-
- /// Like `wait()`, but with timeout
- ///
- /// You should use `wait_with_timeout_bigint` to operate on a `BigInt64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = wait)]
- pub fn wait_with_timeout(
- typed_array: &Int32Array,
- index: u32,
- value: i32,
- timeout: f64,
- ) -> Result<JsString, JsValue>;
-
- /// Like `wait()`, but with timeout
- ///
- /// You should use `wait_with_timeout` to operate on a `Int32Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = wait)]
- pub fn wait_with_timeout_bigint(
- typed_array: &BigInt64Array,
- index: u32,
- value: i64,
- timeout: f64,
- ) -> Result<JsString, JsValue>;
-
- /// The static `Atomics.waitAsync()` method verifies that a given position in an
- /// `Int32Array` still contains a given value and if so sleeps, awaiting a
- /// wakeup or a timeout. It returns an object with two properties. The first
- /// property `async` is a boolean which if true indicates that the second
- /// property `value` is a promise. If `async` is false then value is a string
- /// whether equal to either "not-equal" or "timed-out".
- /// Note: This operation only works with a shared `Int32Array` and may be used
- /// on the main thread.
- ///
- /// You should use `wait_async_bigint` to operate on a `BigInt64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/waitAsync)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = waitAsync)]
- pub fn wait_async(
- typed_array: &Int32Array,
- index: u32,
- value: i32,
- ) -> Result<Object, JsValue>;
-
- /// The static `Atomics.waitAsync()` method verifies that a given position in an
- /// `Int32Array` still contains a given value and if so sleeps, awaiting a
- /// wakeup or a timeout. It returns an object with two properties. The first
- /// property `async` is a boolean which if true indicates that the second
- /// property `value` is a promise. If `async` is false then value is a string
- /// whether equal to either "not-equal" or "timed-out".
- /// Note: This operation only works with a shared `BigInt64Array` and may be used
- /// on the main thread.
- ///
- /// You should use `wait_async` to operate on a `Int32Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/waitAsync)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = waitAsync)]
- pub fn wait_async_bigint(
- typed_array: &BigInt64Array,
- index: u32,
- value: i64,
- ) -> Result<Object, JsValue>;
-
- /// Like `waitAsync()`, but with timeout
- ///
- /// You should use `wait_async_with_timeout_bigint` to operate on a `BigInt64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/waitAsync)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = waitAsync)]
- pub fn wait_async_with_timeout(
- typed_array: &Int32Array,
- index: u32,
- value: i32,
- timeout: f64,
- ) -> Result<Object, JsValue>;
-
- /// Like `waitAsync()`, but with timeout
- ///
- /// You should use `wait_async_with_timeout` to operate on a `Int32Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/waitAsync)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = waitAsync)]
- pub fn wait_async_with_timeout_bigint(
- typed_array: &BigInt64Array,
- index: u32,
- value: i64,
- timeout: f64,
- ) -> Result<Object, JsValue>;
-
- /// The static `Atomics.xor()` method computes a bitwise XOR
- /// with a given value at a given position in the array,
- /// and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// You should use `xor_bigint` to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/xor)
- #[wasm_bindgen(js_namespace = Atomics, catch)]
- pub fn xor(typed_array: &JsValue, index: u32, value: i32) -> Result<i32, JsValue>;
-
- /// The static `Atomics.xor()` method computes a bitwise XOR
- /// with a given value at a given position in the array,
- /// and returns the old value at that position.
- /// This atomic operation guarantees that no other write happens
- /// until the modified value is written back.
- ///
- /// This method is used to operate on a `BigInt64Array` or a `BigUint64Array`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/xor)
- #[wasm_bindgen(js_namespace = Atomics, catch, js_name = xor)]
- pub fn xor_bigint(typed_array: &JsValue, index: u32, value: i64) -> Result<i64, JsValue>;
- }
-}
-
-// BigInt
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, is_type_of = |v| v.is_bigint(), typescript_type = "bigint")]
- #[derive(Clone, PartialEq, Eq)]
- pub type BigInt;
-
- #[wasm_bindgen(catch, js_name = BigInt)]
- fn new_bigint(value: &JsValue) -> Result<BigInt, Error>;
-
- #[wasm_bindgen(js_name = BigInt)]
- fn new_bigint_unchecked(value: &JsValue) -> BigInt;
-
- /// Clamps a BigInt value to a signed integer value, and returns that value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/asIntN)
- #[wasm_bindgen(static_method_of = BigInt, js_name = asIntN)]
- pub fn as_int_n(bits: f64, bigint: &BigInt) -> BigInt;
-
- /// Clamps a BigInt value to an unsigned integer value, and returns that value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/asUintN)
- #[wasm_bindgen(static_method_of = BigInt, js_name = asUintN)]
- pub fn as_uint_n(bits: f64, bigint: &BigInt) -> BigInt;
-
- /// Returns a string with a language-sensitive representation of this BigInt value. Overrides the [`Object.prototype.toLocaleString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString) method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toLocaleString)
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &BigInt, locales: &JsValue, options: &JsValue) -> JsString;
-
- /// Returns a string representing this BigInt value in the specified radix (base). Overrides the [`Object.prototype.toString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toString)
- #[wasm_bindgen(catch, method, js_name = toString)]
- pub fn to_string(this: &BigInt, radix: u8) -> Result<JsString, RangeError>;
-
- #[wasm_bindgen(method, js_name = toString)]
- fn to_string_unchecked(this: &BigInt, radix: u8) -> String;
-
- /// Returns this BigInt value. Overrides the [`Object.prototype.valueOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf) method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/valueOf)
- #[wasm_bindgen(method, js_name = valueOf)]
- pub fn value_of(this: &BigInt, radix: u8) -> BigInt;
-}
-
-impl BigInt {
- /// Creates a new BigInt value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/BigInt)
- #[inline]
- pub fn new(value: &JsValue) -> Result<BigInt, Error> {
- new_bigint(value)
- }
-
- /// Applies the binary `/` JS operator on two `BigInt`s, catching and returning any `RangeError` thrown.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Division)
- pub fn checked_div(&self, rhs: &Self) -> Result<Self, RangeError> {
- let result = JsValue::as_ref(self).checked_div(JsValue::as_ref(rhs));
-
- if result.is_instance_of::<RangeError>() {
- Err(result.unchecked_into())
- } else {
- Ok(result.unchecked_into())
- }
- }
-
- /// Applies the binary `**` JS operator on the two `BigInt`s.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Exponentiation)
- #[inline]
- pub fn pow(&self, rhs: &Self) -> Self {
- JsValue::as_ref(self)
- .pow(JsValue::as_ref(rhs))
- .unchecked_into()
- }
-
- /// Returns a tuple of this [`BigInt`]'s absolute value along with a
- /// [`bool`] indicating whether the [`BigInt`] was negative.
- fn abs(&self) -> (Self, bool) {
- if self < &BigInt::from(0) {
- (-self, true)
- } else {
- (self.clone(), false)
- }
- }
-}
-
-macro_rules! bigint_from {
- ($($x:ident)*) => ($(
- impl From<$x> for BigInt {
- #[inline]
- fn from(x: $x) -> BigInt {
- new_bigint_unchecked(&JsValue::from(x))
- }
- }
-
- impl PartialEq<$x> for BigInt {
- #[inline]
- fn eq(&self, other: &$x) -> bool {
- JsValue::from(self) == JsValue::from(BigInt::from(*other))
- }
- }
- )*)
-}
-bigint_from!(i8 u8 i16 u16 i32 u32 isize usize);
-
-macro_rules! bigint_from_big {
- ($($x:ident)*) => ($(
- impl From<$x> for BigInt {
- #[inline]
- fn from(x: $x) -> BigInt {
- JsValue::from(x).unchecked_into()
- }
- }
-
- impl PartialEq<$x> for BigInt {
- #[inline]
- fn eq(&self, other: &$x) -> bool {
- self == &BigInt::from(*other)
- }
- }
-
- impl TryFrom<BigInt> for $x {
- type Error = BigInt;
-
- #[inline]
- fn try_from(x: BigInt) -> Result<Self, BigInt> {
- Self::try_from(JsValue::from(x)).map_err(JsCast::unchecked_into)
- }
- }
- )*)
-}
-bigint_from_big!(i64 u64 i128 u128);
-
-impl PartialEq<Number> for BigInt {
- #[inline]
- fn eq(&self, other: &Number) -> bool {
- JsValue::as_ref(self).loose_eq(JsValue::as_ref(other))
- }
-}
-
-impl Not for &BigInt {
- type Output = BigInt;
-
- #[inline]
- fn not(self) -> Self::Output {
- JsValue::as_ref(self).bit_not().unchecked_into()
- }
-}
-
-forward_deref_unop!(impl Not, not for BigInt);
-forward_js_unop!(impl Neg, neg for BigInt);
-forward_js_binop!(impl BitAnd, bitand for BigInt);
-forward_js_binop!(impl BitOr, bitor for BigInt);
-forward_js_binop!(impl BitXor, bitxor for BigInt);
-forward_js_binop!(impl Shl, shl for BigInt);
-forward_js_binop!(impl Shr, shr for BigInt);
-forward_js_binop!(impl Add, add for BigInt);
-forward_js_binop!(impl Sub, sub for BigInt);
-forward_js_binop!(impl Div, div for BigInt);
-forward_js_binop!(impl Mul, mul for BigInt);
-forward_js_binop!(impl Rem, rem for BigInt);
-sum_product!(BigInt);
-
-partialord_ord!(BigInt);
-
-impl Default for BigInt {
- fn default() -> Self {
- BigInt::from(i32::default())
- }
-}
-
-impl FromStr for BigInt {
- type Err = Error;
-
- #[inline]
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- BigInt::new(&s.into())
- }
-}
-
-impl fmt::Debug for BigInt {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt::Display::fmt(self, f)
- }
-}
-
-impl fmt::Display for BigInt {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let (abs, is_neg) = self.abs();
- f.pad_integral(!is_neg, "", &abs.to_string_unchecked(10))
- }
-}
-
-impl fmt::Binary for BigInt {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let (abs, is_neg) = self.abs();
- f.pad_integral(!is_neg, "0b", &abs.to_string_unchecked(2))
- }
-}
-
-impl fmt::Octal for BigInt {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let (abs, is_neg) = self.abs();
- f.pad_integral(!is_neg, "0o", &abs.to_string_unchecked(8))
- }
-}
-
-impl fmt::LowerHex for BigInt {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let (abs, is_neg) = self.abs();
- f.pad_integral(!is_neg, "0x", &abs.to_string_unchecked(16))
- }
-}
-
-impl fmt::UpperHex for BigInt {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let (abs, is_neg) = self.abs();
- let mut s: String = abs.to_string_unchecked(16);
- s.make_ascii_uppercase();
- f.pad_integral(!is_neg, "0x", &s)
- }
-}
-
-// Boolean
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, is_type_of = |v| v.as_bool().is_some(), typescript_type = "boolean")]
- #[derive(Clone, PartialEq, Eq)]
- pub type Boolean;
-
- /// The `Boolean()` constructor creates an object wrapper for a boolean value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)
- #[wasm_bindgen(constructor)]
- #[deprecated(note = "recommended to use `Boolean::from` instead")]
- #[allow(deprecated)]
- pub fn new(value: &JsValue) -> Boolean;
-
- /// The `valueOf()` method returns the primitive value of a `Boolean` object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/valueOf)
- #[wasm_bindgen(method, js_name = valueOf)]
- pub fn value_of(this: &Boolean) -> bool;
-}
-
-impl From<bool> for Boolean {
- #[inline]
- fn from(b: bool) -> Boolean {
- Boolean::unchecked_from_js(JsValue::from(b))
- }
-}
-
-impl From<Boolean> for bool {
- #[inline]
- fn from(b: Boolean) -> bool {
- b.value_of()
- }
-}
-
-impl PartialEq<bool> for Boolean {
- #[inline]
- fn eq(&self, other: &bool) -> bool {
- self.value_of() == *other
- }
-}
-
-impl fmt::Debug for Boolean {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Debug::fmt(&self.value_of(), f)
- }
-}
-
-impl fmt::Display for Boolean {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Display::fmt(&self.value_of(), f)
- }
-}
-
-impl Default for Boolean {
- fn default() -> Self {
- Self::from(bool::default())
- }
-}
-
-impl Not for &Boolean {
- type Output = Boolean;
-
- #[inline]
- fn not(self) -> Self::Output {
- (!JsValue::as_ref(self)).into()
- }
-}
-
-forward_deref_unop!(impl Not, not for Boolean);
-
-partialord_ord!(Boolean);
-
-// DataView
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "DataView")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type DataView;
-
- /// The `DataView` view provides a low-level interface for reading and
- /// writing multiple number types in an `ArrayBuffer` irrespective of the
- /// platform's endianness.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)
- #[wasm_bindgen(constructor)]
- pub fn new(buffer: &ArrayBuffer, byteOffset: usize, byteLength: usize) -> DataView;
-
- /// The `DataView` view provides a low-level interface for reading and
- /// writing multiple number types in an `ArrayBuffer` irrespective of the
- /// platform's endianness.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)
- #[wasm_bindgen(constructor)]
- pub fn new_with_shared_array_buffer(
- buffer: &SharedArrayBuffer,
- byteOffset: usize,
- byteLength: usize,
- ) -> DataView;
-
- /// The ArrayBuffer referenced by this view. Fixed at construction time and thus read only.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/buffer)
- #[wasm_bindgen(method, getter, structural)]
- pub fn buffer(this: &DataView) -> ArrayBuffer;
-
- /// The length (in bytes) of this view from the start of its ArrayBuffer.
- /// Fixed at construction time and thus read only.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/byteLength)
- #[wasm_bindgen(method, getter, structural, js_name = byteLength)]
- pub fn byte_length(this: &DataView) -> usize;
-
- /// The offset (in bytes) of this view from the start of its ArrayBuffer.
- /// Fixed at construction time and thus read only.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/byteOffset)
- #[wasm_bindgen(method, getter, structural, js_name = byteOffset)]
- pub fn byte_offset(this: &DataView) -> usize;
-
- /// The `getInt8()` method gets a signed 8-bit integer (byte) at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt8)
- #[wasm_bindgen(method, js_name = getInt8)]
- pub fn get_int8(this: &DataView, byte_offset: usize) -> i8;
-
- /// The `getUint8()` method gets a unsigned 8-bit integer (byte) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint8)
- #[wasm_bindgen(method, js_name = getUint8)]
- pub fn get_uint8(this: &DataView, byte_offset: usize) -> u8;
-
- /// The `getInt16()` method gets a signed 16-bit integer (short) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt16)
- #[wasm_bindgen(method, js_name = getInt16)]
- pub fn get_int16(this: &DataView, byte_offset: usize) -> i16;
-
- /// The `getInt16()` method gets a signed 16-bit integer (short) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt16)
- #[wasm_bindgen(method, js_name = getInt16)]
- pub fn get_int16_endian(this: &DataView, byte_offset: usize, little_endian: bool) -> i16;
-
- /// The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified
- /// byte offset from the start of the view.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint16)
- #[wasm_bindgen(method, js_name = getUint16)]
- pub fn get_uint16(this: &DataView, byte_offset: usize) -> u16;
-
- /// The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified
- /// byte offset from the start of the view.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint16)
- #[wasm_bindgen(method, js_name = getUint16)]
- pub fn get_uint16_endian(this: &DataView, byte_offset: usize, little_endian: bool) -> u16;
-
- /// The `getInt32()` method gets a signed 32-bit integer (long) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt32)
- #[wasm_bindgen(method, js_name = getInt32)]
- pub fn get_int32(this: &DataView, byte_offset: usize) -> i32;
-
- /// The `getInt32()` method gets a signed 32-bit integer (long) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt32)
- #[wasm_bindgen(method, js_name = getInt32)]
- pub fn get_int32_endian(this: &DataView, byte_offset: usize, little_endian: bool) -> i32;
-
- /// The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified
- /// byte offset from the start of the view.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint32)
- #[wasm_bindgen(method, js_name = getUint32)]
- pub fn get_uint32(this: &DataView, byte_offset: usize) -> u32;
-
- /// The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified
- /// byte offset from the start of the view.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint32)
- #[wasm_bindgen(method, js_name = getUint32)]
- pub fn get_uint32_endian(this: &DataView, byte_offset: usize, little_endian: bool) -> u32;
-
- /// The `getFloat32()` method gets a signed 32-bit float (float) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat32)
- #[wasm_bindgen(method, js_name = getFloat32)]
- pub fn get_float32(this: &DataView, byte_offset: usize) -> f32;
-
- /// The `getFloat32()` method gets a signed 32-bit float (float) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat32)
- #[wasm_bindgen(method, js_name = getFloat32)]
- pub fn get_float32_endian(this: &DataView, byte_offset: usize, little_endian: bool) -> f32;
-
- /// The `getFloat64()` method gets a signed 64-bit float (double) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat64)
- #[wasm_bindgen(method, js_name = getFloat64)]
- pub fn get_float64(this: &DataView, byte_offset: usize) -> f64;
-
- /// The `getFloat64()` method gets a signed 64-bit float (double) at the specified
- /// byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat64)
- #[wasm_bindgen(method, js_name = getFloat64)]
- pub fn get_float64_endian(this: &DataView, byte_offset: usize, little_endian: bool) -> f64;
-
- /// The `setInt8()` method stores a signed 8-bit integer (byte) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt8)
- #[wasm_bindgen(method, js_name = setInt8)]
- pub fn set_int8(this: &DataView, byte_offset: usize, value: i8);
-
- /// The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint8)
- #[wasm_bindgen(method, js_name = setUint8)]
- pub fn set_uint8(this: &DataView, byte_offset: usize, value: u8);
-
- /// The `setInt16()` method stores a signed 16-bit integer (short) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt16)
- #[wasm_bindgen(method, js_name = setInt16)]
- pub fn set_int16(this: &DataView, byte_offset: usize, value: i16);
-
- /// The `setInt16()` method stores a signed 16-bit integer (short) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt16)
- #[wasm_bindgen(method, js_name = setInt16)]
- pub fn set_int16_endian(this: &DataView, byte_offset: usize, value: i16, little_endian: bool);
-
- /// The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint16)
- #[wasm_bindgen(method, js_name = setUint16)]
- pub fn set_uint16(this: &DataView, byte_offset: usize, value: u16);
-
- /// The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint16)
- #[wasm_bindgen(method, js_name = setUint16)]
- pub fn set_uint16_endian(this: &DataView, byte_offset: usize, value: u16, little_endian: bool);
-
- /// The `setInt32()` method stores a signed 32-bit integer (long) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt32)
- #[wasm_bindgen(method, js_name = setInt32)]
- pub fn set_int32(this: &DataView, byte_offset: usize, value: i32);
-
- /// The `setInt32()` method stores a signed 32-bit integer (long) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt32)
- #[wasm_bindgen(method, js_name = setInt32)]
- pub fn set_int32_endian(this: &DataView, byte_offset: usize, value: i32, little_endian: bool);
-
- /// The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint32)
- #[wasm_bindgen(method, js_name = setUint32)]
- pub fn set_uint32(this: &DataView, byte_offset: usize, value: u32);
-
- /// The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint32)
- #[wasm_bindgen(method, js_name = setUint32)]
- pub fn set_uint32_endian(this: &DataView, byte_offset: usize, value: u32, little_endian: bool);
-
- /// The `setFloat32()` method stores a signed 32-bit float (float) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat32)
- #[wasm_bindgen(method, js_name = setFloat32)]
- pub fn set_float32(this: &DataView, byte_offset: usize, value: f32);
-
- /// The `setFloat32()` method stores a signed 32-bit float (float) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat32)
- #[wasm_bindgen(method, js_name = setFloat32)]
- pub fn set_float32_endian(this: &DataView, byte_offset: usize, value: f32, little_endian: bool);
-
- /// The `setFloat64()` method stores a signed 64-bit float (double) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat64)
- #[wasm_bindgen(method, js_name = setFloat64)]
- pub fn set_float64(this: &DataView, byte_offset: usize, value: f64);
-
- /// The `setFloat64()` method stores a signed 64-bit float (double) value at the
- /// specified byte offset from the start of the DataView.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat64)
- #[wasm_bindgen(method, js_name = setFloat64)]
- pub fn set_float64_endian(this: &DataView, byte_offset: usize, value: f64, little_endian: bool);
-}
-
-// Error
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "Error")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Error;
-
- /// The Error constructor creates an error object.
- /// Instances of Error objects are thrown when runtime errors occur.
- /// The Error object can also be used as a base object for user-defined exceptions.
- /// See below for standard built-in error types.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
- #[wasm_bindgen(constructor)]
- pub fn new(message: &str) -> Error;
- #[wasm_bindgen(constructor)]
- pub fn new_with_options(message: &str, options: &Object) -> Error;
-
- /// The cause property is the underlying cause of the error.
- /// Usually this is used to add context to re-thrown errors.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#differentiate_between_similar_errors)
- #[wasm_bindgen(method, getter, structural)]
- pub fn cause(this: &Error) -> JsValue;
- #[wasm_bindgen(method, setter, structural)]
- pub fn set_cause(this: &Error, cause: &JsValue);
-
- /// The message property is a human-readable description of the error.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/message)
- #[wasm_bindgen(method, getter, structural)]
- pub fn message(this: &Error) -> JsString;
- #[wasm_bindgen(method, setter, structural)]
- pub fn set_message(this: &Error, message: &str);
-
- /// The name property represents a name for the type of error. The initial value is "Error".
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/name)
- #[wasm_bindgen(method, getter, structural)]
- pub fn name(this: &Error) -> JsString;
- #[wasm_bindgen(method, setter, structural)]
- pub fn set_name(this: &Error, name: &str);
-
- /// The `toString()` method returns a string representing the specified Error object
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/toString)
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Error) -> JsString;
-}
-
-partialord_ord!(JsString);
-
-// EvalError
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, extends = Error, typescript_type = "EvalError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type EvalError;
-
- /// The EvalError object indicates an error regarding the global eval() function. This
- /// exception is not thrown by JavaScript anymore, however the EvalError object remains for
- /// compatibility.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError)
- #[wasm_bindgen(constructor)]
- pub fn new(message: &str) -> EvalError;
-}
-
-// Function
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, is_type_of = JsValue::is_function, typescript_type = "Function")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Function;
-
- /// The `Function` constructor creates a new `Function` object. Calling the
- /// constructor directly can create functions dynamically, but suffers from
- /// security and similar (but far less significant) performance issues
- /// similar to `eval`. However, unlike `eval`, the `Function` constructor
- /// allows executing code in the global scope, prompting better programming
- /// habits and allowing for more efficient code minification.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
- #[wasm_bindgen(constructor)]
- pub fn new_with_args(args: &str, body: &str) -> Function;
-
- /// The `Function` constructor creates a new `Function` object. Calling the
- /// constructor directly can create functions dynamically, but suffers from
- /// security and similar (but far less significant) performance issues
- /// similar to `eval`. However, unlike `eval`, the `Function` constructor
- /// allows executing code in the global scope, prompting better programming
- /// habits and allowing for more efficient code minification.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)
- #[wasm_bindgen(constructor)]
- pub fn new_no_args(body: &str) -> Function;
-
- /// The `apply()` method calls a function with a given this value, and arguments provided as an array
- /// (or an array-like object).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)
- #[wasm_bindgen(method, catch)]
- pub fn apply(this: &Function, context: &JsValue, args: &Array) -> Result<JsValue, JsValue>;
-
- /// The `call()` method calls a function with a given this value and
- /// arguments provided individually.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
- #[wasm_bindgen(method, catch, js_name = call)]
- pub fn call0(this: &Function, context: &JsValue) -> Result<JsValue, JsValue>;
-
- /// The `call()` method calls a function with a given this value and
- /// arguments provided individually.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
- #[wasm_bindgen(method, catch, js_name = call)]
- pub fn call1(this: &Function, context: &JsValue, arg1: &JsValue) -> Result<JsValue, JsValue>;
-
- /// The `call()` method calls a function with a given this value and
- /// arguments provided individually.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
- #[wasm_bindgen(method, catch, js_name = call)]
- pub fn call2(
- this: &Function,
- context: &JsValue,
- arg1: &JsValue,
- arg2: &JsValue,
- ) -> Result<JsValue, JsValue>;
-
- /// The `call()` method calls a function with a given this value and
- /// arguments provided individually.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
- #[wasm_bindgen(method, catch, js_name = call)]
- pub fn call3(
- this: &Function,
- context: &JsValue,
- arg1: &JsValue,
- arg2: &JsValue,
- arg3: &JsValue,
- ) -> Result<JsValue, JsValue>;
-
- /// The `bind()` method creates a new function that, when called, has its this keyword set to the provided value,
- /// with a given sequence of arguments preceding any provided when the new function is called.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
- #[wasm_bindgen(method, js_name = bind)]
- pub fn bind(this: &Function, context: &JsValue) -> Function;
-
- /// The `bind()` method creates a new function that, when called, has its this keyword set to the provided value,
- /// with a given sequence of arguments preceding any provided when the new function is called.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
- #[wasm_bindgen(method, js_name = bind)]
- pub fn bind0(this: &Function, context: &JsValue) -> Function;
-
- /// The `bind()` method creates a new function that, when called, has its this keyword set to the provided value,
- /// with a given sequence of arguments preceding any provided when the new function is called.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
- #[wasm_bindgen(method, js_name = bind)]
- pub fn bind1(this: &Function, context: &JsValue, arg1: &JsValue) -> Function;
-
- /// The `bind()` method creates a new function that, when called, has its this keyword set to the provided value,
- /// with a given sequence of arguments preceding any provided when the new function is called.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
- #[wasm_bindgen(method, js_name = bind)]
- pub fn bind2(this: &Function, context: &JsValue, arg1: &JsValue, arg2: &JsValue) -> Function;
-
- /// The `bind()` method creates a new function that, when called, has its this keyword set to the provided value,
- /// with a given sequence of arguments preceding any provided when the new function is called.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
- #[wasm_bindgen(method, js_name = bind)]
- pub fn bind3(
- this: &Function,
- context: &JsValue,
- arg1: &JsValue,
- arg2: &JsValue,
- arg3: &JsValue,
- ) -> Function;
-
- /// The length property indicates the number of arguments expected by the function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length)
- #[wasm_bindgen(method, getter, structural)]
- pub fn length(this: &Function) -> u32;
-
- /// A Function object's read-only name property indicates the function's
- /// name as specified when it was created or "anonymous" for functions
- /// created anonymously.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name)
- #[wasm_bindgen(method, getter, structural)]
- pub fn name(this: &Function) -> JsString;
-
- /// The `toString()` method returns a string representing the source code of the function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString)
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Function) -> JsString;
-}
-
-impl Function {
- /// Returns the `Function` value of this JS value if it's an instance of a
- /// function.
- ///
- /// If this JS value is not an instance of a function then this returns
- /// `None`.
- #[deprecated(note = "recommended to use dyn_ref instead which is now equivalent")]
- pub fn try_from(val: &JsValue) -> Option<&Function> {
- val.dyn_ref()
- }
-}
-
-impl Default for Function {
- fn default() -> Self {
- Self::new_no_args("")
- }
-}
-
-// Generator
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "Generator<any, any, any>")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Generator;
-
- /// The `next()` method returns an object with two properties done and value.
- /// You can also provide a parameter to the next method to send a value to the generator.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next)
- #[wasm_bindgen(method, structural, catch)]
- pub fn next(this: &Generator, value: &JsValue) -> Result<JsValue, JsValue>;
-
- /// The `return()` method returns the given value and finishes the generator.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return)
- #[wasm_bindgen(method, structural, js_name = return)]
- pub fn return_(this: &Generator, value: &JsValue) -> JsValue;
-
- /// The `throw()` method resumes the execution of a generator by throwing an error into it
- /// and returns an object with two properties done and value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/throw)
- #[wasm_bindgen(method, structural, catch)]
- pub fn throw(this: &Generator, error: &Error) -> Result<JsValue, JsValue>;
-}
-
-// Map
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "Map<any, any>")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Map;
-
- /// The `clear()` method removes all elements from a Map object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear)
- #[wasm_bindgen(method)]
- pub fn clear(this: &Map);
-
- /// The `delete()` method removes the specified element from a Map object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete)
- #[wasm_bindgen(method)]
- pub fn delete(this: &Map, key: &JsValue) -> bool;
-
- /// The `forEach()` method executes a provided function once per each
- /// key/value pair in the Map object, in insertion order.
- /// Note that in Javascript land the `Key` and `Value` are reversed compared to normal expectations:
- /// # Examples
- /// ```
- /// let js_map = Map::new();
- /// js_map.for_each(&mut |value, key| {
- /// // Do something here...
- /// })
- /// ```
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach)
- #[wasm_bindgen(method, js_name = forEach)]
- pub fn for_each(this: &Map, callback: &mut dyn FnMut(JsValue, JsValue));
-
- /// The `get()` method returns a specified element from a Map object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get)
- #[wasm_bindgen(method)]
- pub fn get(this: &Map, key: &JsValue) -> JsValue;
-
- /// The `has()` method returns a boolean indicating whether an element with
- /// the specified key exists or not.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has)
- #[wasm_bindgen(method)]
- pub fn has(this: &Map, key: &JsValue) -> bool;
-
- /// The Map object holds key-value pairs. Any value (both objects and
- /// primitive values) maybe used as either a key or a value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
- #[wasm_bindgen(constructor)]
- pub fn new() -> Map;
-
- /// The `set()` method adds or updates an element with a specified key
- /// and value to a Map object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set)
- #[wasm_bindgen(method)]
- pub fn set(this: &Map, key: &JsValue, value: &JsValue) -> Map;
-
- /// The value of size is an integer representing how many entries
- /// the Map object has. A set accessor function for size is undefined;
- /// you can not change this property.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size)
- #[wasm_bindgen(method, getter, structural)]
- pub fn size(this: &Map) -> u32;
-}
-
-impl Default for Map {
- fn default() -> Self {
- Self::new()
- }
-}
-
-// Map Iterator
-#[wasm_bindgen]
-extern "C" {
- /// The `entries()` method returns a new Iterator object that contains
- /// the [key, value] pairs for each element in the Map object in
- /// insertion order.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries)
- #[wasm_bindgen(method)]
- pub fn entries(this: &Map) -> Iterator;
-
- /// The `keys()` method returns a new Iterator object that contains the
- /// keys for each element in the Map object in insertion order.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys)
- #[wasm_bindgen(method)]
- pub fn keys(this: &Map) -> Iterator;
-
- /// The `values()` method returns a new Iterator object that contains the
- /// values for each element in the Map object in insertion order.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values)
- #[wasm_bindgen(method)]
- pub fn values(this: &Map) -> Iterator;
-}
-
-// Iterator
-#[wasm_bindgen]
-extern "C" {
- /// Any object that conforms to the JS iterator protocol. For example,
- /// something returned by `myArray[Symbol.iterator]()`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols)
- #[derive(Clone, Debug)]
- #[wasm_bindgen(is_type_of = Iterator::looks_like_iterator, typescript_type = "Iterator<any>")]
- pub type Iterator;
-
- /// The `next()` method always has to return an object with appropriate
- /// properties including done and value. If a non-object value gets returned
- /// (such as false or undefined), a TypeError ("iterator.next() returned a
- /// non-object value") will be thrown.
- #[wasm_bindgen(catch, method, structural)]
- pub fn next(this: &Iterator) -> Result<IteratorNext, JsValue>;
-}
-
-impl Iterator {
- fn looks_like_iterator(it: &JsValue) -> bool {
- #[wasm_bindgen]
- extern "C" {
- type MaybeIterator;
-
- #[wasm_bindgen(method, getter)]
- fn next(this: &MaybeIterator) -> JsValue;
- }
-
- if !it.is_object() {
- return false;
- }
-
- let it = it.unchecked_ref::<MaybeIterator>();
-
- it.next().is_function()
- }
-}
-
-// Async Iterator
-#[wasm_bindgen]
-extern "C" {
- /// Any object that conforms to the JS async iterator protocol. For example,
- /// something returned by `myObject[Symbol.asyncIterator]()`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of)
- #[derive(Clone, Debug)]
- #[wasm_bindgen(is_type_of = Iterator::looks_like_iterator, typescript_type = "AsyncIterator<any>")]
- pub type AsyncIterator;
-
- /// The `next()` method always has to return a Promise which resolves to an object
- /// with appropriate properties including done and value. If a non-object value
- /// gets returned (such as false or undefined), a TypeError ("iterator.next()
- /// returned a non-object value") will be thrown.
- #[wasm_bindgen(catch, method, structural)]
- pub fn next(this: &AsyncIterator) -> Result<Promise, JsValue>;
-}
-
-/// An iterator over the JS `Symbol.iterator` iteration protocol.
-///
-/// Use the `IntoIterator for &js_sys::Iterator` implementation to create this.
-pub struct Iter<'a> {
- js: &'a Iterator,
- state: IterState,
-}
-
-/// An iterator over the JS `Symbol.iterator` iteration protocol.
-///
-/// Use the `IntoIterator for js_sys::Iterator` implementation to create this.
-pub struct IntoIter {
- js: Iterator,
- state: IterState,
-}
-
-struct IterState {
- done: bool,
-}
-
-impl<'a> IntoIterator for &'a Iterator {
- type Item = Result<JsValue, JsValue>;
- type IntoIter = Iter<'a>;
-
- fn into_iter(self) -> Iter<'a> {
- Iter {
- js: self,
- state: IterState::new(),
- }
- }
-}
-
-impl core::iter::Iterator for Iter<'_> {
- type Item = Result<JsValue, JsValue>;
-
- fn next(&mut self) -> Option<Self::Item> {
- self.state.next(self.js)
- }
-}
-
-impl IntoIterator for Iterator {
- type Item = Result<JsValue, JsValue>;
- type IntoIter = IntoIter;
-
- fn into_iter(self) -> IntoIter {
- IntoIter {
- js: self,
- state: IterState::new(),
- }
- }
-}
-
-impl core::iter::Iterator for IntoIter {
- type Item = Result<JsValue, JsValue>;
-
- fn next(&mut self) -> Option<Self::Item> {
- self.state.next(&self.js)
- }
-}
-
-impl IterState {
- fn new() -> IterState {
- IterState { done: false }
- }
-
- fn next(&mut self, js: &Iterator) -> Option<Result<JsValue, JsValue>> {
- if self.done {
- return None;
- }
- let next = match js.next() {
- Ok(val) => val,
- Err(e) => {
- self.done = true;
- return Some(Err(e));
- }
- };
- if next.done() {
- self.done = true;
- None
- } else {
- Some(Ok(next.value()))
- }
- }
-}
-
-/// Create an iterator over `val` using the JS iteration protocol and
-/// `Symbol.iterator`.
-pub fn try_iter(val: &JsValue) -> Result<Option<IntoIter>, JsValue> {
- let iter_sym = Symbol::iterator();
- let iter_fn = Reflect::get(val, iter_sym.as_ref())?;
-
- let iter_fn: Function = match iter_fn.dyn_into() {
- Ok(iter_fn) => iter_fn,
- Err(_) => return Ok(None),
- };
-
- let it: Iterator = match iter_fn.call0(val)?.dyn_into() {
- Ok(it) => it,
- Err(_) => return Ok(None),
- };
-
- Ok(Some(it.into_iter()))
-}
-
-// IteratorNext
-#[wasm_bindgen]
-extern "C" {
- /// The result of calling `next()` on a JS iterator.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols)
- #[wasm_bindgen(extends = Object, typescript_type = "IteratorResult<any>")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type IteratorNext;
-
- /// Has the value `true` if the iterator is past the end of the iterated
- /// sequence. In this case value optionally specifies the return value of
- /// the iterator.
- ///
- /// Has the value `false` if the iterator was able to produce the next value
- /// in the sequence. This is equivalent of not specifying the done property
- /// altogether.
- #[wasm_bindgen(method, getter, structural)]
- pub fn done(this: &IteratorNext) -> bool;
-
- /// Any JavaScript value returned by the iterator. Can be omitted when done
- /// is true.
- #[wasm_bindgen(method, getter, structural)]
- pub fn value(this: &IteratorNext) -> JsValue;
-}
-
-#[allow(non_snake_case)]
-pub mod Math {
- use super::*;
-
- // Math
- #[wasm_bindgen]
- extern "C" {
- /// The `Math.abs()` function returns the absolute value of a number, that is
- /// Math.abs(x) = |x|
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn abs(x: f64) -> f64;
-
- /// The `Math.acos()` function returns the arccosine (in radians) of a
- /// number, that is ∀x∊[-1;1]
- /// Math.acos(x) = arccos(x) = the unique y∊[0;π] such that cos(y)=x
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn acos(x: f64) -> f64;
-
- /// The `Math.acosh()` function returns the hyperbolic arc-cosine of a
- /// number, that is ∀x ≥ 1
- /// Math.acosh(x) = arcosh(x) = the unique y ≥ 0 such that cosh(y) = x
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acosh)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn acosh(x: f64) -> f64;
-
- /// The `Math.asin()` function returns the arcsine (in radians) of a
- /// number, that is ∀x ∊ [-1;1]
- /// Math.asin(x) = arcsin(x) = the unique y∊[-π2;π2] such that sin(y) = x
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn asin(x: f64) -> f64;
-
- /// The `Math.asinh()` function returns the hyperbolic arcsine of a
- /// number, that is Math.asinh(x) = arsinh(x) = the unique y such that sinh(y) = x
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asinh)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn asinh(x: f64) -> f64;
-
- /// The `Math.atan()` function returns the arctangent (in radians) of a
- /// number, that is Math.atan(x) = arctan(x) = the unique y ∊ [-π2;π2]such that
- /// tan(y) = x
- #[wasm_bindgen(js_namespace = Math)]
- pub fn atan(x: f64) -> f64;
-
- /// The `Math.atan2()` function returns the arctangent of the quotient of
- /// its arguments.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn atan2(y: f64, x: f64) -> f64;
-
- /// The `Math.atanh()` function returns the hyperbolic arctangent of a number,
- /// that is ∀x ∊ (-1,1), Math.atanh(x) = arctanh(x) = the unique y such that
- /// tanh(y) = x
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atanh)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn atanh(x: f64) -> f64;
-
- /// The `Math.cbrt() `function returns the cube root of a number, that is
- /// Math.cbrt(x) = ∛x = the unique y such that y^3 = x
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cbrt)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn cbrt(x: f64) -> f64;
-
- /// The `Math.ceil()` function returns the smallest integer greater than
- /// or equal to a given number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn ceil(x: f64) -> f64;
-
- /// The `Math.clz32()` function returns the number of leading zero bits in
- /// the 32-bit binary representation of a number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn clz32(x: i32) -> u32;
-
- /// The `Math.cos()` static function returns the cosine of the specified angle,
- /// which must be specified in radians. This value is length(adjacent)/length(hypotenuse).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn cos(x: f64) -> f64;
-
- /// The `Math.cosh()` function returns the hyperbolic cosine of a number,
- /// that can be expressed using the constant e.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cosh)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn cosh(x: f64) -> f64;
-
- /// The `Math.exp()` function returns e^x, where x is the argument, and e is Euler's number
- /// (also known as Napier's constant), the base of the natural logarithms.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn exp(x: f64) -> f64;
-
- /// The `Math.expm1()` function returns e^x - 1, where x is the argument, and e the base of the
- /// natural logarithms.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/expm1)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn expm1(x: f64) -> f64;
-
- /// The `Math.floor()` function returns the largest integer less than or
- /// equal to a given number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn floor(x: f64) -> f64;
-
- /// The `Math.fround()` function returns the nearest 32-bit single precision float representation
- /// of a Number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn fround(x: f64) -> f32;
-
- /// The `Math.hypot()` function returns the square root of the sum of squares of its arguments.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn hypot(x: f64, y: f64) -> f64;
-
- /// The `Math.imul()` function returns the result of the C-like 32-bit multiplication of the
- /// two parameters.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn imul(x: i32, y: i32) -> i32;
-
- /// The `Math.log()` function returns the natural logarithm (base e) of a number.
- /// The JavaScript `Math.log()` function is equivalent to ln(x) in mathematics.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn log(x: f64) -> f64;
-
- /// The `Math.log10()` function returns the base 10 logarithm of a number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn log10(x: f64) -> f64;
-
- /// The `Math.log1p()` function returns the natural logarithm (base e) of 1 + a number.
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn log1p(x: f64) -> f64;
-
- /// The `Math.log2()` function returns the base 2 logarithm of a number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn log2(x: f64) -> f64;
-
- /// The `Math.max()` function returns the largest of two numbers.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn max(x: f64, y: f64) -> f64;
-
- /// The static function `Math.min()` returns the lowest-valued number passed into it.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn min(x: f64, y: f64) -> f64;
-
- /// The `Math.pow()` function returns the base to the exponent power, that is, base^exponent.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn pow(base: f64, exponent: f64) -> f64;
-
- /// The `Math.random()` function returns a floating-point, pseudo-random number
- /// in the range 0–1 (inclusive of 0, but not 1) with approximately uniform distribution
- /// over that range — which you can then scale to your desired range.
- /// The implementation selects the initial seed to the random number generation algorithm;
- /// it cannot be chosen or reset by the user.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn random() -> f64;
-
- /// The `Math.round()` function returns the value of a number rounded to the nearest integer.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn round(x: f64) -> f64;
-
- /// The `Math.sign()` function returns the sign of a number, indicating whether the number is
- /// positive, negative or zero.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn sign(x: f64) -> f64;
-
- /// The `Math.sin()` function returns the sine of a number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sin)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn sin(x: f64) -> f64;
-
- /// The `Math.sinh()` function returns the hyperbolic sine of a number, that can be expressed
- /// using the constant e: Math.sinh(x) = (e^x - e^-x)/2
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sinh)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn sinh(x: f64) -> f64;
-
- /// The `Math.sqrt()` function returns the square root of a number, that is
- /// ∀x ≥ 0, Math.sqrt(x) = √x = the unique y ≥ 0 such that y^2 = x
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn sqrt(x: f64) -> f64;
-
- /// The `Math.tan()` function returns the tangent of a number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tan)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn tan(x: f64) -> f64;
-
- /// The `Math.tanh()` function returns the hyperbolic tangent of a number, that is
- /// tanh x = sinh x / cosh x = (e^x - e^-x)/(e^x + e^-x) = (e^2x - 1)/(e^2x + 1)
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tanh)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn tanh(x: f64) -> f64;
-
- /// The `Math.trunc()` function returns the integer part of a number by removing any fractional
- /// digits.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc)
- #[wasm_bindgen(js_namespace = Math)]
- pub fn trunc(x: f64) -> f64;
- }
-}
-
-// Number.
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, is_type_of = |v| v.as_f64().is_some(), typescript_type = "number")]
- #[derive(Clone, PartialEq)]
- pub type Number;
-
- /// The `Number.isFinite()` method determines whether the passed value is a finite number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite)
- #[wasm_bindgen(static_method_of = Number, js_name = isFinite)]
- pub fn is_finite(value: &JsValue) -> bool;
-
- /// The `Number.isInteger()` method determines whether the passed value is an integer.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger)
- #[wasm_bindgen(static_method_of = Number, js_name = isInteger)]
- pub fn is_integer(value: &JsValue) -> bool;
-
- /// The `Number.isNaN()` method determines whether the passed value is `NaN` and its type is Number.
- /// It is a more robust version of the original, global isNaN().
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN)
- #[wasm_bindgen(static_method_of = Number, js_name = isNaN)]
- pub fn is_nan(value: &JsValue) -> bool;
-
- /// The `Number.isSafeInteger()` method determines whether the provided value is a number
- /// that is a safe integer.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger)
- #[wasm_bindgen(static_method_of = Number, js_name = isSafeInteger)]
- pub fn is_safe_integer(value: &JsValue) -> bool;
-
- /// The `Number` JavaScript object is a wrapper object allowing
- /// you to work with numerical values. A `Number` object is
- /// created using the `Number()` constructor.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)
- #[wasm_bindgen(constructor)]
- #[deprecated(note = "recommended to use `Number::from` instead")]
- #[allow(deprecated)]
- pub fn new(value: &JsValue) -> Number;
-
- #[wasm_bindgen(constructor)]
- fn new_from_str(value: &str) -> Number;
-
- /// The `Number.parseInt()` method parses a string argument and returns an
- /// integer of the specified radix or base.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt)
- #[wasm_bindgen(static_method_of = Number, js_name = parseInt)]
- pub fn parse_int(text: &str, radix: u8) -> f64;
-
- /// The `Number.parseFloat()` method parses a string argument and returns a
- /// floating point number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat)
- #[wasm_bindgen(static_method_of = Number, js_name = parseFloat)]
- pub fn parse_float(text: &str) -> f64;
-
- /// The `toLocaleString()` method returns a string with a language sensitive
- /// representation of this number.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString)
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &Number, locale: &str) -> JsString;
-
- /// The `toPrecision()` method returns a string representing the Number
- /// object to the specified precision.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision)
- #[wasm_bindgen(catch, method, js_name = toPrecision)]
- pub fn to_precision(this: &Number, precision: u8) -> Result<JsString, JsValue>;
-
- /// The `toFixed()` method returns a string representing the Number
- /// object using fixed-point notation.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)
- #[wasm_bindgen(catch, method, js_name = toFixed)]
- pub fn to_fixed(this: &Number, digits: u8) -> Result<JsString, JsValue>;
-
- /// The `toExponential()` method returns a string representing the Number
- /// object in exponential notation.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential)
- #[wasm_bindgen(catch, method, js_name = toExponential)]
- pub fn to_exponential(this: &Number, fraction_digits: u8) -> Result<JsString, JsValue>;
-
- /// The `toString()` method returns a string representing the
- /// specified Number object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString)
- #[wasm_bindgen(catch, method, js_name = toString)]
- pub fn to_string(this: &Number, radix: u8) -> Result<JsString, JsValue>;
-
- /// The `valueOf()` method returns the wrapped primitive value of
- /// a Number object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/valueOf)
- #[wasm_bindgen(method, js_name = valueOf)]
- pub fn value_of(this: &Number) -> f64;
-}
-
-impl Number {
- /// The smallest interval between two representable numbers.
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON)
- pub const EPSILON: f64 = f64::EPSILON;
- /// The maximum safe integer in JavaScript (2^53 - 1).
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)
- pub const MAX_SAFE_INTEGER: f64 = 9007199254740991.0;
- /// The largest positive representable number.
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE)
- pub const MAX_VALUE: f64 = f64::MAX;
- /// The minimum safe integer in JavaScript (-(2^53 - 1)).
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER)
- pub const MIN_SAFE_INTEGER: f64 = -9007199254740991.0;
- /// The smallest positive representable number—that is, the positive number closest to zero
- /// (without actually being zero).
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE)
- // Cannot use f64::MIN_POSITIVE since that is the smallest **normal** positive number.
- pub const MIN_VALUE: f64 = 5E-324;
- /// Special "Not a Number" value.
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN)
- pub const NAN: f64 = f64::NAN;
- /// Special value representing negative infinity. Returned on overflow.
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY)
- pub const NEGATIVE_INFINITY: f64 = f64::NEG_INFINITY;
- /// Special value representing infinity. Returned on overflow.
- ///
- /// [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY)
- pub const POSITIVE_INFINITY: f64 = f64::INFINITY;
-
- /// Applies the binary `**` JS operator on the two `Number`s.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Exponentiation)
- #[inline]
- pub fn pow(&self, rhs: &Self) -> Self {
- JsValue::as_ref(self)
- .pow(JsValue::as_ref(rhs))
- .unchecked_into()
- }
-
- /// Applies the binary `>>>` JS operator on the two `Number`s.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift)
- #[inline]
- pub fn unsigned_shr(&self, rhs: &Self) -> Self {
- Number::from(JsValue::as_ref(self).unsigned_shr(JsValue::as_ref(rhs)))
- }
-}
-
-macro_rules! number_from {
- ($($x:ident)*) => ($(
- impl From<$x> for Number {
- #[inline]
- fn from(x: $x) -> Number {
- Number::unchecked_from_js(JsValue::from(x))
- }
- }
-
- impl PartialEq<$x> for Number {
- #[inline]
- fn eq(&self, other: &$x) -> bool {
- self.value_of() == f64::from(*other)
- }
- }
- )*)
-}
-number_from!(i8 u8 i16 u16 i32 u32 f32 f64);
-
-/// The error type returned when a checked integral type conversion fails.
-#[derive(Debug, Copy, Clone, PartialEq, Eq)]
-pub struct TryFromIntError(());
-
-impl fmt::Display for TryFromIntError {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt.write_str("out of range integral type conversion attempted")
- }
-}
-
-#[cfg(feature = "std")]
-impl std::error::Error for TryFromIntError {}
-
-macro_rules! number_try_from {
- ($($x:ident)*) => ($(
- impl TryFrom<$x> for Number {
- type Error = TryFromIntError;
-
- #[inline]
- fn try_from(x: $x) -> Result<Number, Self::Error> {
- let x_f64 = x as f64;
- if (Number::MIN_SAFE_INTEGER..=Number::MAX_SAFE_INTEGER).contains(&x_f64) {
- Ok(Number::from(x_f64))
- } else {
- Err(TryFromIntError(()))
- }
- }
- }
- )*)
-}
-number_try_from!(i64 u64 i128 u128);
-
-// TODO: add this on the next major version, when blanket impl is removed
-/*
-impl convert::TryFrom<JsValue> for Number {
- type Error = Error;
-
- fn try_from(value: JsValue) -> Result<Self, Self::Error> {
- return match f64::try_from(value) {
- Ok(num) => Ok(Number::from(num)),
- Err(jsval) => Err(jsval.unchecked_into())
- }
- }
-}
-*/
-
-impl From<&Number> for f64 {
- #[inline]
- fn from(n: &Number) -> f64 {
- n.value_of()
- }
-}
-
-impl From<Number> for f64 {
- #[inline]
- fn from(n: Number) -> f64 {
- <f64 as From<&'_ Number>>::from(&n)
- }
-}
-
-impl fmt::Debug for Number {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Debug::fmt(&self.value_of(), f)
- }
-}
-
-impl fmt::Display for Number {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Display::fmt(&self.value_of(), f)
- }
-}
-
-impl Default for Number {
- fn default() -> Self {
- Self::from(f64::default())
- }
-}
-
-impl PartialEq<BigInt> for Number {
- #[inline]
- fn eq(&self, other: &BigInt) -> bool {
- JsValue::as_ref(self).loose_eq(JsValue::as_ref(other))
- }
-}
-
-impl Not for &Number {
- type Output = BigInt;
-
- #[inline]
- fn not(self) -> Self::Output {
- JsValue::as_ref(self).bit_not().unchecked_into()
- }
-}
-
-forward_deref_unop!(impl Not, not for Number);
-forward_js_unop!(impl Neg, neg for Number);
-forward_js_binop!(impl BitAnd, bitand for Number);
-forward_js_binop!(impl BitOr, bitor for Number);
-forward_js_binop!(impl BitXor, bitxor for Number);
-forward_js_binop!(impl Shl, shl for Number);
-forward_js_binop!(impl Shr, shr for Number);
-forward_js_binop!(impl Add, add for Number);
-forward_js_binop!(impl Sub, sub for Number);
-forward_js_binop!(impl Div, div for Number);
-forward_js_binop!(impl Mul, mul for Number);
-forward_js_binop!(impl Rem, rem for Number);
-
-sum_product!(Number);
-
-impl PartialOrd for Number {
- #[inline]
- fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- if Number::is_nan(self) || Number::is_nan(other) {
- None
- } else if self == other {
- Some(Ordering::Equal)
- } else if self.lt(other) {
- Some(Ordering::Less)
- } else {
- Some(Ordering::Greater)
- }
- }
-
- #[inline]
- fn lt(&self, other: &Self) -> bool {
- JsValue::as_ref(self).lt(JsValue::as_ref(other))
- }
-
- #[inline]
- fn le(&self, other: &Self) -> bool {
- JsValue::as_ref(self).le(JsValue::as_ref(other))
- }
-
- #[inline]
- fn ge(&self, other: &Self) -> bool {
- JsValue::as_ref(self).ge(JsValue::as_ref(other))
- }
-
- #[inline]
- fn gt(&self, other: &Self) -> bool {
- JsValue::as_ref(self).gt(JsValue::as_ref(other))
- }
-}
-
-impl FromStr for Number {
- type Err = Infallible;
-
- #[allow(deprecated)]
- #[inline]
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- Ok(Number::new_from_str(s))
- }
-}
-
-// Date.
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "Date")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Date;
-
- /// The `getDate()` method returns the day of the month for the
- /// specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate)
- #[wasm_bindgen(method, js_name = getDate)]
- pub fn get_date(this: &Date) -> u32;
-
- /// The `getDay()` method returns the day of the week for the specified date according to local time,
- /// where 0 represents Sunday. For the day of the month see getDate().
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay)
- #[wasm_bindgen(method, js_name = getDay)]
- pub fn get_day(this: &Date) -> u32;
-
- /// The `getFullYear()` method returns the year of the specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear)
- #[wasm_bindgen(method, js_name = getFullYear)]
- pub fn get_full_year(this: &Date) -> u32;
-
- /// The `getHours()` method returns the hour for the specified date, according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours)
- #[wasm_bindgen(method, js_name = getHours)]
- pub fn get_hours(this: &Date) -> u32;
-
- /// The `getMilliseconds()` method returns the milliseconds in the specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds)
- #[wasm_bindgen(method, js_name = getMilliseconds)]
- pub fn get_milliseconds(this: &Date) -> u32;
-
- /// The `getMinutes()` method returns the minutes in the specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMinutes)
- #[wasm_bindgen(method, js_name = getMinutes)]
- pub fn get_minutes(this: &Date) -> u32;
-
- /// The `getMonth()` method returns the month in the specified date according to local time,
- /// as a zero-based value (where zero indicates the first month of the year).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth)
- #[wasm_bindgen(method, js_name = getMonth)]
- pub fn get_month(this: &Date) -> u32;
-
- /// The `getSeconds()` method returns the seconds in the specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getSeconds)
- #[wasm_bindgen(method, js_name = getSeconds)]
- pub fn get_seconds(this: &Date) -> u32;
-
- /// The `getTime()` method returns the numeric value corresponding to the time for the specified date
- /// according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)
- #[wasm_bindgen(method, js_name = getTime)]
- pub fn get_time(this: &Date) -> f64;
-
- /// The `getTimezoneOffset()` method returns the time zone difference, in minutes,
- /// from current locale (host system settings) to UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)
- #[wasm_bindgen(method, js_name = getTimezoneOffset)]
- pub fn get_timezone_offset(this: &Date) -> f64;
-
- /// The `getUTCDate()` method returns the day (date) of the month in the specified date
- /// according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDate)
- #[wasm_bindgen(method, js_name = getUTCDate)]
- pub fn get_utc_date(this: &Date) -> u32;
-
- /// The `getUTCDay()` method returns the day of the week in the specified date according to universal time,
- /// where 0 represents Sunday.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDay)
- #[wasm_bindgen(method, js_name = getUTCDay)]
- pub fn get_utc_day(this: &Date) -> u32;
-
- /// The `getUTCFullYear()` method returns the year in the specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear)
- #[wasm_bindgen(method, js_name = getUTCFullYear)]
- pub fn get_utc_full_year(this: &Date) -> u32;
-
- /// The `getUTCHours()` method returns the hours in the specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours)
- #[wasm_bindgen(method, js_name = getUTCHours)]
- pub fn get_utc_hours(this: &Date) -> u32;
-
- /// The `getUTCMilliseconds()` method returns the milliseconds in the specified date
- /// according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds)
- #[wasm_bindgen(method, js_name = getUTCMilliseconds)]
- pub fn get_utc_milliseconds(this: &Date) -> u32;
-
- /// The `getUTCMinutes()` method returns the minutes in the specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes)
- #[wasm_bindgen(method, js_name = getUTCMinutes)]
- pub fn get_utc_minutes(this: &Date) -> u32;
-
- /// The `getUTCMonth()` returns the month of the specified date according to universal time,
- /// as a zero-based value (where zero indicates the first month of the year).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth)
- #[wasm_bindgen(method, js_name = getUTCMonth)]
- pub fn get_utc_month(this: &Date) -> u32;
-
- /// The `getUTCSeconds()` method returns the seconds in the specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds)
- #[wasm_bindgen(method, js_name = getUTCSeconds)]
- pub fn get_utc_seconds(this: &Date) -> u32;
-
- /// Creates a JavaScript `Date` instance that represents
- /// a single moment in time. `Date` objects are based on a time value that is
- /// the number of milliseconds since 1 January 1970 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new(init: &JsValue) -> Date;
-
- /// Creates a JavaScript `Date` instance that represents the current moment in
- /// time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new_0() -> Date;
-
- /// Creates a JavaScript `Date` instance that represents
- /// a single moment in time. `Date` objects are based on a time value that is
- /// the number of milliseconds since 1 January 1970 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new_with_year_month(year: u32, month: i32) -> Date;
-
- /// Creates a JavaScript `Date` instance that represents
- /// a single moment in time. `Date` objects are based on a time value that is
- /// the number of milliseconds since 1 January 1970 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new_with_year_month_day(year: u32, month: i32, day: i32) -> Date;
-
- /// Creates a JavaScript `Date` instance that represents
- /// a single moment in time. `Date` objects are based on a time value that is
- /// the number of milliseconds since 1 January 1970 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new_with_year_month_day_hr(year: u32, month: i32, day: i32, hr: i32) -> Date;
-
- /// Creates a JavaScript `Date` instance that represents
- /// a single moment in time. `Date` objects are based on a time value that is
- /// the number of milliseconds since 1 January 1970 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new_with_year_month_day_hr_min(
- year: u32,
- month: i32,
- day: i32,
- hr: i32,
- min: i32,
- ) -> Date;
-
- /// Creates a JavaScript `Date` instance that represents
- /// a single moment in time. `Date` objects are based on a time value that is
- /// the number of milliseconds since 1 January 1970 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new_with_year_month_day_hr_min_sec(
- year: u32,
- month: i32,
- day: i32,
- hr: i32,
- min: i32,
- sec: i32,
- ) -> Date;
-
- /// Creates a JavaScript `Date` instance that represents
- /// a single moment in time. `Date` objects are based on a time value that is
- /// the number of milliseconds since 1 January 1970 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)
- #[wasm_bindgen(constructor)]
- pub fn new_with_year_month_day_hr_min_sec_milli(
- year: u32,
- month: i32,
- day: i32,
- hr: i32,
- min: i32,
- sec: i32,
- milli: i32,
- ) -> Date;
-
- /// The `Date.now()` method returns the number of milliseconds
- /// elapsed since January 1, 1970 00:00:00 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now)
- #[wasm_bindgen(static_method_of = Date)]
- pub fn now() -> f64;
-
- /// The `Date.parse()` method parses a string representation of a date, and returns the number of milliseconds
- /// since January 1, 1970, 00:00:00 UTC or `NaN` if the string is unrecognized or, in some cases,
- /// contains illegal date values (e.g. 2015-02-31).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse)
- #[wasm_bindgen(static_method_of = Date)]
- pub fn parse(date: &str) -> f64;
-
- /// The `setDate()` method sets the day of the Date object relative to the beginning of the currently set month.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate)
- #[wasm_bindgen(method, js_name = setDate)]
- pub fn set_date(this: &Date, day: u32) -> f64;
-
- /// The `setFullYear()` method sets the full year for a specified date according to local time.
- /// Returns new timestamp.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear)
- #[wasm_bindgen(method, js_name = setFullYear)]
- pub fn set_full_year(this: &Date, year: u32) -> f64;
-
- /// The `setFullYear()` method sets the full year for a specified date according to local time.
- /// Returns new timestamp.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear)
- #[wasm_bindgen(method, js_name = setFullYear)]
- pub fn set_full_year_with_month(this: &Date, year: u32, month: i32) -> f64;
-
- /// The `setFullYear()` method sets the full year for a specified date according to local time.
- /// Returns new timestamp.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear)
- #[wasm_bindgen(method, js_name = setFullYear)]
- pub fn set_full_year_with_month_date(this: &Date, year: u32, month: i32, date: i32) -> f64;
-
- /// The `setHours()` method sets the hours for a specified date according to local time,
- /// and returns the number of milliseconds since January 1, 1970 00:00:00 UTC until the time represented
- /// by the updated Date instance.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours)
- #[wasm_bindgen(method, js_name = setHours)]
- pub fn set_hours(this: &Date, hours: u32) -> f64;
-
- /// The `setMilliseconds()` method sets the milliseconds for a specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds)
- #[wasm_bindgen(method, js_name = setMilliseconds)]
- pub fn set_milliseconds(this: &Date, milliseconds: u32) -> f64;
-
- /// The `setMinutes()` method sets the minutes for a specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMinutes)
- #[wasm_bindgen(method, js_name = setMinutes)]
- pub fn set_minutes(this: &Date, minutes: u32) -> f64;
-
- /// The `setMonth()` method sets the month for a specified date according to the currently set year.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth)
- #[wasm_bindgen(method, js_name = setMonth)]
- pub fn set_month(this: &Date, month: u32) -> f64;
-
- /// The `setSeconds()` method sets the seconds for a specified date according to local time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setSeconds)
- #[wasm_bindgen(method, js_name = setSeconds)]
- pub fn set_seconds(this: &Date, seconds: u32) -> f64;
-
- /// The `setTime()` method sets the Date object to the time represented by a number of milliseconds
- /// since January 1, 1970, 00:00:00 UTC.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setTime)
- #[wasm_bindgen(method, js_name = setTime)]
- pub fn set_time(this: &Date, time: f64) -> f64;
-
- /// The `setUTCDate()` method sets the day of the month for a specified date
- /// according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCDate)
- #[wasm_bindgen(method, js_name = setUTCDate)]
- pub fn set_utc_date(this: &Date, day: u32) -> f64;
-
- /// The `setUTCFullYear()` method sets the full year for a specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear)
- #[wasm_bindgen(method, js_name = setUTCFullYear)]
- pub fn set_utc_full_year(this: &Date, year: u32) -> f64;
-
- /// The `setUTCFullYear()` method sets the full year for a specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear)
- #[wasm_bindgen(method, js_name = setUTCFullYear)]
- pub fn set_utc_full_year_with_month(this: &Date, year: u32, month: i32) -> f64;
-
- /// The `setUTCFullYear()` method sets the full year for a specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear)
- #[wasm_bindgen(method, js_name = setUTCFullYear)]
- pub fn set_utc_full_year_with_month_date(this: &Date, year: u32, month: i32, date: i32) -> f64;
-
- /// The `setUTCHours()` method sets the hour for a specified date according to universal time,
- /// and returns the number of milliseconds since January 1, 1970 00:00:00 UTC until the time
- /// represented by the updated Date instance.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours)
- #[wasm_bindgen(method, js_name = setUTCHours)]
- pub fn set_utc_hours(this: &Date, hours: u32) -> f64;
-
- /// The `setUTCMilliseconds()` method sets the milliseconds for a specified date
- /// according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds)
- #[wasm_bindgen(method, js_name = setUTCMilliseconds)]
- pub fn set_utc_milliseconds(this: &Date, milliseconds: u32) -> f64;
-
- /// The `setUTCMinutes()` method sets the minutes for a specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes)
- #[wasm_bindgen(method, js_name = setUTCMinutes)]
- pub fn set_utc_minutes(this: &Date, minutes: u32) -> f64;
-
- /// The `setUTCMonth()` method sets the month for a specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth)
- #[wasm_bindgen(method, js_name = setUTCMonth)]
- pub fn set_utc_month(this: &Date, month: u32) -> f64;
-
- /// The `setUTCSeconds()` method sets the seconds for a specified date according to universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds)
- #[wasm_bindgen(method, js_name = setUTCSeconds)]
- pub fn set_utc_seconds(this: &Date, seconds: u32) -> f64;
-
- /// The `toDateString()` method returns the date portion of a Date object
- /// in human readable form in American English.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString)
- #[wasm_bindgen(method, js_name = toDateString)]
- pub fn to_date_string(this: &Date) -> JsString;
-
- /// The `toISOString()` method returns a string in simplified extended ISO format (ISO
- /// 8601), which is always 24 or 27 characters long (YYYY-MM-DDTHH:mm:ss.sssZ or
- /// ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectively). The timezone is always zero UTC offset,
- /// as denoted by the suffix "Z"
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
- #[wasm_bindgen(method, js_name = toISOString)]
- pub fn to_iso_string(this: &Date) -> JsString;
-
- /// The `toJSON()` method returns a string representation of the Date object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON)
- #[wasm_bindgen(method, js_name = toJSON)]
- pub fn to_json(this: &Date) -> JsString;
-
- /// The `toLocaleDateString()` method returns a string with a language sensitive
- /// representation of the date portion of this date. The new locales and options
- /// arguments let applications specify the language whose formatting conventions
- /// should be used and allow to customize the behavior of the function.
- /// In older implementations, which ignore the locales and options arguments,
- /// the locale used and the form of the string
- /// returned are entirely implementation dependent.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString)
- #[wasm_bindgen(method, js_name = toLocaleDateString)]
- pub fn to_locale_date_string(this: &Date, locale: &str, options: &JsValue) -> JsString;
-
- /// The `toLocaleString()` method returns a string with a language sensitive
- /// representation of this date. The new locales and options arguments
- /// let applications specify the language whose formatting conventions
- /// should be used and customize the behavior of the function.
- /// In older implementations, which ignore the locales
- /// and options arguments, the locale used and the form of the string
- /// returned are entirely implementation dependent.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString)
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &Date, locale: &str, options: &JsValue) -> JsString;
-
- /// The `toLocaleTimeString()` method returns a string with a language sensitive
- /// representation of the time portion of this date. The new locales and options
- /// arguments let applications specify the language whose formatting conventions should be
- /// used and customize the behavior of the function. In older implementations, which ignore
- /// the locales and options arguments, the locale used and the form of the string
- /// returned are entirely implementation dependent.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString)
- #[wasm_bindgen(method, js_name = toLocaleTimeString)]
- pub fn to_locale_time_string(this: &Date, locale: &str) -> JsString;
-
- #[wasm_bindgen(method, js_name = toLocaleTimeString)]
- pub fn to_locale_time_string_with_options(
- this: &Date,
- locale: &str,
- options: &JsValue,
- ) -> JsString;
-
- /// The `toString()` method returns a string representing
- /// the specified Date object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toString)
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Date) -> JsString;
-
- /// The `toTimeString()` method returns the time portion of a Date object in human
- /// readable form in American English.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString)
- #[wasm_bindgen(method, js_name = toTimeString)]
- pub fn to_time_string(this: &Date) -> JsString;
-
- /// The `toUTCString()` method converts a date to a string,
- /// using the UTC time zone.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString)
- #[wasm_bindgen(method, js_name = toUTCString)]
- pub fn to_utc_string(this: &Date) -> JsString;
-
- /// The `Date.UTC()` method accepts the same parameters as the
- /// longest form of the constructor, and returns the number of
- /// milliseconds in a `Date` object since January 1, 1970,
- /// 00:00:00, universal time.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC)
- #[wasm_bindgen(static_method_of = Date, js_name = UTC)]
- pub fn utc(year: f64, month: f64) -> f64;
-
- /// The `valueOf()` method returns the primitive value of
- /// a Date object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf)
- #[wasm_bindgen(method, js_name = valueOf)]
- pub fn value_of(this: &Date) -> f64;
-}
-
-// Object.
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(typescript_type = "object")]
- #[derive(Clone, Debug)]
- pub type Object;
-
- /// The `Object.assign()` method is used to copy the values of all enumerable
- /// own properties from one or more source objects to a target object. It
- /// will return the target object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn assign(target: &Object, source: &Object) -> Object;
-
- /// The `Object.assign()` method is used to copy the values of all enumerable
- /// own properties from one or more source objects to a target object. It
- /// will return the target object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
- #[wasm_bindgen(static_method_of = Object, js_name = assign)]
- pub fn assign2(target: &Object, source1: &Object, source2: &Object) -> Object;
-
- /// The `Object.assign()` method is used to copy the values of all enumerable
- /// own properties from one or more source objects to a target object. It
- /// will return the target object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
- #[wasm_bindgen(static_method_of = Object, js_name = assign)]
- pub fn assign3(target: &Object, source1: &Object, source2: &Object, source3: &Object)
- -> Object;
-
- /// The constructor property returns a reference to the `Object` constructor
- /// function that created the instance object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor)
- #[wasm_bindgen(method, getter)]
- pub fn constructor(this: &Object) -> Function;
-
- /// The `Object.create()` method creates a new object, using an existing
- /// object to provide the newly created object's prototype.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn create(prototype: &Object) -> Object;
-
- /// The static method `Object.defineProperty()` defines a new
- /// property directly on an object, or modifies an existing
- /// property on an object, and returns the object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty)
- #[wasm_bindgen(static_method_of = Object, js_name = defineProperty)]
- pub fn define_property(obj: &Object, prop: &JsValue, descriptor: &Object) -> Object;
-
- /// The `Object.defineProperties()` method defines new or modifies
- /// existing properties directly on an object, returning the
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties)
- #[wasm_bindgen(static_method_of = Object, js_name = defineProperties)]
- pub fn define_properties(obj: &Object, props: &Object) -> Object;
-
- /// The `Object.entries()` method returns an array of a given
- /// object's own enumerable property [key, value] pairs, in the
- /// same order as that provided by a for...in loop (the difference
- /// being that a for-in loop enumerates properties in the
- /// prototype chain as well).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn entries(object: &Object) -> Array;
-
- /// The `Object.freeze()` method freezes an object: that is, prevents new
- /// properties from being added to it; prevents existing properties from
- /// being removed; and prevents existing properties, or their enumerability,
- /// configurability, or writability, from being changed, it also prevents
- /// the prototype from being changed. The method returns the passed object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn freeze(value: &Object) -> Object;
-
- /// The `Object.fromEntries()` method transforms a list of key-value pairs
- /// into an object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries)
- #[wasm_bindgen(static_method_of = Object, catch, js_name = fromEntries)]
- pub fn from_entries(iterable: &JsValue) -> Result<Object, JsValue>;
-
- /// The `Object.getOwnPropertyDescriptor()` method returns a
- /// property descriptor for an own property (that is, one directly
- /// present on an object and not in the object's prototype chain)
- /// of a given object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor)
- #[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertyDescriptor)]
- pub fn get_own_property_descriptor(obj: &Object, prop: &JsValue) -> JsValue;
-
- /// The `Object.getOwnPropertyDescriptors()` method returns all own
- /// property descriptors of a given object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors)
- #[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertyDescriptors)]
- pub fn get_own_property_descriptors(obj: &Object) -> JsValue;
-
- /// The `Object.getOwnPropertyNames()` method returns an array of
- /// all properties (including non-enumerable properties except for
- /// those which use Symbol) found directly upon a given object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames)
- #[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertyNames)]
- pub fn get_own_property_names(obj: &Object) -> Array;
-
- /// The `Object.getOwnPropertySymbols()` method returns an array of
- /// all symbol properties found directly upon a given object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols)
- #[wasm_bindgen(static_method_of = Object, js_name = getOwnPropertySymbols)]
- pub fn get_own_property_symbols(obj: &Object) -> Array;
-
- /// The `Object.getPrototypeOf()` method returns the prototype
- /// (i.e. the value of the internal [[Prototype]] property) of the
- /// specified object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf)
- #[wasm_bindgen(static_method_of = Object, js_name = getPrototypeOf)]
- pub fn get_prototype_of(obj: &JsValue) -> Object;
-
- /// The `hasOwnProperty()` method returns a boolean indicating whether the
- /// object has the specified property as its own property (as opposed to
- /// inheriting it).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)
- #[wasm_bindgen(method, js_name = hasOwnProperty)]
- pub fn has_own_property(this: &Object, property: &JsValue) -> bool;
-
- /// The `Object.hasOwn()` method returns a boolean indicating whether the
- /// object passed in has the specified property as its own property (as
- /// opposed to inheriting it).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn)
- #[wasm_bindgen(static_method_of = Object, js_name = hasOwn)]
- pub fn has_own(instance: &Object, property: &JsValue) -> bool;
-
- /// The `Object.is()` method determines whether two values are the same value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn is(value_1: &JsValue, value_2: &JsValue) -> bool;
-
- /// The `Object.isExtensible()` method determines if an object is extensible
- /// (whether it can have new properties added to it).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible)
- #[wasm_bindgen(static_method_of = Object, js_name = isExtensible)]
- pub fn is_extensible(object: &Object) -> bool;
-
- /// The `Object.isFrozen()` determines if an object is frozen.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen)
- #[wasm_bindgen(static_method_of = Object, js_name = isFrozen)]
- pub fn is_frozen(object: &Object) -> bool;
-
- /// The `Object.isSealed()` method determines if an object is sealed.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed)
- #[wasm_bindgen(static_method_of = Object, js_name = isSealed)]
- pub fn is_sealed(object: &Object) -> bool;
-
- /// The `isPrototypeOf()` method checks if an object exists in another
- /// object's prototype chain.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf)
- #[wasm_bindgen(method, js_name = isPrototypeOf)]
- pub fn is_prototype_of(this: &Object, value: &JsValue) -> bool;
-
- /// The `Object.keys()` method returns an array of a given object's property
- /// names, in the same order as we get with a normal loop.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn keys(object: &Object) -> Array;
-
- /// The [`Object`] constructor creates an object wrapper.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
- #[wasm_bindgen(constructor)]
- pub fn new() -> Object;
-
- /// The `Object.preventExtensions()` method prevents new properties from
- /// ever being added to an object (i.e. prevents future extensions to the
- /// object).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions)
- #[wasm_bindgen(static_method_of = Object, js_name = preventExtensions)]
- pub fn prevent_extensions(object: &Object);
-
- /// The `propertyIsEnumerable()` method returns a Boolean indicating
- /// whether the specified property is enumerable.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable)
- #[wasm_bindgen(method, js_name = propertyIsEnumerable)]
- pub fn property_is_enumerable(this: &Object, property: &JsValue) -> bool;
-
- /// The `Object.seal()` method seals an object, preventing new properties
- /// from being added to it and marking all existing properties as
- /// non-configurable. Values of present properties can still be changed as
- /// long as they are writable.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn seal(value: &Object) -> Object;
-
- /// The `Object.setPrototypeOf()` method sets the prototype (i.e., the
- /// internal `[[Prototype]]` property) of a specified object to another
- /// object or `null`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf)
- #[wasm_bindgen(static_method_of = Object, js_name = setPrototypeOf)]
- pub fn set_prototype_of(object: &Object, prototype: &Object) -> Object;
-
- /// The `toLocaleString()` method returns a string representing the object.
- /// This method is meant to be overridden by derived objects for
- /// locale-specific purposes.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString)
- #[wasm_bindgen(method, js_name = toLocaleString)]
- pub fn to_locale_string(this: &Object) -> JsString;
-
- /// The `toString()` method returns a string representing the object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Object) -> JsString;
-
- /// The `valueOf()` method returns the primitive value of the
- /// specified object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf)
- #[wasm_bindgen(method, js_name = valueOf)]
- pub fn value_of(this: &Object) -> Object;
-
- /// The `Object.values()` method returns an array of a given object's own
- /// enumerable property values, in the same order as that provided by a
- /// `for...in` loop (the difference being that a for-in loop enumerates
- /// properties in the prototype chain as well).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values)
- #[wasm_bindgen(static_method_of = Object)]
- pub fn values(object: &Object) -> Array;
-}
-
-impl Object {
- /// Returns the `Object` value of this JS value if it's an instance of an
- /// object.
- ///
- /// If this JS value is not an instance of an object then this returns
- /// `None`.
- pub fn try_from(val: &JsValue) -> Option<&Object> {
- if val.is_object() {
- Some(val.unchecked_ref())
- } else {
- None
- }
- }
-}
-
-impl PartialEq for Object {
- #[inline]
- fn eq(&self, other: &Object) -> bool {
- Object::is(self.as_ref(), other.as_ref())
- }
-}
-
-impl Eq for Object {}
-
-impl Default for Object {
- fn default() -> Self {
- Self::new()
- }
-}
-
-// Proxy
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(typescript_type = "ProxyConstructor")]
- #[derive(Clone, Debug)]
- pub type Proxy;
-
- /// The [`Proxy`] object is used to define custom behavior for fundamental
- /// operations (e.g. property lookup, assignment, enumeration, function
- /// invocation, etc).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy)
- #[wasm_bindgen(constructor)]
- pub fn new(target: &JsValue, handler: &Object) -> Proxy;
-
- /// The `Proxy.revocable()` method is used to create a revocable [`Proxy`]
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocable)
- #[wasm_bindgen(static_method_of = Proxy)]
- pub fn revocable(target: &JsValue, handler: &Object) -> Object;
-}
-
-// RangeError
-#[wasm_bindgen]
-extern "C" {
- /// The `RangeError` object indicates an error when a value is not in the set
- /// or range of allowed values.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError)
- #[wasm_bindgen(extends = Error, extends = Object, typescript_type = "RangeError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type RangeError;
-
- /// The `RangeError` object indicates an error when a value is not in the set
- /// or range of allowed values.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError)
- #[wasm_bindgen(constructor)]
- pub fn new(message: &str) -> RangeError;
-}
-
-// ReferenceError
-#[wasm_bindgen]
-extern "C" {
- /// The `ReferenceError` object represents an error when a non-existent
- /// variable is referenced.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError)
- #[wasm_bindgen(extends = Error, extends = Object, typescript_type = "ReferenceError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type ReferenceError;
-
- /// The `ReferenceError` object represents an error when a non-existent
- /// variable is referenced.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError)
- #[wasm_bindgen(constructor)]
- pub fn new(message: &str) -> ReferenceError;
-}
-
-#[allow(non_snake_case)]
-pub mod Reflect {
- use super::*;
-
- // Reflect
- #[wasm_bindgen]
- extern "C" {
- /// The static `Reflect.apply()` method calls a target function with
- /// arguments as specified.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/apply)
- #[wasm_bindgen(js_namespace = Reflect, catch)]
- pub fn apply(
- target: &Function,
- this_argument: &JsValue,
- arguments_list: &Array,
- ) -> Result<JsValue, JsValue>;
-
- /// The static `Reflect.construct()` method acts like the new operator, but
- /// as a function. It is equivalent to calling `new target(...args)`. It
- /// gives also the added option to specify a different prototype.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/construct)
- #[wasm_bindgen(js_namespace = Reflect, catch)]
- pub fn construct(target: &Function, arguments_list: &Array) -> Result<JsValue, JsValue>;
-
- /// The static `Reflect.construct()` method acts like the new operator, but
- /// as a function. It is equivalent to calling `new target(...args)`. It
- /// gives also the added option to specify a different prototype.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/construct)
- #[wasm_bindgen(js_namespace = Reflect, js_name = construct, catch)]
- pub fn construct_with_new_target(
- target: &Function,
- arguments_list: &Array,
- new_target: &Function,
- ) -> Result<JsValue, JsValue>;
-
- /// The static `Reflect.defineProperty()` method is like
- /// `Object.defineProperty()` but returns a `Boolean`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty)
- #[wasm_bindgen(js_namespace = Reflect, js_name = defineProperty, catch)]
- pub fn define_property(
- target: &Object,
- property_key: &JsValue,
- attributes: &Object,
- ) -> Result<bool, JsValue>;
-
- /// The static `Reflect.deleteProperty()` method allows to delete
- /// properties. It is like the `delete` operator as a function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty)
- #[wasm_bindgen(js_namespace = Reflect, js_name = deleteProperty, catch)]
- pub fn delete_property(target: &Object, key: &JsValue) -> Result<bool, JsValue>;
-
- /// The static `Reflect.get()` method works like getting a property from
- /// an object (`target[propertyKey]`) as a function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/get)
- #[wasm_bindgen(js_namespace = Reflect, catch)]
- pub fn get(target: &JsValue, key: &JsValue) -> Result<JsValue, JsValue>;
-
- /// The same as [`get`](fn.get.html)
- /// except the key is an `f64`, which is slightly faster.
- #[wasm_bindgen(js_namespace = Reflect, js_name = "get", catch)]
- pub fn get_f64(target: &JsValue, key: f64) -> Result<JsValue, JsValue>;
-
- /// The same as [`get`](fn.get.html)
- /// except the key is a `u32`, which is slightly faster.
- #[wasm_bindgen(js_namespace = Reflect, js_name = "get", catch)]
- pub fn get_u32(target: &JsValue, key: u32) -> Result<JsValue, JsValue>;
-
- /// The static `Reflect.getOwnPropertyDescriptor()` method is similar to
- /// `Object.getOwnPropertyDescriptor()`. It returns a property descriptor
- /// of the given property if it exists on the object, `undefined` otherwise.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor)
- #[wasm_bindgen(js_namespace = Reflect, js_name = getOwnPropertyDescriptor, catch)]
- pub fn get_own_property_descriptor(
- target: &Object,
- property_key: &JsValue,
- ) -> Result<JsValue, JsValue>;
-
- /// The static `Reflect.getPrototypeOf()` method is almost the same
- /// method as `Object.getPrototypeOf()`. It returns the prototype
- /// (i.e. the value of the internal `[[Prototype]]` property) of
- /// the specified object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf)
- #[wasm_bindgen(js_namespace = Reflect, js_name = getPrototypeOf, catch)]
- pub fn get_prototype_of(target: &JsValue) -> Result<Object, JsValue>;
-
- /// The static `Reflect.has()` method works like the in operator as a
- /// function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/has)
- #[wasm_bindgen(js_namespace = Reflect, catch)]
- pub fn has(target: &JsValue, property_key: &JsValue) -> Result<bool, JsValue>;
-
- /// The static `Reflect.isExtensible()` method determines if an object is
- /// extensible (whether it can have new properties added to it). It is
- /// similar to `Object.isExtensible()`, but with some differences.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible)
- #[wasm_bindgen(js_namespace = Reflect, js_name = isExtensible, catch)]
- pub fn is_extensible(target: &Object) -> Result<bool, JsValue>;
-
- /// The static `Reflect.ownKeys()` method returns an array of the
- /// target object's own property keys.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys)
- #[wasm_bindgen(js_namespace = Reflect, js_name = ownKeys, catch)]
- pub fn own_keys(target: &JsValue) -> Result<Array, JsValue>;
-
- /// The static `Reflect.preventExtensions()` method prevents new
- /// properties from ever being added to an object (i.e. prevents
- /// future extensions to the object). It is similar to
- /// `Object.preventExtensions()`, but with some differences.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions)
- #[wasm_bindgen(js_namespace = Reflect, js_name = preventExtensions, catch)]
- pub fn prevent_extensions(target: &Object) -> Result<bool, JsValue>;
-
- /// The static `Reflect.set()` method works like setting a
- /// property on an object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/set)
- #[wasm_bindgen(js_namespace = Reflect, catch)]
- pub fn set(
- target: &JsValue,
- property_key: &JsValue,
- value: &JsValue,
- ) -> Result<bool, JsValue>;
-
- /// The same as [`set`](fn.set.html)
- /// except the key is an `f64`, which is slightly faster.
- #[wasm_bindgen(js_namespace = Reflect, js_name = "set", catch)]
- pub fn set_f64(
- target: &JsValue,
- property_key: f64,
- value: &JsValue,
- ) -> Result<bool, JsValue>;
-
- /// The same as [`set`](fn.set.html)
- /// except the key is a `u32`, which is slightly faster.
- #[wasm_bindgen(js_namespace = Reflect, js_name = "set", catch)]
- pub fn set_u32(
- target: &JsValue,
- property_key: u32,
- value: &JsValue,
- ) -> Result<bool, JsValue>;
-
- /// The static `Reflect.set()` method works like setting a
- /// property on an object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/set)
- #[wasm_bindgen(js_namespace = Reflect, js_name = set, catch)]
- pub fn set_with_receiver(
- target: &JsValue,
- property_key: &JsValue,
- value: &JsValue,
- receiver: &JsValue,
- ) -> Result<bool, JsValue>;
-
- /// The static `Reflect.setPrototypeOf()` method is the same
- /// method as `Object.setPrototypeOf()`. It sets the prototype
- /// (i.e., the internal `[[Prototype]]` property) of a specified
- /// object to another object or to null.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf)
- #[wasm_bindgen(js_namespace = Reflect, js_name = setPrototypeOf, catch)]
- pub fn set_prototype_of(target: &Object, prototype: &JsValue) -> Result<bool, JsValue>;
- }
-}
-
-// RegExp
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "RegExp")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type RegExp;
-
- /// The `exec()` method executes a search for a match in a specified
- /// string. Returns a result array, or null.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec)
- #[wasm_bindgen(method)]
- pub fn exec(this: &RegExp, text: &str) -> Option<Array>;
-
- /// The flags property returns a string consisting of the flags of
- /// the current regular expression object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/flags)
- #[wasm_bindgen(method, getter)]
- pub fn flags(this: &RegExp) -> JsString;
-
- /// The global property indicates whether or not the "g" flag is
- /// used with the regular expression. global is a read-only
- /// property of an individual regular expression instance.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/global)
- #[wasm_bindgen(method, getter)]
- pub fn global(this: &RegExp) -> bool;
-
- /// The ignoreCase property indicates whether or not the "i" flag
- /// is used with the regular expression. ignoreCase is a read-only
- /// property of an individual regular expression instance.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase)
- #[wasm_bindgen(method, getter, js_name = ignoreCase)]
- pub fn ignore_case(this: &RegExp) -> bool;
-
- /// The non-standard input property is a static property of
- /// regular expressions that contains the string against which a
- /// regular expression is matched. RegExp.$_ is an alias for this
- /// property.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/input)
- #[wasm_bindgen(static_method_of = RegExp, getter)]
- pub fn input() -> JsString;
-
- /// The lastIndex is a read/write integer property of regular expression
- /// instances that specifies the index at which to start the next match.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex)
- #[wasm_bindgen(structural, getter = lastIndex, method)]
- pub fn last_index(this: &RegExp) -> u32;
-
- /// The lastIndex is a read/write integer property of regular expression
- /// instances that specifies the index at which to start the next match.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex)
- #[wasm_bindgen(structural, setter = lastIndex, method)]
- pub fn set_last_index(this: &RegExp, index: u32);
-
- /// The non-standard lastMatch property is a static and read-only
- /// property of regular expressions that contains the last matched
- /// characters. `RegExp.$&` is an alias for this property.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch)
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = lastMatch)]
- pub fn last_match() -> JsString;
-
- /// The non-standard lastParen property is a static and read-only
- /// property of regular expressions that contains the last
- /// parenthesized substring match, if any. `RegExp.$+` is an alias
- /// for this property.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastParen)
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = lastParen)]
- pub fn last_paren() -> JsString;
-
- /// The non-standard leftContext property is a static and
- /// read-only property of regular expressions that contains the
- /// substring preceding the most recent match. `RegExp.$`` is an
- /// alias for this property.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/leftContext)
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = leftContext)]
- pub fn left_context() -> JsString;
-
- /// The multiline property indicates whether or not the "m" flag
- /// is used with the regular expression. multiline is a read-only
- /// property of an individual regular expression instance.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline)
- #[wasm_bindgen(method, getter)]
- pub fn multiline(this: &RegExp) -> bool;
-
- /// The non-standard $1, $2, $3, $4, $5, $6, $7, $8, $9 properties
- /// are static and read-only properties of regular expressions
- /// that contain parenthesized substring matches.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n)
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$1")]
- pub fn n1() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$2")]
- pub fn n2() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$3")]
- pub fn n3() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$4")]
- pub fn n4() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$5")]
- pub fn n5() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$6")]
- pub fn n6() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$7")]
- pub fn n7() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$8")]
- pub fn n8() -> JsString;
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$9")]
- pub fn n9() -> JsString;
-
- /// The `RegExp` constructor creates a regular expression object for matching text with a pattern.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)
- #[wasm_bindgen(constructor)]
- pub fn new(pattern: &str, flags: &str) -> RegExp;
- #[wasm_bindgen(constructor)]
- pub fn new_regexp(pattern: &RegExp, flags: &str) -> RegExp;
-
- /// The non-standard rightContext property is a static and
- /// read-only property of regular expressions that contains the
- /// substring following the most recent match. `RegExp.$'` is an
- /// alias for this property.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/rightContext)
- #[wasm_bindgen(static_method_of = RegExp, getter, js_name = rightContext)]
- pub fn right_context() -> JsString;
-
- /// The source property returns a String containing the source
- /// text of the regexp object, and it doesn't contain the two
- /// forward slashes on both sides and any flags.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source)
- #[wasm_bindgen(method, getter)]
- pub fn source(this: &RegExp) -> JsString;
-
- /// The sticky property reflects whether or not the search is
- /// sticky (searches in strings only from the index indicated by
- /// the lastIndex property of this regular expression). sticky is
- /// a read-only property of an individual regular expression
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky)
- #[wasm_bindgen(method, getter)]
- pub fn sticky(this: &RegExp) -> bool;
-
- /// The `test()` method executes a search for a match between a
- /// regular expression and a specified string. Returns true or
- /// false.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)
- #[wasm_bindgen(method)]
- pub fn test(this: &RegExp, text: &str) -> bool;
-
- /// The `toString()` method returns a string representing the
- /// regular expression.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toString)
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &RegExp) -> JsString;
-
- /// The unicode property indicates whether or not the "u" flag is
- /// used with a regular expression. unicode is a read-only
- /// property of an individual regular expression instance.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode)
- #[wasm_bindgen(method, getter)]
- pub fn unicode(this: &RegExp) -> bool;
-}
-
-// Set
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "Set<any>")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Set;
-
- /// The `add()` method appends a new element with a specified value to the
- /// end of a [`Set`] object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add)
- #[wasm_bindgen(method)]
- pub fn add(this: &Set, value: &JsValue) -> Set;
-
- /// The `clear()` method removes all elements from a [`Set`] object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear)
- #[wasm_bindgen(method)]
- pub fn clear(this: &Set);
-
- /// The `delete()` method removes the specified element from a [`Set`]
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete)
- #[wasm_bindgen(method)]
- pub fn delete(this: &Set, value: &JsValue) -> bool;
-
- /// The `forEach()` method executes a provided function once for each value
- /// in the Set object, in insertion order.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/forEach)
- #[wasm_bindgen(method, js_name = forEach)]
- pub fn for_each(this: &Set, callback: &mut dyn FnMut(JsValue, JsValue, Set));
-
- /// The `has()` method returns a boolean indicating whether an element with
- /// the specified value exists in a [`Set`] object or not.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has)
- #[wasm_bindgen(method)]
- pub fn has(this: &Set, value: &JsValue) -> bool;
-
- /// The [`Set`] object lets you store unique values of any type, whether
- /// primitive values or object references.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)
- #[wasm_bindgen(constructor)]
- pub fn new(init: &JsValue) -> Set;
-
- /// The size accessor property returns the number of elements in a [`Set`]
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Set/size)
- #[wasm_bindgen(method, getter, structural)]
- pub fn size(this: &Set) -> u32;
-}
-
-impl Default for Set {
- fn default() -> Self {
- Self::new(&JsValue::UNDEFINED)
- }
-}
-
-// SetIterator
-#[wasm_bindgen]
-extern "C" {
- /// The `entries()` method returns a new Iterator object that contains an
- /// array of [value, value] for each element in the Set object, in insertion
- /// order. For Set objects there is no key like in Map objects. However, to
- /// keep the API similar to the Map object, each entry has the same value
- /// for its key and value here, so that an array [value, value] is returned.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/entries)
- #[wasm_bindgen(method)]
- pub fn entries(set: &Set) -> Iterator;
-
- /// The `keys()` method is an alias for this method (for similarity with
- /// Map objects); it behaves exactly the same and returns values
- /// of Set elements.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values)
- #[wasm_bindgen(method)]
- pub fn keys(set: &Set) -> Iterator;
-
- /// The `values()` method returns a new Iterator object that contains the
- /// values for each element in the Set object in insertion order.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values)
- #[wasm_bindgen(method)]
- pub fn values(set: &Set) -> Iterator;
-}
-
-// SyntaxError
-#[wasm_bindgen]
-extern "C" {
- /// A `SyntaxError` is thrown when the JavaScript engine encounters tokens or
- /// token order that does not conform to the syntax of the language when
- /// parsing code.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError)
- #[wasm_bindgen(extends = Error, extends = Object, typescript_type = "SyntaxError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type SyntaxError;
-
- /// A `SyntaxError` is thrown when the JavaScript engine encounters tokens or
- /// token order that does not conform to the syntax of the language when
- /// parsing code.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError)
- #[wasm_bindgen(constructor)]
- pub fn new(message: &str) -> SyntaxError;
-}
-
-// TypeError
-#[wasm_bindgen]
-extern "C" {
- /// The `TypeError` object represents an error when a value is not of the
- /// expected type.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError)
- #[wasm_bindgen(extends = Error, extends = Object, typescript_type = "TypeError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type TypeError;
-
- /// The `TypeError` object represents an error when a value is not of the
- /// expected type.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError)
- #[wasm_bindgen(constructor)]
- pub fn new(message: &str) -> TypeError;
-}
-
-// URIError
-#[wasm_bindgen]
-extern "C" {
- /// The `URIError` object represents an error when a global URI handling
- /// function was used in a wrong way.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
- #[wasm_bindgen(extends = Error, extends = Object, js_name = URIError, typescript_type = "URIError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type UriError;
-
- /// The `URIError` object represents an error when a global URI handling
- /// function was used in a wrong way.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
- #[wasm_bindgen(constructor, js_class = "URIError")]
- pub fn new(message: &str) -> UriError;
-}
-
-// WeakMap
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "WeakMap<object, any>")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type WeakMap;
-
- /// The [`WeakMap`] object is a collection of key/value pairs in which the
- /// keys are weakly referenced. The keys must be objects and the values can
- /// be arbitrary values.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)
- #[wasm_bindgen(constructor)]
- pub fn new() -> WeakMap;
-
- /// The `set()` method sets the value for the key in the [`WeakMap`] object.
- /// Returns the [`WeakMap`] object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set)
- #[wasm_bindgen(method, js_class = "WeakMap")]
- pub fn set(this: &WeakMap, key: &Object, value: &JsValue) -> WeakMap;
-
- /// The `get()` method returns a specified by key element
- /// from a [`WeakMap`] object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get)
- #[wasm_bindgen(method)]
- pub fn get(this: &WeakMap, key: &Object) -> JsValue;
-
- /// The `has()` method returns a boolean indicating whether an element with
- /// the specified key exists in the [`WeakMap`] object or not.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has)
- #[wasm_bindgen(method)]
- pub fn has(this: &WeakMap, key: &Object) -> bool;
-
- /// The `delete()` method removes the specified element from a [`WeakMap`]
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete)
- #[wasm_bindgen(method)]
- pub fn delete(this: &WeakMap, key: &Object) -> bool;
-}
-
-impl Default for WeakMap {
- fn default() -> Self {
- Self::new()
- }
-}
-
-// WeakSet
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = "WeakSet<object>")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type WeakSet;
-
- /// The `WeakSet` object lets you store weakly held objects in a collection.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet)
- #[wasm_bindgen(constructor)]
- pub fn new() -> WeakSet;
-
- /// The `has()` method returns a boolean indicating whether an object exists
- /// in a WeakSet or not.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/has)
- #[wasm_bindgen(method)]
- pub fn has(this: &WeakSet, value: &Object) -> bool;
-
- /// The `add()` method appends a new object to the end of a WeakSet object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/add)
- #[wasm_bindgen(method)]
- pub fn add(this: &WeakSet, value: &Object) -> WeakSet;
-
- /// The `delete()` method removes the specified element from a WeakSet
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/delete)
- #[wasm_bindgen(method)]
- pub fn delete(this: &WeakSet, value: &Object) -> bool;
-}
-
-impl Default for WeakSet {
- fn default() -> Self {
- Self::new()
- }
-}
-
-#[cfg(js_sys_unstable_apis)]
-#[allow(non_snake_case)]
-pub mod Temporal;
-
-#[allow(non_snake_case)]
-pub mod WebAssembly {
- use super::*;
-
- // WebAssembly
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.compile()` function compiles a `WebAssembly.Module`
- /// from WebAssembly binary code. This function is useful if it is
- /// necessary to a compile a module before it can be instantiated
- /// (otherwise, the `WebAssembly.instantiate()` function should be used).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile)
- #[wasm_bindgen(js_namespace = WebAssembly)]
- pub fn compile(buffer_source: &JsValue) -> Promise;
-
- /// The `WebAssembly.compileStreaming()` function compiles a
- /// `WebAssembly.Module` module directly from a streamed underlying
- /// source. This function is useful if it is necessary to a compile a
- /// module before it can be instantiated (otherwise, the
- /// `WebAssembly.instantiateStreaming()` function should be used).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming)
- #[wasm_bindgen(js_namespace = WebAssembly, js_name = compileStreaming)]
- pub fn compile_streaming(response: &Promise) -> Promise;
-
- /// The `WebAssembly.instantiate()` function allows you to compile and
- /// instantiate WebAssembly code.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate)
- #[wasm_bindgen(js_namespace = WebAssembly, js_name = instantiate)]
- pub fn instantiate_buffer(buffer: &[u8], imports: &Object) -> Promise;
-
- /// The `WebAssembly.instantiate()` function allows you to compile and
- /// instantiate WebAssembly code.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate)
- #[wasm_bindgen(js_namespace = WebAssembly, js_name = instantiate)]
- pub fn instantiate_module(module: &Module, imports: &Object) -> Promise;
-
- /// The `WebAssembly.instantiateStreaming()` function compiles and
- /// instantiates a WebAssembly module directly from a streamed
- /// underlying source. This is the most efficient, optimized way to load
- /// Wasm code.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming)
- #[wasm_bindgen(js_namespace = WebAssembly, js_name = instantiateStreaming)]
- pub fn instantiate_streaming(response: &Promise, imports: &Object) -> Promise;
-
- /// The `WebAssembly.validate()` function validates a given typed
- /// array of WebAssembly binary code, returning whether the bytes
- /// form a valid Wasm module (`true`) or not (`false`).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate)
- #[wasm_bindgen(js_namespace = WebAssembly, catch)]
- pub fn validate(buffer_source: &JsValue) -> Result<bool, JsValue>;
- }
-
- // WebAssembly.CompileError
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.CompileError()` constructor creates a new
- /// WebAssembly `CompileError` object, which indicates an error during
- /// WebAssembly decoding or validation.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError)
- #[wasm_bindgen(extends = Error, js_namespace = WebAssembly, typescript_type = "WebAssembly.CompileError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type CompileError;
-
- /// The `WebAssembly.CompileError()` constructor creates a new
- /// WebAssembly `CompileError` object, which indicates an error during
- /// WebAssembly decoding or validation.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly)]
- pub fn new(message: &str) -> CompileError;
- }
-
- // WebAssembly.Instance
- #[wasm_bindgen]
- extern "C" {
- /// A `WebAssembly.Instance` object is a stateful, executable instance
- /// of a `WebAssembly.Module`. Instance objects contain all the exported
- /// WebAssembly functions that allow calling into WebAssembly code from
- /// JavaScript.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance)
- #[wasm_bindgen(extends = Object, js_namespace = WebAssembly, typescript_type = "WebAssembly.Instance")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Instance;
-
- /// The `WebAssembly.Instance()` constructor function can be called to
- /// synchronously instantiate a given `WebAssembly.Module`
- /// object. However, the primary way to get an `Instance` is through the
- /// asynchronous `WebAssembly.instantiateStreaming()` function.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance)
- #[wasm_bindgen(catch, constructor, js_namespace = WebAssembly)]
- pub fn new(module: &Module, imports: &Object) -> Result<Instance, JsValue>;
-
- /// The `exports` readonly property of the `WebAssembly.Instance` object
- /// prototype returns an object containing as its members all the
- /// functions exported from the WebAssembly module instance, to allow
- /// them to be accessed and used by JavaScript.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/exports)
- #[wasm_bindgen(getter, method, js_namespace = WebAssembly)]
- pub fn exports(this: &Instance) -> Object;
- }
-
- // WebAssembly.LinkError
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.LinkError()` constructor creates a new WebAssembly
- /// LinkError object, which indicates an error during module
- /// instantiation (besides traps from the start function).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError)
- #[wasm_bindgen(extends = Error, js_namespace = WebAssembly, typescript_type = "WebAssembly.LinkError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type LinkError;
-
- /// The `WebAssembly.LinkError()` constructor creates a new WebAssembly
- /// LinkError object, which indicates an error during module
- /// instantiation (besides traps from the start function).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly)]
- pub fn new(message: &str) -> LinkError;
- }
-
- // WebAssembly.RuntimeError
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.RuntimeError()` constructor creates a new WebAssembly
- /// `RuntimeError` object — the type that is thrown whenever WebAssembly
- /// specifies a trap.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError)
- #[wasm_bindgen(extends = Error, js_namespace = WebAssembly, typescript_type = "WebAssembly.RuntimeError")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type RuntimeError;
-
- /// The `WebAssembly.RuntimeError()` constructor creates a new WebAssembly
- /// `RuntimeError` object — the type that is thrown whenever WebAssembly
- /// specifies a trap.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly)]
- pub fn new(message: &str) -> RuntimeError;
- }
-
- // WebAssembly.Module
- #[wasm_bindgen]
- extern "C" {
- /// A `WebAssembly.Module` object contains stateless WebAssembly code
- /// that has already been compiled by the browser and can be
- /// efficiently shared with Workers, and instantiated multiple times.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module)
- #[wasm_bindgen(js_namespace = WebAssembly, extends = Object, typescript_type = "WebAssembly.Module")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Module;
-
- /// A `WebAssembly.Module` object contains stateless WebAssembly code
- /// that has already been compiled by the browser and can be
- /// efficiently shared with Workers, and instantiated multiple times.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)]
- pub fn new(buffer_source: &JsValue) -> Result<Module, JsValue>;
-
- /// The `WebAssembly.customSections()` function returns a copy of the
- /// contents of all custom sections in the given module with the given
- /// string name.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections)
- #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, js_name = customSections)]
- pub fn custom_sections(module: &Module, sectionName: &str) -> Array;
-
- /// The `WebAssembly.exports()` function returns an array containing
- /// descriptions of all the declared exports of the given `Module`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports)
- #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly)]
- pub fn exports(module: &Module) -> Array;
-
- /// The `WebAssembly.imports()` function returns an array containing
- /// descriptions of all the declared imports of the given `Module`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports)
- #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly)]
- pub fn imports(module: &Module) -> Array;
- }
-
- // WebAssembly.Table
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.Table()` constructor creates a new `Table` object
- /// of the given size and element type.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table)
- #[wasm_bindgen(js_namespace = WebAssembly, extends = Object, typescript_type = "WebAssembly.Table")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Table;
-
- /// The `WebAssembly.Table()` constructor creates a new `Table` object
- /// of the given size and element type.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)]
- pub fn new(table_descriptor: &Object) -> Result<Table, JsValue>;
-
- /// The length prototype property of the `WebAssembly.Table` object
- /// returns the length of the table, i.e. the number of elements in the
- /// table.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length)
- #[wasm_bindgen(method, getter, js_namespace = WebAssembly)]
- pub fn length(this: &Table) -> u32;
-
- /// The `get()` prototype method of the `WebAssembly.Table()` object
- /// retrieves a function reference stored at a given index.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/get)
- #[wasm_bindgen(method, catch, js_namespace = WebAssembly)]
- pub fn get(this: &Table, index: u32) -> Result<Function, JsValue>;
-
- /// The `grow()` prototype method of the `WebAssembly.Table` object
- /// increases the size of the `Table` instance by a specified number of
- /// elements.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/grow)
- #[wasm_bindgen(method, catch, js_namespace = WebAssembly)]
- pub fn grow(this: &Table, additional_capacity: u32) -> Result<u32, JsValue>;
-
- /// The `set()` prototype method of the `WebAssembly.Table` object mutates a
- /// reference stored at a given index to a different value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set)
- #[wasm_bindgen(method, catch, js_namespace = WebAssembly)]
- pub fn set(this: &Table, index: u32, function: &Function) -> Result<(), JsValue>;
- }
-
- // WebAssembly.Tag
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.Tag()` constructor creates a new `Tag` object
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag)
- #[wasm_bindgen(js_namespace = WebAssembly, extends = Object, typescript_type = "WebAssembly.Tag")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Tag;
-
- /// The `WebAssembly.Tag()` constructor creates a new `Tag` object
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)]
- pub fn new(tag_descriptor: &Object) -> Result<Tag, JsValue>;
- }
-
- // WebAssembly.Exception
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.Exception()` constructor creates a new `Exception` object
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception)
- #[wasm_bindgen(js_namespace = WebAssembly, extends = Object, typescript_type = "WebAssembly.Exception")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Exception;
-
- /// The `WebAssembly.Exception()` constructor creates a new `Exception` object
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)]
- pub fn new(tag: &Tag, payload: &Array) -> Result<Exception, JsValue>;
-
- /// The `WebAssembly.Exception()` constructor creates a new `Exception` object
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)]
- pub fn new_with_options(
- tag: &Tag,
- payload: &Array,
- options: &Object,
- ) -> Result<Exception, JsValue>;
-
- /// The `is()` prototype method of the `WebAssembly.Exception` can be used to
- /// test if the Exception matches a given tag.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/is)
- #[wasm_bindgen(method, js_namespace = WebAssembly)]
- pub fn is(this: &Exception, tag: &Tag) -> bool;
-
- /// The `getArg()` prototype method of the `WebAssembly.Exception` can be used
- /// to get the value of a specified item in the exception's data arguments
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/getArg)
- #[wasm_bindgen(method, js_namespace = WebAssembly, js_name = getArg, catch)]
- pub fn get_arg(this: &Exception, tag: &Tag, index: u32) -> Result<JsValue, JsValue>;
- }
-
- // WebAssembly.Global
- #[wasm_bindgen]
- extern "C" {
- /// The `WebAssembly.Global()` constructor creates a new `Global` object
- /// of the given type and value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global)
- #[wasm_bindgen(js_namespace = WebAssembly, extends = Object, typescript_type = "WebAssembly.Global")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Global;
-
- /// The `WebAssembly.Global()` constructor creates a new `Global` object
- /// of the given type and value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)]
- pub fn new(global_descriptor: &Object, value: &JsValue) -> Result<Global, JsValue>;
-
- /// The value prototype property of the `WebAssembly.Global` object
- /// returns the value of the global.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global)
- #[wasm_bindgen(method, getter, structural, js_namespace = WebAssembly)]
- pub fn value(this: &Global) -> JsValue;
- #[wasm_bindgen(method, setter = value, structural, js_namespace = WebAssembly)]
- pub fn set_value(this: &Global, value: &JsValue);
- }
-
- // WebAssembly.Memory
- #[wasm_bindgen]
- extern "C" {
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory)
- #[wasm_bindgen(js_namespace = WebAssembly, extends = Object, typescript_type = "WebAssembly.Memory")]
- #[derive(Clone, Debug, PartialEq, Eq)]
- pub type Memory;
-
- /// The `WebAssembly.Memory()` constructor creates a new `Memory` object
- /// which is a resizable `ArrayBuffer` that holds the raw bytes of
- /// memory accessed by a WebAssembly `Instance`.
- ///
- /// A memory created by JavaScript or in WebAssembly code will be
- /// accessible and mutable from both JavaScript and WebAssembly.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory)
- #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)]
- pub fn new(descriptor: &Object) -> Result<Memory, JsValue>;
-
- /// An accessor property that returns the buffer contained in the
- /// memory.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer)
- #[wasm_bindgen(method, getter, js_namespace = WebAssembly)]
- pub fn buffer(this: &Memory) -> JsValue;
-
- /// The `grow()` prototype method of the `Memory` object increases the
- /// size of the memory instance by a specified number of WebAssembly
- /// pages.
- ///
- /// Takes the number of pages to grow (64KiB in size) and returns the
- /// previous size of memory, in pages.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow)
- #[wasm_bindgen(method, js_namespace = WebAssembly)]
- pub fn grow(this: &Memory, pages: u32) -> u32;
- }
-}
-
-/// The `JSON` object contains methods for parsing [JavaScript Object
-/// Notation (JSON)](https://json.org/) and converting values to JSON. It
-/// can't be called or constructed, and aside from its two method
-/// properties, it has no interesting functionality of its own.
-#[allow(non_snake_case)]
-pub mod JSON {
- use super::*;
-
- // JSON
- #[wasm_bindgen]
- extern "C" {
- /// The `JSON.parse()` method parses a JSON string, constructing the
- /// JavaScript value or object described by the string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)
- #[wasm_bindgen(catch, js_namespace = JSON)]
- pub fn parse(text: &str) -> Result<JsValue, JsValue>;
-
- /// The `JSON.stringify()` method converts a JavaScript value to a JSON string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)
- #[wasm_bindgen(catch, js_namespace = JSON)]
- pub fn stringify(obj: &JsValue) -> Result<JsString, JsValue>;
-
- /// The `JSON.stringify()` method converts a JavaScript value to a JSON string.
- ///
- /// The `replacer` argument is a function that alters the behavior of the stringification
- /// process, or an array of String and Number objects that serve as a whitelist
- /// for selecting/filtering the properties of the value object to be included
- /// in the JSON string. If this value is null or not provided, all properties
- /// of the object are included in the resulting JSON string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)
- #[wasm_bindgen(catch, js_namespace = JSON, js_name = stringify)]
- pub fn stringify_with_replacer(
- obj: &JsValue,
- replacer: &JsValue,
- ) -> Result<JsString, JsValue>;
-
- /// The `JSON.stringify()` method converts a JavaScript value to a JSON string.
- ///
- /// The `replacer` argument is a function that alters the behavior of the stringification
- /// process, or an array of String and Number objects that serve as a whitelist
- /// for selecting/filtering the properties of the value object to be included
- /// in the JSON string. If this value is null or not provided, all properties
- /// of the object are included in the resulting JSON string.
- ///
- /// The `space` argument is a String or Number object that's used to insert white space into
- /// the output JSON string for readability purposes. If this is a Number, it
- /// indicates the number of space characters to use as white space; this number
- /// is capped at 10 (if it is greater, the value is just 10). Values less than
- /// 1 indicate that no space should be used. If this is a String, the string
- /// (or the first 10 characters of the string, if it's longer than that) is
- /// used as white space. If this parameter is not provided (or is null), no
- /// white space is used.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)
- #[wasm_bindgen(catch, js_namespace = JSON, js_name = stringify)]
- pub fn stringify_with_replacer_and_space(
- obj: &JsValue,
- replacer: &JsValue,
- space: &JsValue,
- ) -> Result<JsString, JsValue>;
-
- }
-}
-
-// JsString
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_name = String, extends = Object, is_type_of = JsValue::is_string, typescript_type = "string")]
- #[derive(Clone, PartialEq, Eq)]
- pub type JsString;
-
- /// The length property of a String object indicates the length of a string,
- /// in UTF-16 code units.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length)
- #[wasm_bindgen(method, getter, structural)]
- pub fn length(this: &JsString) -> u32;
-
- /// The 'at()' method returns a new string consisting of the single UTF-16
- /// code unit located at the specified offset into the string, counting from
- /// the end if it's negative.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/at)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn at(this: &JsString, index: i32) -> Option<JsString>;
-
- /// The String object's `charAt()` method returns a new string consisting of
- /// the single UTF-16 code unit located at the specified offset into the
- /// string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt)
- #[wasm_bindgen(method, js_class = "String", js_name = charAt)]
- pub fn char_at(this: &JsString, index: u32) -> JsString;
-
- /// The `charCodeAt()` method returns an integer between 0 and 65535
- /// representing the UTF-16 code unit at the given index (the UTF-16 code
- /// unit matches the Unicode code point for code points representable in a
- /// single UTF-16 code unit, but might also be the first code unit of a
- /// surrogate pair for code points not representable in a single UTF-16 code
- /// unit, e.g. Unicode code points > 0x10000). If you want the entire code
- /// point value, use `codePointAt()`.
- ///
- /// Returns `NaN` if index is out of range.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt)
- #[wasm_bindgen(method, js_class = "String", js_name = charCodeAt)]
- pub fn char_code_at(this: &JsString, index: u32) -> f64;
-
- /// The `codePointAt()` method returns a non-negative integer that is the
- /// Unicode code point value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)
- #[wasm_bindgen(method, js_class = "String", js_name = codePointAt)]
- pub fn code_point_at(this: &JsString, pos: u32) -> JsValue;
-
- /// The `concat()` method concatenates the string arguments to the calling
- /// string and returns a new string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn concat(this: &JsString, string_2: &JsValue) -> JsString;
-
- /// The `endsWith()` method determines whether a string ends with the characters of a
- /// specified string, returning true or false as appropriate.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith)
- #[wasm_bindgen(method, js_class = "String", js_name = endsWith)]
- pub fn ends_with(this: &JsString, search_string: &str, length: i32) -> bool;
-
- /// The static `String.fromCharCode()` method returns a string created from
- /// the specified sequence of UTF-16 code units.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
- ///
- /// # Notes
- ///
- /// There are a few bindings to `from_char_code` in `js-sys`: `from_char_code1`, `from_char_code2`, etc...
- /// with different arities.
- ///
- /// Additionally, this function accepts `u16` for character codes, but
- /// fixing others requires a breaking change release
- /// (see https://github.com/rustwasm/wasm-bindgen/issues/1460 for details).
- #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode, variadic)]
- pub fn from_char_code(char_codes: &[u16]) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
- #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)]
- pub fn from_char_code1(a: u32) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
- #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)]
- pub fn from_char_code2(a: u32, b: u32) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
- #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)]
- pub fn from_char_code3(a: u32, b: u32, c: u32) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
- #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)]
- pub fn from_char_code4(a: u32, b: u32, c: u32, d: u32) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
- #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)]
- pub fn from_char_code5(a: u32, b: u32, c: u32, d: u32, e: u32) -> JsString;
-
- /// The static `String.fromCodePoint()` method returns a string created by
- /// using the specified sequence of code points.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)
- ///
- /// # Exceptions
- ///
- /// A RangeError is thrown if an invalid Unicode code point is given
- ///
- /// # Notes
- ///
- /// There are a few bindings to `from_code_point` in `js-sys`: `from_code_point1`, `from_code_point2`, etc...
- /// with different arities.
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint, variadic)]
- pub fn from_code_point(code_points: &[u32]) -> Result<JsString, JsValue>;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)]
- pub fn from_code_point1(a: u32) -> Result<JsString, JsValue>;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)]
- pub fn from_code_point2(a: u32, b: u32) -> Result<JsString, JsValue>;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)]
- pub fn from_code_point3(a: u32, b: u32, c: u32) -> Result<JsString, JsValue>;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)]
- pub fn from_code_point4(a: u32, b: u32, c: u32, d: u32) -> Result<JsString, JsValue>;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)]
- pub fn from_code_point5(a: u32, b: u32, c: u32, d: u32, e: u32) -> Result<JsString, JsValue>;
-
- /// The `includes()` method determines whether one string may be found
- /// within another string, returning true or false as appropriate.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn includes(this: &JsString, search_string: &str, position: i32) -> bool;
-
- /// The `indexOf()` method returns the index within the calling String
- /// object of the first occurrence of the specified value, starting the
- /// search at fromIndex. Returns -1 if the value is not found.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf)
- #[wasm_bindgen(method, js_class = "String", js_name = indexOf)]
- pub fn index_of(this: &JsString, search_value: &str, from_index: i32) -> i32;
-
- /// The `lastIndexOf()` method returns the index within the calling String
- /// object of the last occurrence of the specified value, searching
- /// backwards from fromIndex. Returns -1 if the value is not found.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf)
- #[wasm_bindgen(method, js_class = "String", js_name = lastIndexOf)]
- pub fn last_index_of(this: &JsString, search_value: &str, from_index: i32) -> i32;
-
- /// The `localeCompare()` method returns a number indicating whether
- /// a reference string comes before or after or is the same as
- /// the given string in sort order.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare)
- #[wasm_bindgen(method, js_class = "String", js_name = localeCompare)]
- pub fn locale_compare(
- this: &JsString,
- compare_string: &str,
- locales: &Array,
- options: &Object,
- ) -> i32;
-
- /// The `match()` method retrieves the matches when matching a string against a regular expression.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)
- #[wasm_bindgen(method, js_class = "String", js_name = match)]
- pub fn match_(this: &JsString, pattern: &RegExp) -> Option<Object>;
-
- /// The `match_all()` method is similar to `match()`, but gives an iterator of `exec()` arrays, which preserve capture groups.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/matchAll)
- #[wasm_bindgen(method, js_class = "String", js_name = matchAll)]
- pub fn match_all(this: &JsString, pattern: &RegExp) -> Iterator;
-
- /// The `normalize()` method returns the Unicode Normalization Form
- /// of a given string (if the value isn't a string, it will be converted to one first).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn normalize(this: &JsString, form: &str) -> JsString;
-
- /// The `padEnd()` method pads the current string with a given string
- /// (repeated, if needed) so that the resulting string reaches a given
- /// length. The padding is applied from the end (right) of the current
- /// string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd)
- #[wasm_bindgen(method, js_class = "String", js_name = padEnd)]
- pub fn pad_end(this: &JsString, target_length: u32, pad_string: &str) -> JsString;
-
- /// The `padStart()` method pads the current string with another string
- /// (repeated, if needed) so that the resulting string reaches the given
- /// length. The padding is applied from the start (left) of the current
- /// string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart)
- #[wasm_bindgen(method, js_class = "String", js_name = padStart)]
- pub fn pad_start(this: &JsString, target_length: u32, pad_string: &str) -> JsString;
-
- /// The `repeat()` method constructs and returns a new string which contains the specified
- /// number of copies of the string on which it was called, concatenated together.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn repeat(this: &JsString, count: i32) -> JsString;
-
- /// The `replace()` method returns a new string with some or all matches of a pattern
- /// replaced by a replacement. The pattern can be a string or a RegExp, and
- /// the replacement can be a string or a function to be called for each match.
- ///
- /// Note: The original string will remain unchanged.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn replace(this: &JsString, pattern: &str, replacement: &str) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)
- #[wasm_bindgen(method, js_class = "String", js_name = replace)]
- pub fn replace_with_function(
- this: &JsString,
- pattern: &str,
- replacement: &Function,
- ) -> JsString;
-
- #[wasm_bindgen(method, js_class = "String", js_name = replace)]
- pub fn replace_by_pattern(this: &JsString, pattern: &RegExp, replacement: &str) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)
- #[wasm_bindgen(method, js_class = "String", js_name = replace)]
- pub fn replace_by_pattern_with_function(
- this: &JsString,
- pattern: &RegExp,
- replacement: &Function,
- ) -> JsString;
-
- /// The `replace_all()` method returns a new string with all matches of a pattern
- /// replaced by a replacement. The pattern can be a string or a global RegExp, and
- /// the replacement can be a string or a function to be called for each match.
- ///
- /// Note: The original string will remain unchanged.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)
- #[wasm_bindgen(method, js_class = "String", js_name = replaceAll)]
- pub fn replace_all(this: &JsString, pattern: &str, replacement: &str) -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)
- #[wasm_bindgen(method, js_class = "String", js_name = replaceAll)]
- pub fn replace_all_with_function(
- this: &JsString,
- pattern: &str,
- replacement: &Function,
- ) -> JsString;
-
- #[wasm_bindgen(method, js_class = "String", js_name = replaceAll)]
- pub fn replace_all_by_pattern(this: &JsString, pattern: &RegExp, replacement: &str)
- -> JsString;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)
- #[wasm_bindgen(method, js_class = "String", js_name = replaceAll)]
- pub fn replace_all_by_pattern_with_function(
- this: &JsString,
- pattern: &RegExp,
- replacement: &Function,
- ) -> JsString;
-
- /// The `search()` method executes a search for a match between
- /// a regular expression and this String object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn search(this: &JsString, pattern: &RegExp) -> i32;
-
- /// The `slice()` method extracts a section of a string and returns it as a
- /// new string, without modifying the original string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn slice(this: &JsString, start: u32, end: u32) -> JsString;
-
- /// The `split()` method splits a String object into an array of strings by separating the string
- /// into substrings, using a specified separator string to determine where to make each split.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn split(this: &JsString, separator: &str) -> Array;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
- #[wasm_bindgen(method, js_class = "String", js_name = split)]
- pub fn split_limit(this: &JsString, separator: &str, limit: u32) -> Array;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
- #[wasm_bindgen(method, js_class = "String", js_name = split)]
- pub fn split_by_pattern(this: &JsString, pattern: &RegExp) -> Array;
-
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
- #[wasm_bindgen(method, js_class = "String", js_name = split)]
- pub fn split_by_pattern_limit(this: &JsString, pattern: &RegExp, limit: u32) -> Array;
-
- /// The `startsWith()` method determines whether a string begins with the
- /// characters of a specified string, returning true or false as
- /// appropriate.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith)
- #[wasm_bindgen(method, js_class = "String", js_name = startsWith)]
- pub fn starts_with(this: &JsString, search_string: &str, position: u32) -> bool;
-
- /// The `substring()` method returns the part of the string between the
- /// start and end indexes, or to the end of the string.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn substring(this: &JsString, index_start: u32, index_end: u32) -> JsString;
-
- /// The `substr()` method returns the part of a string between
- /// the start index and a number of characters after it.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn substr(this: &JsString, start: i32, length: i32) -> JsString;
-
- /// The `toLocaleLowerCase()` method returns the calling string value converted to lower case,
- /// according to any locale-specific case mappings.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase)
- #[wasm_bindgen(method, js_class = "String", js_name = toLocaleLowerCase)]
- pub fn to_locale_lower_case(this: &JsString, locale: Option<&str>) -> JsString;
-
- /// The `toLocaleUpperCase()` method returns the calling string value converted to upper case,
- /// according to any locale-specific case mappings.
- ///
- /// [MDN documentation](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase)
- #[wasm_bindgen(method, js_class = "String", js_name = toLocaleUpperCase)]
- pub fn to_locale_upper_case(this: &JsString, locale: Option<&str>) -> JsString;
-
- /// The `toLowerCase()` method returns the calling string value
- /// converted to lower case.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase)
- #[wasm_bindgen(method, js_class = "String", js_name = toLowerCase)]
- pub fn to_lower_case(this: &JsString) -> JsString;
-
- /// The `toString()` method returns a string representing the specified
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toString)
- #[wasm_bindgen(method, js_class = "String", js_name = toString)]
- pub fn to_string(this: &JsString) -> JsString;
-
- /// The `toUpperCase()` method returns the calling string value converted to
- /// uppercase (the value will be converted to a string if it isn't one).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase)
- #[wasm_bindgen(method, js_class = "String", js_name = toUpperCase)]
- pub fn to_upper_case(this: &JsString) -> JsString;
-
- /// The `trim()` method removes whitespace from both ends of a string.
- /// Whitespace in this context is all the whitespace characters (space, tab,
- /// no-break space, etc.) and all the line terminator characters (LF, CR,
- /// etc.).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim)
- #[wasm_bindgen(method, js_class = "String")]
- pub fn trim(this: &JsString) -> JsString;
-
- /// The `trimEnd()` method removes whitespace from the end of a string.
- /// `trimRight()` is an alias of this method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd)
- #[wasm_bindgen(method, js_class = "String", js_name = trimEnd)]
- pub fn trim_end(this: &JsString) -> JsString;
-
- /// The `trimEnd()` method removes whitespace from the end of a string.
- /// `trimRight()` is an alias of this method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd)
- #[wasm_bindgen(method, js_class = "String", js_name = trimRight)]
- pub fn trim_right(this: &JsString) -> JsString;
-
- /// The `trimStart()` method removes whitespace from the beginning of a
- /// string. `trimLeft()` is an alias of this method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart)
- #[wasm_bindgen(method, js_class = "String", js_name = trimStart)]
- pub fn trim_start(this: &JsString) -> JsString;
-
- /// The `trimStart()` method removes whitespace from the beginning of a
- /// string. `trimLeft()` is an alias of this method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart)
- #[wasm_bindgen(method, js_class = "String", js_name = trimLeft)]
- pub fn trim_left(this: &JsString) -> JsString;
-
- /// The `valueOf()` method returns the primitive value of a `String` object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf)
- #[wasm_bindgen(method, js_class = "String", js_name = valueOf)]
- pub fn value_of(this: &JsString) -> JsString;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, variadic, static_method_of = JsString, js_class = "String")]
- pub fn raw(call_site: &Object, substitutions: &Array) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_0(call_site: &Object) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_1(call_site: &Object, substitutions_1: &str) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_2(
- call_site: &Object,
- substitutions_1: &str,
- substitutions_2: &str,
- ) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_3(
- call_site: &Object,
- substitutions_1: &str,
- substitutions_2: &str,
- substitutions_3: &str,
- ) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_4(
- call_site: &Object,
- substitutions_1: &str,
- substitutions_2: &str,
- substitutions_3: &str,
- substitutions_4: &str,
- ) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_5(
- call_site: &Object,
- substitutions_1: &str,
- substitutions_2: &str,
- substitutions_3: &str,
- substitutions_4: &str,
- substitutions_5: &str,
- ) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_6(
- call_site: &Object,
- substitutions_1: &str,
- substitutions_2: &str,
- substitutions_3: &str,
- substitutions_4: &str,
- substitutions_5: &str,
- substitutions_6: &str,
- ) -> Result<JsString, JsValue>;
-
- /// The static `raw()` method is a tag function of template literals,
- /// similar to the `r` prefix in Python or the `@` prefix in C# for string literals.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)
- #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = raw)]
- pub fn raw_7(
- call_site: &Object,
- substitutions_1: &str,
- substitutions_2: &str,
- substitutions_3: &str,
- substitutions_4: &str,
- substitutions_5: &str,
- substitutions_6: &str,
- substitutions_7: &str,
- ) -> Result<JsString, JsValue>;
-}
-
-impl JsString {
- /// Returns the `JsString` value of this JS value if it's an instance of a
- /// string.
- ///
- /// If this JS value is not an instance of a string then this returns
- /// `None`.
- #[deprecated(note = "recommended to use dyn_ref instead which is now equivalent")]
- pub fn try_from(val: &JsValue) -> Option<&JsString> {
- val.dyn_ref()
- }
-
- /// Returns whether this string is a valid UTF-16 string.
- ///
- /// This is useful for learning whether `String::from(..)` will return a
- /// lossless representation of the JS string. If this string contains
- /// unpaired surrogates then `String::from` will succeed but it will be a
- /// lossy representation of the JS string because unpaired surrogates will
- /// become replacement characters.
- ///
- /// If this function returns `false` then to get a lossless representation
- /// of the string you'll need to manually use the `iter` method (or the
- /// `char_code_at` accessor) to view the raw character codes.
- ///
- /// For more information, see the documentation on [JS strings vs Rust
- /// strings][docs]
- ///
- /// [docs]: https://rustwasm.github.io/docs/wasm-bindgen/reference/types/str.html
- pub fn is_valid_utf16(&self) -> bool {
- core::char::decode_utf16(self.iter()).all(|i| i.is_ok())
- }
-
- /// Returns an iterator over the `u16` character codes that make up this JS
- /// string.
- ///
- /// This method will call `char_code_at` for each code in this JS string,
- /// returning an iterator of the codes in sequence.
- pub fn iter(
- &self,
- ) -> impl ExactSizeIterator<Item = u16> + DoubleEndedIterator<Item = u16> + '_ {
- (0..self.length()).map(move |i| self.char_code_at(i) as u16)
- }
-
- /// If this string consists of a single Unicode code point, then this method
- /// converts it into a Rust `char` without doing any allocations.
- ///
- /// If this JS value is not a valid UTF-8 or consists of more than a single
- /// codepoint, then this returns `None`.
- ///
- /// Note that a single Unicode code point might be represented as more than
- /// one code unit on the JavaScript side. For example, a JavaScript string
- /// `"\uD801\uDC37"` is actually a single Unicode code point U+10437 which
- /// corresponds to a character '𐐷'.
- pub fn as_char(&self) -> Option<char> {
- let len = self.length();
-
- if len == 0 || len > 2 {
- return None;
- }
-
- // This will be simplified when definitions are fixed:
- // https://github.com/rustwasm/wasm-bindgen/issues/1362
- let cp = self.code_point_at(0).as_f64().unwrap_throw() as u32;
-
- let c = core::char::from_u32(cp)?;
-
- if c.len_utf16() as u32 == len {
- Some(c)
- } else {
- None
- }
- }
-}
-
-impl PartialEq<str> for JsString {
- #[allow(clippy::cmp_owned)] // prevent infinite recursion
- fn eq(&self, other: &str) -> bool {
- String::from(self) == other
- }
-}
-
-impl<'a> PartialEq<&'a str> for JsString {
- fn eq(&self, other: &&'a str) -> bool {
- <JsString as PartialEq<str>>::eq(self, other)
- }
-}
-
-impl PartialEq<String> for JsString {
- fn eq(&self, other: &String) -> bool {
- <JsString as PartialEq<str>>::eq(self, other)
- }
-}
-
-impl<'a> PartialEq<&'a String> for JsString {
- fn eq(&self, other: &&'a String) -> bool {
- <JsString as PartialEq<str>>::eq(self, other)
- }
-}
-
-impl<'a> From<&'a str> for JsString {
- fn from(s: &'a str) -> Self {
- JsString::unchecked_from_js(JsValue::from_str(s))
- }
-}
-
-impl From<String> for JsString {
- fn from(s: String) -> Self {
- From::from(&*s)
- }
-}
-
-impl From<char> for JsString {
- #[inline]
- fn from(c: char) -> Self {
- JsString::from_code_point1(c as u32).unwrap_throw()
- }
-}
-
-impl<'a> From<&'a JsString> for String {
- fn from(s: &'a JsString) -> Self {
- s.obj.as_string().unwrap_throw()
- }
-}
-
-impl From<JsString> for String {
- fn from(s: JsString) -> Self {
- From::from(&s)
- }
-}
-
-impl fmt::Debug for JsString {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Debug::fmt(&String::from(self), f)
- }
-}
-
-impl fmt::Display for JsString {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Display::fmt(&String::from(self), f)
- }
-}
-
-impl str::FromStr for JsString {
- type Err = convert::Infallible;
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- Ok(JsString::from(s))
- }
-}
-
-// Symbol
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(is_type_of = JsValue::is_symbol, typescript_type = "Symbol")]
- #[derive(Clone, Debug)]
- pub type Symbol;
-
- /// The `Symbol.hasInstance` well-known symbol is used to determine
- /// if a constructor object recognizes an object as its instance.
- /// The `instanceof` operator's behavior can be customized by this symbol.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = hasInstance)]
- pub fn has_instance() -> Symbol;
-
- /// The `Symbol.isConcatSpreadable` well-known symbol is used to configure
- /// if an object should be flattened to its array elements when using the
- /// `Array.prototype.concat()` method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = isConcatSpreadable)]
- pub fn is_concat_spreadable() -> Symbol;
-
- /// The `Symbol.asyncIterator` well-known symbol specifies the default AsyncIterator for an object.
- /// If this property is set on an object, it is an async iterable and can be used in a `for await...of` loop.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = asyncIterator)]
- pub fn async_iterator() -> Symbol;
-
- /// The `Symbol.iterator` well-known symbol specifies the default iterator
- /// for an object. Used by `for...of`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural)]
- pub fn iterator() -> Symbol;
-
- /// The `Symbol.match` well-known symbol specifies the matching of a regular
- /// expression against a string. This function is called by the
- /// `String.prototype.match()` method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/match)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = match)]
- pub fn match_() -> Symbol;
-
- /// The `Symbol.replace` well-known symbol specifies the method that
- /// replaces matched substrings of a string. This function is called by the
- /// `String.prototype.replace()` method.
- ///
- /// For more information, see `RegExp.prototype[@@replace]()` and
- /// `String.prototype.replace()`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural)]
- pub fn replace() -> Symbol;
-
- /// The `Symbol.search` well-known symbol specifies the method that returns
- /// the index within a string that matches the regular expression. This
- /// function is called by the `String.prototype.search()` method.
- ///
- /// For more information, see `RegExp.prototype[@@search]()` and
- /// `String.prototype.search()`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/search)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural)]
- pub fn search() -> Symbol;
-
- /// The well-known symbol `Symbol.species` specifies a function-valued
- /// property that the constructor function uses to create derived objects.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural)]
- pub fn species() -> Symbol;
-
- /// The `Symbol.split` well-known symbol specifies the method that splits a
- /// string at the indices that match a regular expression. This function is
- /// called by the `String.prototype.split()` method.
- ///
- /// For more information, see `RegExp.prototype[@@split]()` and
- /// `String.prototype.split()`.
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural)]
- pub fn split() -> Symbol;
-
- /// The `Symbol.toPrimitive` is a symbol that specifies a function valued
- /// property that is called to convert an object to a corresponding
- /// primitive value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = toPrimitive)]
- pub fn to_primitive() -> Symbol;
-
- /// The `Symbol.toStringTag` well-known symbol is a string valued property
- /// that is used in the creation of the default string description of an
- /// object. It is accessed internally by the `Object.prototype.toString()`
- /// method.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toString)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = toStringTag)]
- pub fn to_string_tag() -> Symbol;
-
- /// The `Symbol.for(key)` method searches for existing symbols in a runtime-wide symbol registry with
- /// the given key and returns it if found.
- /// Otherwise a new symbol gets created in the global symbol registry with this key.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for)
- #[wasm_bindgen(static_method_of = Symbol, js_name = for)]
- pub fn for_(key: &str) -> Symbol;
-
- /// The `Symbol.keyFor(sym)` method retrieves a shared symbol key from the global symbol registry for the given symbol.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/keyFor)
- #[wasm_bindgen(static_method_of = Symbol, js_name = keyFor)]
- pub fn key_for(sym: &Symbol) -> JsValue;
-
- /// The `toString()` method returns a string representing the specified Symbol object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toString)
- #[wasm_bindgen(method, js_name = toString)]
- pub fn to_string(this: &Symbol) -> JsString;
-
- /// The `Symbol.unscopables` well-known symbol is used to specify an object
- /// value of whose own and inherited property names are excluded from the
- /// with environment bindings of the associated object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/unscopables)
- #[wasm_bindgen(static_method_of = Symbol, getter, structural)]
- pub fn unscopables() -> Symbol;
-
- /// The `valueOf()` method returns the primitive value of a Symbol object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/valueOf)
- #[wasm_bindgen(method, js_name = valueOf)]
- pub fn value_of(this: &Symbol) -> Symbol;
-}
-
-#[allow(non_snake_case)]
-pub mod Intl {
- use super::*;
-
- // Intl
- #[wasm_bindgen]
- extern "C" {
- /// The `Intl.getCanonicalLocales()` method returns an array containing
- /// the canonical locale names. Duplicates will be omitted and elements
- /// will be validated as structurally valid language tags.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales)
- #[wasm_bindgen(js_name = getCanonicalLocales, js_namespace = Intl)]
- pub fn get_canonical_locales(s: &JsValue) -> Array;
- }
-
- // Intl.Collator
- #[wasm_bindgen]
- extern "C" {
- /// The `Intl.Collator` object is a constructor for collators, objects
- /// that enable language sensitive string comparison.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator)
- #[wasm_bindgen(extends = Object, js_namespace = Intl, typescript_type = "Intl.Collator")]
- #[derive(Clone, Debug)]
- pub type Collator;
-
- /// The `Intl.Collator` object is a constructor for collators, objects
- /// that enable language sensitive string comparison.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator)
- #[wasm_bindgen(constructor, js_namespace = Intl)]
- pub fn new(locales: &Array, options: &Object) -> Collator;
-
- /// The Intl.Collator.prototype.compare property returns a function that
- /// compares two strings according to the sort order of this Collator
- /// object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/compare)
- #[wasm_bindgen(method, getter, js_class = "Intl.Collator")]
- pub fn compare(this: &Collator) -> Function;
-
- /// The `Intl.Collator.prototype.resolvedOptions()` method returns a new
- /// object with properties reflecting the locale and collation options
- /// computed during initialization of this Collator object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/resolvedOptions)
- #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)]
- pub fn resolved_options(this: &Collator) -> Object;
-
- /// The `Intl.Collator.supportedLocalesOf()` method returns an array
- /// containing those of the provided locales that are supported in
- /// collation without having to fall back to the runtime's default
- /// locale.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/supportedLocalesOf)
- #[wasm_bindgen(static_method_of = Collator, js_namespace = Intl, js_name = supportedLocalesOf)]
- pub fn supported_locales_of(locales: &Array, options: &Object) -> Array;
- }
-
- impl Default for Collator {
- fn default() -> Self {
- Self::new(
- &JsValue::UNDEFINED.unchecked_into(),
- &JsValue::UNDEFINED.unchecked_into(),
- )
- }
- }
-
- // Intl.DateTimeFormat
- #[wasm_bindgen]
- extern "C" {
- /// The `Intl.DateTimeFormat` object is a constructor for objects
- /// that enable language-sensitive date and time formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)
- #[wasm_bindgen(extends = Object, js_namespace = Intl, typescript_type = "Intl.DateTimeFormat")]
- #[derive(Clone, Debug)]
- pub type DateTimeFormat;
-
- /// The `Intl.DateTimeFormat` object is a constructor for objects
- /// that enable language-sensitive date and time formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)
- #[wasm_bindgen(constructor, js_namespace = Intl)]
- pub fn new(locales: &Array, options: &Object) -> DateTimeFormat;
-
- /// The Intl.DateTimeFormat.prototype.format property returns a getter function that
- /// formats a date according to the locale and formatting options of this
- /// Intl.DateTimeFormat object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/format)
- #[wasm_bindgen(method, getter, js_class = "Intl.DateTimeFormat")]
- pub fn format(this: &DateTimeFormat) -> Function;
-
- /// The `Intl.DateTimeFormat.prototype.formatToParts()` method allows locale-aware
- /// formatting of strings produced by DateTimeFormat formatters.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts)
- #[wasm_bindgen(method, js_class = "Intl.DateTimeFormat", js_name = formatToParts)]
- pub fn format_to_parts(this: &DateTimeFormat, date: &Date) -> Array;
-
- /// The `Intl.DateTimeFormat.prototype.resolvedOptions()` method returns a new
- /// object with properties reflecting the locale and date and time formatting
- /// options computed during initialization of this DateTimeFormat object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions)
- #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)]
- pub fn resolved_options(this: &DateTimeFormat) -> Object;
-
- /// The `Intl.DateTimeFormat.supportedLocalesOf()` method returns an array
- /// containing those of the provided locales that are supported in date
- /// and time formatting without having to fall back to the runtime's default
- /// locale.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/supportedLocalesOf)
- #[wasm_bindgen(static_method_of = DateTimeFormat, js_namespace = Intl, js_name = supportedLocalesOf)]
- pub fn supported_locales_of(locales: &Array, options: &Object) -> Array;
- }
-
- impl Default for DateTimeFormat {
- fn default() -> Self {
- Self::new(
- &JsValue::UNDEFINED.unchecked_into(),
- &JsValue::UNDEFINED.unchecked_into(),
- )
- }
- }
-
- // Intl.NumberFormat
- #[wasm_bindgen]
- extern "C" {
- /// The `Intl.NumberFormat` object is a constructor for objects
- /// that enable language sensitive number formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat)
- #[wasm_bindgen(extends = Object, js_namespace = Intl, typescript_type = "Intl.NumberFormat")]
- #[derive(Clone, Debug)]
- pub type NumberFormat;
-
- /// The `Intl.NumberFormat` object is a constructor for objects
- /// that enable language sensitive number formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat)
- #[wasm_bindgen(constructor, js_namespace = Intl)]
- pub fn new(locales: &Array, options: &Object) -> NumberFormat;
-
- /// The Intl.NumberFormat.prototype.format property returns a getter function that
- /// formats a number according to the locale and formatting options of this
- /// NumberFormat object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/format)
- #[wasm_bindgen(method, getter, js_class = "Intl.NumberFormat")]
- pub fn format(this: &NumberFormat) -> Function;
-
- /// The `Intl.Numberformat.prototype.formatToParts()` method allows locale-aware
- /// formatting of strings produced by NumberTimeFormat formatters.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/formatToParts)
- #[wasm_bindgen(method, js_class = "Intl.NumberFormat", js_name = formatToParts)]
- pub fn format_to_parts(this: &NumberFormat, number: f64) -> Array;
-
- /// The `Intl.NumberFormat.prototype.resolvedOptions()` method returns a new
- /// object with properties reflecting the locale and number formatting
- /// options computed during initialization of this NumberFormat object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/resolvedOptions)
- #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)]
- pub fn resolved_options(this: &NumberFormat) -> Object;
-
- /// The `Intl.NumberFormat.supportedLocalesOf()` method returns an array
- /// containing those of the provided locales that are supported in number
- /// formatting without having to fall back to the runtime's default locale.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/supportedLocalesOf)
- #[wasm_bindgen(static_method_of = NumberFormat, js_namespace = Intl, js_name = supportedLocalesOf)]
- pub fn supported_locales_of(locales: &Array, options: &Object) -> Array;
- }
-
- impl Default for NumberFormat {
- fn default() -> Self {
- Self::new(
- &JsValue::UNDEFINED.unchecked_into(),
- &JsValue::UNDEFINED.unchecked_into(),
- )
- }
- }
-
- // Intl.PluralRules
- #[wasm_bindgen]
- extern "C" {
- /// The `Intl.PluralRules` object is a constructor for objects
- /// that enable plural sensitive formatting and plural language rules.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules)
- #[wasm_bindgen(extends = Object, js_namespace = Intl, typescript_type = "Intl.PluralRules")]
- #[derive(Clone, Debug)]
- pub type PluralRules;
-
- /// The `Intl.PluralRules` object is a constructor for objects
- /// that enable plural sensitive formatting and plural language rules.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules)
- #[wasm_bindgen(constructor, js_namespace = Intl)]
- pub fn new(locales: &Array, options: &Object) -> PluralRules;
-
- /// The `Intl.PluralRules.prototype.resolvedOptions()` method returns a new
- /// object with properties reflecting the locale and plural formatting
- /// options computed during initialization of this PluralRules object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/resolvedOptions)
- #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)]
- pub fn resolved_options(this: &PluralRules) -> Object;
-
- /// The `Intl.PluralRules.prototype.select()` method returns a String indicating
- /// which plural rule to use for locale-aware formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/select)
- #[wasm_bindgen(method, js_namespace = Intl)]
- pub fn select(this: &PluralRules, number: f64) -> JsString;
-
- /// The `Intl.PluralRules.supportedLocalesOf()` method returns an array
- /// containing those of the provided locales that are supported in plural
- /// formatting without having to fall back to the runtime's default locale.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/supportedLocalesOf)
- #[wasm_bindgen(static_method_of = PluralRules, js_namespace = Intl, js_name = supportedLocalesOf)]
- pub fn supported_locales_of(locales: &Array, options: &Object) -> Array;
- }
-
- impl Default for PluralRules {
- fn default() -> Self {
- Self::new(
- &JsValue::UNDEFINED.unchecked_into(),
- &JsValue::UNDEFINED.unchecked_into(),
- )
- }
- }
-
- // Intl.RelativeTimeFormat
- #[wasm_bindgen]
- extern "C" {
- /// The `Intl.RelativeTimeFormat` object is a constructor for objects
- /// that enable language-sensitive relative time formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat)
- #[wasm_bindgen(extends = Object, js_namespace = Intl, typescript_type = "Intl.RelativeTimeFormat")]
- #[derive(Clone, Debug)]
- pub type RelativeTimeFormat;
-
- /// The `Intl.RelativeTimeFormat` object is a constructor for objects
- /// that enable language-sensitive relative time formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat)
- #[wasm_bindgen(constructor, js_namespace = Intl)]
- pub fn new(locales: &Array, options: &Object) -> RelativeTimeFormat;
-
- /// The `Intl.RelativeTimeFormat.prototype.format` method formats a `value` and `unit`
- /// according to the locale and formatting options of this Intl.RelativeTimeFormat object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/format)
- #[wasm_bindgen(method, js_class = "Intl.RelativeTimeFormat")]
- pub fn format(this: &RelativeTimeFormat, value: f64, unit: &str) -> JsString;
-
- /// The `Intl.RelativeTimeFormat.prototype.formatToParts()` method returns an array of
- /// objects representing the relative time format in parts that can be used for custom locale-aware formatting.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/formatToParts)
- #[wasm_bindgen(method, js_class = "Intl.RelativeTimeFormat", js_name = formatToParts)]
- pub fn format_to_parts(this: &RelativeTimeFormat, value: f64, unit: &str) -> Array;
-
- /// The `Intl.RelativeTimeFormat.prototype.resolvedOptions()` method returns a new
- /// object with properties reflecting the locale and relative time formatting
- /// options computed during initialization of this RelativeTimeFormat object.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/resolvedOptions)
- #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)]
- pub fn resolved_options(this: &RelativeTimeFormat) -> Object;
-
- /// The `Intl.RelativeTimeFormat.supportedLocalesOf()` method returns an array
- /// containing those of the provided locales that are supported in date and time
- /// formatting without having to fall back to the runtime's default locale.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat/supportedLocalesOf)
- #[wasm_bindgen(static_method_of = RelativeTimeFormat, js_namespace = Intl, js_name = supportedLocalesOf)]
- pub fn supported_locales_of(locales: &Array, options: &Object) -> Array;
- }
-
- impl Default for RelativeTimeFormat {
- fn default() -> Self {
- Self::new(
- &JsValue::UNDEFINED.unchecked_into(),
- &JsValue::UNDEFINED.unchecked_into(),
- )
- }
- }
-}
-
-// Promise
-#[wasm_bindgen]
-extern "C" {
- /// The `Promise` object represents the eventual completion (or failure) of
- /// an asynchronous operation, and its resulting value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
- #[must_use]
- #[wasm_bindgen(extends = Object, typescript_type = "Promise<any>")]
- #[derive(Clone, Debug)]
- pub type Promise;
-
- /// Creates a new `Promise` with the provided executor `cb`
- ///
- /// The `cb` is a function that is passed with the arguments `resolve` and
- /// `reject`. The `cb` function is executed immediately by the `Promise`
- /// implementation, passing `resolve` and `reject` functions (the executor
- /// is called before the `Promise` constructor even returns the created
- /// object). The `resolve` and `reject` functions, when called, resolve or
- /// reject the promise, respectively. The executor normally initiates
- /// some asynchronous work, and then, once that completes, either calls
- /// the `resolve` function to resolve the promise or else rejects it if an
- /// error occurred.
- ///
- /// If an error is thrown in the executor function, the promise is rejected.
- /// The return value of the executor is ignored.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
- #[wasm_bindgen(constructor)]
- pub fn new(cb: &mut dyn FnMut(Function, Function)) -> Promise;
-
- /// The `Promise.all(iterable)` method returns a single `Promise` that
- /// resolves when all of the promises in the iterable argument have resolved
- /// or when the iterable argument contains no promises. It rejects with the
- /// reason of the first promise that rejects.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)
- #[wasm_bindgen(static_method_of = Promise)]
- pub fn all(obj: &JsValue) -> Promise;
-
- /// The `Promise.allSettled(iterable)` method returns a single `Promise` that
- /// resolves when all of the promises in the iterable argument have either
- /// fulfilled or rejected or when the iterable argument contains no promises.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled)
- #[wasm_bindgen(static_method_of = Promise, js_name = allSettled)]
- pub fn all_settled(obj: &JsValue) -> Promise;
-
- /// The `Promise.any(iterable)` method returns a single `Promise` that
- /// resolves when any of the promises in the iterable argument have resolved
- /// or when the iterable argument contains no promises. It rejects with an
- /// `AggregateError` if all promises in the iterable rejected.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any)
- #[wasm_bindgen(static_method_of = Promise)]
- pub fn any(obj: &JsValue) -> Promise;
-
- /// The `Promise.race(iterable)` method returns a promise that resolves or
- /// rejects as soon as one of the promises in the iterable resolves or
- /// rejects, with the value or reason from that promise.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race)
- #[wasm_bindgen(static_method_of = Promise)]
- pub fn race(obj: &JsValue) -> Promise;
-
- /// The `Promise.reject(reason)` method returns a `Promise` object that is
- /// rejected with the given reason.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject)
- #[wasm_bindgen(static_method_of = Promise)]
- pub fn reject(obj: &JsValue) -> Promise;
-
- /// The `Promise.resolve(value)` method returns a `Promise` object that is
- /// resolved with the given value. If the value is a promise, that promise
- /// is returned; if the value is a thenable (i.e. has a "then" method), the
- /// returned promise will "follow" that thenable, adopting its eventual
- /// state; otherwise the returned promise will be fulfilled with the value.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve)
- #[wasm_bindgen(static_method_of = Promise)]
- pub fn resolve(obj: &JsValue) -> Promise;
-
- /// The `catch()` method returns a `Promise` and deals with rejected cases
- /// only. It behaves the same as calling `Promise.prototype.then(undefined,
- /// onRejected)` (in fact, calling `obj.catch(onRejected)` internally calls
- /// `obj.then(undefined, onRejected)`).
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch)
- #[wasm_bindgen(method)]
- pub fn catch(this: &Promise, cb: &Closure<dyn FnMut(JsValue)>) -> Promise;
-
- /// The `then()` method returns a `Promise`. It takes up to two arguments:
- /// callback functions for the success and failure cases of the `Promise`.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then)
- #[wasm_bindgen(method)]
- pub fn then(this: &Promise, cb: &Closure<dyn FnMut(JsValue)>) -> Promise;
-
- /// Same as `then`, only with both arguments provided.
- #[wasm_bindgen(method, js_name = then)]
- pub fn then2(
- this: &Promise,
- resolve: &Closure<dyn FnMut(JsValue)>,
- reject: &Closure<dyn FnMut(JsValue)>,
- ) -> Promise;
-
- /// The `finally()` method returns a `Promise`. When the promise is settled,
- /// whether fulfilled or rejected, the specified callback function is
- /// executed. This provides a way for code that must be executed once the
- /// `Promise` has been dealt with to be run whether the promise was
- /// fulfilled successfully or rejected.
- ///
- /// This lets you avoid duplicating code in both the promise's `then()` and
- /// `catch()` handlers.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally)
- #[wasm_bindgen(method)]
- pub fn finally(this: &Promise, cb: &Closure<dyn FnMut()>) -> Promise;
-}
-
-/// Returns a handle to the global scope object.
-///
-/// This allows access to the global properties and global names by accessing
-/// the `Object` returned.
-pub fn global() -> Object {
- use once_cell::unsync::Lazy;
-
- struct Wrapper<T>(Lazy<T>);
-
- #[cfg(not(target_feature = "atomics"))]
- unsafe impl<T> Sync for Wrapper<T> {}
-
- #[cfg(not(target_feature = "atomics"))]
- unsafe impl<T> Send for Wrapper<T> {}
-
- #[cfg_attr(target_feature = "atomics", thread_local)]
- static GLOBAL: Wrapper<Object> = Wrapper(Lazy::new(get_global_object));
-
- return GLOBAL.0.clone();
-
- fn get_global_object() -> Object {
- // Accessing the global object is not an easy thing to do, and what we
- // basically want is `globalThis` but we can't rely on that existing
- // everywhere. In the meantime we've got the fallbacks mentioned in:
- //
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis
- //
- // Note that this is pretty heavy code-size wise but it at least gets
- // the job largely done for now and avoids the `Function` constructor at
- // the end which triggers CSP errors.
- #[wasm_bindgen]
- extern "C" {
- type Global;
-
- #[wasm_bindgen(thread_local_v2, js_name = globalThis)]
- static GLOBAL_THIS: Option<Object>;
-
- #[wasm_bindgen(thread_local_v2, js_name = self)]
- static SELF: Option<Object>;
-
- #[wasm_bindgen(thread_local_v2, js_name = window)]
- static WINDOW: Option<Object>;
-
- #[wasm_bindgen(thread_local_v2, js_name = global)]
- static GLOBAL: Option<Object>;
- }
-
- // The order is important: in Firefox Extension Content Scripts `globalThis`
- // is a Sandbox (not Window), so `globalThis` must be checked after `window`.
- let static_object = SELF
- .with(Option::clone)
- .or_else(|| WINDOW.with(Option::clone))
- .or_else(|| GLOBAL_THIS.with(Option::clone))
- .or_else(|| GLOBAL.with(Option::clone));
- if let Some(obj) = static_object {
- if !obj.is_undefined() {
- return obj;
- }
- }
-
- // According to StackOverflow you can access the global object via:
- //
- // const global = Function('return this')();
- //
- // I think that's because the manufactured function isn't in "strict" mode.
- // It also turns out that non-strict functions will ignore `undefined`
- // values for `this` when using the `apply` function.
- //
- // As a result we use the equivalent of this snippet to get a handle to the
- // global object in a sort of roundabout way that should hopefully work in
- // all contexts like ESM, node, browsers, etc.
- let this = Function::new_no_args("return this")
- .call0(&JsValue::undefined())
- .ok();
-
- // Note that we avoid `unwrap()` on `call0` to avoid code size bloat, we
- // just handle the `Err` case as returning a different object.
- debug_assert!(this.is_some());
- match this {
- Some(this) => this.unchecked_into(),
- None => JsValue::undefined().unchecked_into(),
- }
- }
-}
-
-macro_rules! arrays {
- ($(#[doc = $ctor:literal] #[doc = $mdn:literal] $name:ident: $ty:ident,)*) => ($(
- #[wasm_bindgen]
- extern "C" {
- #[wasm_bindgen(extends = Object, typescript_type = $name)]
- #[derive(Clone, Debug)]
- pub type $name;
-
- /// The
- #[doc = $ctor]
- /// constructor creates a new array.
- ///
- /// [MDN documentation](
- #[doc = $mdn]
- /// )
- #[wasm_bindgen(constructor)]
- pub fn new(constructor_arg: &JsValue) -> $name;
-
- /// An
- #[doc = $ctor]
- /// which creates an array with an internal buffer large
- /// enough for `length` elements.
- ///
- /// [MDN documentation](
- #[doc = $mdn]
- /// )
- #[wasm_bindgen(constructor)]
- pub fn new_with_length(length: u32) -> $name;
-
- /// An
- #[doc = $ctor]
- /// which creates an array with the given buffer but is a
- /// view starting at `byte_offset`.
- ///
- /// [MDN documentation](
- #[doc = $mdn]
- /// )
- #[wasm_bindgen(constructor)]
- pub fn new_with_byte_offset(buffer: &JsValue, byte_offset: u32) -> $name;
-
- /// An
- #[doc = $ctor]
- /// which creates an array with the given buffer but is a
- /// view starting at `byte_offset` for `length` elements.
- ///
- /// [MDN documentation](
- #[doc = $mdn]
- /// )
- #[wasm_bindgen(constructor)]
- pub fn new_with_byte_offset_and_length(
- buffer: &JsValue,
- byte_offset: u32,
- length: u32,
- ) -> $name;
-
- /// The `fill()` method fills all the elements of an array from a start index
- /// to an end index with a static value. The end index is not included.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill)
- #[wasm_bindgen(method)]
- pub fn fill(this: &$name, value: $ty, start: u32, end: u32) -> $name;
-
- /// The buffer accessor property represents the `ArrayBuffer` referenced
- /// by a `TypedArray` at construction time.
- #[wasm_bindgen(getter, method)]
- pub fn buffer(this: &$name) -> ArrayBuffer;
-
- /// The `subarray()` method returns a new `TypedArray` on the same
- /// `ArrayBuffer` store and with the same element types as for this
- /// `TypedArray` object.
- #[wasm_bindgen(method)]
- pub fn subarray(this: &$name, begin: u32, end: u32) -> $name;
-
- /// The `slice()` method returns a shallow copy of a portion of a typed
- /// array into a new typed array object. This method has the same algorithm
- /// as `Array.prototype.slice()`.
- #[wasm_bindgen(method)]
- pub fn slice(this: &$name, begin: u32, end: u32) -> $name;
-
- /// The `forEach()` method executes a provided function once per array
- /// element. This method has the same algorithm as
- /// `Array.prototype.forEach()`. `TypedArray` is one of the typed array
- /// types here.
- #[wasm_bindgen(method, js_name = forEach)]
- pub fn for_each(this: &$name, callback: &mut dyn FnMut($ty, u32, $name));
-
- /// The length accessor property represents the length (in elements) of a
- /// typed array.
- #[wasm_bindgen(method, getter)]
- pub fn length(this: &$name) -> u32;
-
- /// The byteLength accessor property represents the length (in bytes) of a
- /// typed array.
- #[wasm_bindgen(method, getter, js_name = byteLength)]
- pub fn byte_length(this: &$name) -> u32;
-
- /// The byteOffset accessor property represents the offset (in bytes) of a
- /// typed array from the start of its `ArrayBuffer`.
- #[wasm_bindgen(method, getter, js_name = byteOffset)]
- pub fn byte_offset(this: &$name) -> u32;
-
- /// The `set()` method stores multiple values in the typed array, reading
- /// input values from a specified array.
- #[wasm_bindgen(method)]
- pub fn set(this: &$name, src: &JsValue, offset: u32);
-
- /// Gets the value at `idx`, counting from the end if negative.
- #[wasm_bindgen(method)]
- pub fn at(this: &$name, idx: i32) -> Option<$ty>;
-
- /// The `copyWithin()` method shallow copies part of a typed array to another
- /// location in the same typed array and returns it, without modifying its size.
- ///
- /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/copyWithin)
- #[wasm_bindgen(method, js_name = copyWithin)]
- pub fn copy_within(this: &$name, target: i32, start: i32, end: i32) -> $name;
-
- /// Gets the value at `idx`, equivalent to the javascript `my_var = arr[idx]`.
- #[wasm_bindgen(method, structural, indexing_getter)]
- pub fn get_index(this: &$name, idx: u32) -> $ty;
-
- /// Sets the value at `idx`, equivalent to the javascript `arr[idx] = value`.
- #[wasm_bindgen(method, structural, indexing_setter)]
- pub fn set_index(this: &$name, idx: u32, value: $ty);
- }
-
- impl $name {
- /// Creates a JS typed array which is a view into wasm's linear
- /// memory at the slice specified.
- ///
- /// This function returns a new typed array which is a view into
- /// wasm's memory. This view does not copy the underlying data.
- ///
- /// # Safety
- ///
- /// Views into WebAssembly memory are only valid so long as the
- /// backing buffer isn't resized in JS. Once this function is called
- /// any future calls to `Box::new` (or malloc of any form) may cause
- /// the returned value here to be invalidated. Use with caution!
- ///
- /// Additionally the returned object can be safely mutated but the
- /// input slice isn't guaranteed to be mutable.
- ///
- /// Finally, the returned object is disconnected from the input
- /// slice's lifetime, so there's no guarantee that the data is read
- /// at the right time.
- pub unsafe fn view(rust: &[$ty]) -> $name {
- let buf = wasm_bindgen::memory();
- let mem = buf.unchecked_ref::<WebAssembly::Memory>();
- $name::new_with_byte_offset_and_length(
- &mem.buffer(),
- rust.as_ptr() as u32,
- rust.len() as u32,
- )
- }
-
- /// Creates a JS typed array which is a view into wasm's linear
- /// memory at the specified pointer with specified length.
- ///
- /// This function returns a new typed array which is a view into
- /// wasm's memory. This view does not copy the underlying data.
- ///
- /// # Safety
- ///
- /// Views into WebAssembly memory are only valid so long as the
- /// backing buffer isn't resized in JS. Once this function is called
- /// any future calls to `Box::new` (or malloc of any form) may cause
- /// the returned value here to be invalidated. Use with caution!
- ///
- /// Additionally the returned object can be safely mutated,
- /// the changes are guaranteed to be reflected in the input array.
- pub unsafe fn view_mut_raw(ptr: *mut $ty, length: usize) -> $name {
- let buf = wasm_bindgen::memory();
- let mem = buf.unchecked_ref::<WebAssembly::Memory>();
- $name::new_with_byte_offset_and_length(
- &mem.buffer(),
- ptr as u32,
- length as u32
- )
- }
-
-
- /// Copy the contents of this JS typed array into the destination
- /// Rust pointer.
- ///
- /// This function will efficiently copy the memory from a typed
- /// array into this Wasm module's own linear memory, initializing
- /// the memory destination provided.
- ///
- /// # Safety
- ///
- /// This function requires `dst` to point to a buffer
- /// large enough to fit this array's contents.
- pub unsafe fn raw_copy_to_ptr(&self, dst: *mut $ty) {
- let buf = wasm_bindgen::memory();
- let mem = buf.unchecked_ref::<WebAssembly::Memory>();
- let all_wasm_memory = $name::new(&mem.buffer());
- let offset = dst as usize / mem::size_of::<$ty>();
- all_wasm_memory.set(self, offset as u32);
- }
-
- /// Copy the contents of this JS typed array into the destination
- /// Rust slice.
- ///
- /// This function will efficiently copy the memory from a typed
- /// array into this Wasm module's own linear memory, initializing
- /// the memory destination provided.
- ///
- /// # Panics
- ///
- /// This function will panic if this typed array's length is
- /// different than the length of the provided `dst` array.
- pub fn copy_to(&self, dst: &mut [$ty]) {
- core::assert_eq!(self.length() as usize, dst.len());
- unsafe { self.raw_copy_to_ptr(dst.as_mut_ptr()); }
- }
-
- /// Copy the contents of this JS typed array into the destination
- /// Rust slice.
- ///
- /// This function will efficiently copy the memory from a typed
- /// array into this Wasm module's own linear memory, initializing
- /// the memory destination provided.
- ///
- /// # Panics
- ///
- /// This function will panic if this typed array's length is
- /// different than the length of the provided `dst` array.
- pub fn copy_to_uninit<'dst>(&self, dst: &'dst mut [MaybeUninit<$ty>]) -> &'dst mut [$ty] {
- core::assert_eq!(self.length() as usize, dst.len());
- unsafe { self.raw_copy_to_ptr(dst.as_mut_ptr().cast()); }
- unsafe { &mut *(dst as *mut [MaybeUninit<$ty>] as *mut [$ty]) }
- }
-
- /// Copy the contents of the source Rust slice into this
- /// JS typed array.
- ///
- /// This function will efficiently copy the memory from within
- /// the Wasm module's own linear memory to this typed array.
- ///
- /// # Panics
- ///
- /// This function will panic if this typed array's length is
- /// different than the length of the provided `src` array.
- pub fn copy_from(&self, src: &[$ty]) {
- core::assert_eq!(self.length() as usize, src.len());
- // This is safe because the `set` function copies from its TypedArray argument
- unsafe { self.set(&$name::view(src), 0) }
- }
-
- /// Efficiently copies the contents of this JS typed array into a new Vec.
- pub fn to_vec(&self) -> Vec<$ty> {
- let mut output = Vec::with_capacity(self.length() as usize);
- unsafe {
- self.raw_copy_to_ptr(output.as_mut_ptr());
- output.set_len(self.length() as usize);
- }
- output
- }
- }
-
- impl<'a> From<&'a [$ty]> for $name {
- #[inline]
- fn from(slice: &'a [$ty]) -> $name {
- // This is safe because the `new` function makes a copy if its argument is a TypedArray
- unsafe { $name::new(&$name::view(slice)) }
- }
- }
-
- impl Default for $name {
- fn default() -> Self {
- Self::new(&JsValue::UNDEFINED.unchecked_into())
- }
- }
- )*);
-}
-
-arrays! {
- /// `Int8Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array
- Int8Array: i8,
-
- /// `Int16Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array
- Int16Array: i16,
-
- /// `Int32Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array
- Int32Array: i32,
-
- /// `Uint8Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array
- Uint8Array: u8,
-
- /// `Uint8ClampedArray()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray
- Uint8ClampedArray: u8,
-
- /// `Uint16Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array
- Uint16Array: u16,
-
- /// `Uint32Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array
- Uint32Array: u32,
-
- /// `Float32Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array
- Float32Array: f32,
-
- /// `Float64Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array
- Float64Array: f64,
-
- /// `BigInt64Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array
- BigInt64Array: i64,
-
- /// `BigUint64Array()`
- /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigUint64Array
- BigUint64Array: u64,
-}