Source Edit

This module wraps core JavaScript functions.

Unless your application has very specific requirements and solely targets JavaScript, you should be using the relevant functions in the math, json, and times stdlib modules instead.

Imports

since, jsutils

Types

  1. DateLib = ref object

Source Edit

  1. DateTime = ref object

Source Edit

  1. JsonLib = ref object

Source Edit

  1. MathLib = ref object

Source Edit

Vars

  1. Date {.importc, nodecl.}: DateLib

Source Edit

  1. JSON {.importc, nodecl.}: JsonLib

Source Edit

  1. Math {.importc, nodecl.}: MathLib

Source Edit

Procs

  1. proc abs(m: MathLib; a: SomeNumber): SomeNumber {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. proc acos(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc acosh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc asin(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc asinh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc atan(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc atan2(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc atanh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc cbrt(m: MathLib; f: SomeFloat): SomeFloat {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. proc ceil(m: MathLib; f: SomeFloat): SomeFloat {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. proc clz32(m: MathLib; f: SomeInteger): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func copyWithin[T](self: openArray[T]; target, start, ends: int): seq[T] {.
  2. importjs: "#.copyWithin(#, #, #)", ...raises: [], tags: [], forbids: [].}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin copyWithin uses shallow copy.

Example:

  1. assert ['a', 'b', 'c', 'd', 'e'].copyWithin(0, 3, 4) == @['d', 'b', 'c', 'd', 'e']
  2. assert ['a', 'b', 'c', 'd', 'e'].copyWithin(1, 3) == @['a', 'd', 'e', 'd', 'e']
  3. assert [1, 2, 3, 4, 5].copyWithin(-2) == @[1, 2, 3, 1, 2]
  4. assert [1, 2, 3, 4, 5].copyWithin(0, 3) == @[4, 5, 3, 4, 5]
  5. assert [1, 2, 3, 4, 5].copyWithin(0, 3, 4) == @[4, 2, 3, 4, 5]
  6. assert [1, 2, 3, 4, 5].copyWithin(-2, -3, -1) == @[1, 2, 3, 3, 4]

Source Edit

  1. func copyWithin[T](self: openArray[T]; target, start: int): seq[T] {.
  2. importjs: "#.copyWithin(#, #)", ...raises: [], tags: [], forbids: [].}

Source Edit

  1. func copyWithin[T](self: openArray[T]; target: int): seq[T] {.
  2. importjs: "#.copyWithin(#)", ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc cos(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc cosh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func debugger() {.importjs: "debugger@", ...raises: [], tags: [], forbids: [].}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger Source Edit

  1. proc exp(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc expm1(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc floor(m: MathLib; f: SomeFloat): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc fround(m: MathLib; f: SomeFloat): float32 {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. proc getDay(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getFullYear(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getHours(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getMilliseconds(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getMinutes(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getMonth(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getSeconds(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getTime(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getTimezoneOffset(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getUTCDate(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getUTCDay(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc getUTCFullYear(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getUTCHours(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getUTCMilliseconds(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getUTCMinutes(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getUTCMonth(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getUTCSeconds(d: DateTime): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc getYear(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc hypot(m: MathLib; args: varargs[distinct SomeNumber]): float {.importcpp,
  2. ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc imul(m: MathLib; a, b: int32): int32 {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc log(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc log1p(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc log2(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc log10(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc max(m: MathLib; a, b: SomeNumber): SomeNumber {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. proc min[T: SomeNumber | JsRoot](m: MathLib; a, b: T): T {.importcpp,
  2. ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc newDate(): DateTime {.importcpp: "new Date()", ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc newDate(date: int | string): DateTime {.importcpp: "new Date(#)",
  2. ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc newDate(date: int64): DateTime {.importcpp: "new Date(Number(#))",
  2. ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc newDate(year, month, day, hours, minutes, seconds, milliseconds: int): DateTime {.
  2. importcpp: "new Date(#,#,#,#,#,#,#)", ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc now(d: DateLib): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc parse(d: DateLib; s: cstring): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc parse(l: JsonLib; s: cstring): JsRoot {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc pow(m: MathLib; a, b: distinct SomeNumber): float {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. func queueMicrotask(function: proc) {.importjs: "$1(#)", ...raises: [], tags: [],
  2. forbids: [].}

Example: cmd: -r:off

  1. queueMicrotask(proc() = echo "Microtask")

Source Edit

  1. proc random(m: MathLib): float {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc round(m: MathLib; f: SomeFloat): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc setFullYear(d: DateTime; year: int) {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func shift[T](self: seq[T]): T {.importjs: "#.$1()", ...raises: [], tags: [],
  2. forbids: [].}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

Example:

  1. var arrai = @[1, 2, 3]
  2. assert arrai.shift() == 1
  3. assert arrai == @[2, 3]

Source Edit

  1. proc sign(m: MathLib; f: SomeNumber): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc sin(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc sinh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc sqrt(m: MathLib; f: SomeFloat): SomeFloat {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. proc stringify(l: JsonLib; s: JsRoot): cstring {.importcpp, ...raises: [],
  2. tags: [], forbids: [].}

Source Edit

  1. proc tan(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc tanh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func toDateString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func toISOString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func toJSON(d: DateTime): cstring {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit

  1. proc toString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func toTimeString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. func toUTCString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc trunc(m: MathLib; f: SomeFloat): int {.importcpp, ...raises: [], tags: [],
  2. forbids: [].}

Source Edit

  1. proc UTC(d: DateLib): int {.importcpp, ...raises: [], tags: [], forbids: [].}

Source Edit