std/jscore

Search:
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.

Types

DateLib = ref object
Source   Edit  
DateTime = ref object
Source   Edit  
JsonLib = ref object
Source   Edit  
MathLib = ref object
Source   Edit  

Vars

Date {.importc, nodecl.}: DateLib
Source   Edit  
JSON {.importc, nodecl.}: JsonLib
Source   Edit  
Math {.importc, nodecl.}: MathLib
Source   Edit  

Procs

proc abs(m: MathLib; a: SomeNumber): SomeNumber {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc acos(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc acosh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc asin(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc asinh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc atan(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc atan2(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc atanh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc cbrt(m: MathLib; f: SomeFloat): SomeFloat {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc ceil(m: MathLib; f: SomeFloat): SomeFloat {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc clz32(m: MathLib; f: SomeInteger): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
func copyWithin[T](self: openArray[T]; target, start, ends: int): seq[T] {.
    importjs: "#.copyWithin(#, #, #)", ...raises: [], tags: [], forbids: [].}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin copyWithin uses shallow copy.

Example:

assert ['a', 'b', 'c', 'd', 'e'].copyWithin(0, 3, 4) == @['d', 'b', 'c', 'd', 'e']
assert ['a', 'b', 'c', 'd', 'e'].copyWithin(1, 3) == @['a', 'd', 'e', 'd', 'e']
assert [1, 2, 3, 4, 5].copyWithin(-2) == @[1, 2, 3, 1, 2]
assert [1, 2, 3, 4, 5].copyWithin(0, 3) == @[4, 5, 3, 4, 5]
assert [1, 2, 3, 4, 5].copyWithin(0, 3, 4) == @[4, 2, 3, 4, 5]
assert [1, 2, 3, 4, 5].copyWithin(-2, -3, -1) == @[1, 2, 3, 3, 4]
Source   Edit  
func copyWithin[T](self: openArray[T]; target, start: int): seq[T] {.
    importjs: "#.copyWithin(#, #)", ...raises: [], tags: [], forbids: [].}
Source   Edit  
func copyWithin[T](self: openArray[T]; target: int): seq[T] {.
    importjs: "#.copyWithin(#)", ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc cos(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc cosh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
func debugger() {.importjs: "debugger@", ...raises: [], tags: [], forbids: [].}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger Source   Edit  
proc exp(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc expm1(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc floor(m: MathLib; f: SomeFloat): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc fround(m: MathLib; f: SomeFloat): float32 {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc getDay(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getFullYear(d: DateTime): int {.importcpp, ...raises: [], tags: [],
                                     forbids: [].}
Source   Edit  
proc getHours(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getMilliseconds(d: DateTime): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc getMinutes(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getMonth(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getSeconds(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getTime(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getTimezoneOffset(d: DateTime): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc getUTCDate(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getUTCDay(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc getUTCFullYear(d: DateTime): int {.importcpp, ...raises: [], tags: [],
                                        forbids: [].}
Source   Edit  
proc getUTCHours(d: DateTime): int {.importcpp, ...raises: [], tags: [],
                                     forbids: [].}
Source   Edit  
proc getUTCMilliseconds(d: DateTime): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc getUTCMinutes(d: DateTime): int {.importcpp, ...raises: [], tags: [],
                                       forbids: [].}
Source   Edit  
proc getUTCMonth(d: DateTime): int {.importcpp, ...raises: [], tags: [],
                                     forbids: [].}
Source   Edit  
proc getUTCSeconds(d: DateTime): int {.importcpp, ...raises: [], tags: [],
                                       forbids: [].}
Source   Edit  
proc getYear(d: DateTime): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc hypot(m: MathLib; args: varargs[distinct SomeNumber]): float {.importcpp,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc imul(m: MathLib; a, b: int32): int32 {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc log(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc log1p(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc log2(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc log10(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc max(m: MathLib; a, b: SomeNumber): SomeNumber {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc min[T: SomeNumber | JsRoot](m: MathLib; a, b: T): T {.importcpp,
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc newDate(): DateTime {.importcpp: "new Date()", ...raises: [], tags: [],
                           forbids: [].}
Source   Edit  
proc newDate(date: int | string): DateTime {.importcpp: "new Date(#)",
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc newDate(date: int64): DateTime {.importcpp: "new Date(Number(#))",
                                      ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc newDate(year, month, day, hours, minutes, seconds, milliseconds: int): DateTime {.
    importcpp: "new Date(#,#,#,#,#,#,#)", ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc now(d: DateLib): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc parse(d: DateLib; s: cstring): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc parse(l: JsonLib; s: cstring): JsRoot {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc pow(m: MathLib; a, b: distinct SomeNumber): float {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
func queueMicrotask(function: proc) {.importjs: "$1(#)", ...raises: [], tags: [],
                                      forbids: [].}

Example: cmd: -r:off

queueMicrotask(proc() = echo "Microtask")
Source   Edit  
proc random(m: MathLib): float {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc round(m: MathLib; f: SomeFloat): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc setFullYear(d: DateTime; year: int) {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
func shift[T](self: seq[T]): T {.importjs: "#.$1()", ...raises: [], tags: [],
                                 forbids: [].}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

Example:

var arrai = @[1, 2, 3]
assert arrai.shift() == 1
assert arrai == @[2, 3]
Source   Edit  
proc sign(m: MathLib; f: SomeNumber): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc sin(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc sinh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc sqrt(m: MathLib; f: SomeFloat): SomeFloat {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc stringify(l: JsonLib; s: JsRoot): cstring {.importcpp, ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc tan(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc tanh(m: MathLib; a: SomeNumber): float {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
func toDateString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
func toISOString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
func toJSON(d: DateTime): cstring {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc toString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
                                      forbids: [].}
Source   Edit  
func toTimeString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
func toUTCString(d: DateTime): cstring {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc trunc(m: MathLib; f: SomeFloat): int {.importcpp, ...raises: [], tags: [],
    forbids: [].}
Source   Edit  
proc UTC(d: DateLib): int {.importcpp, ...raises: [], tags: [], forbids: [].}
Source   Edit