Example:
import std/private/jsutils let a {.importjs: "Number.MAX_SAFE_INTEGER".}: int64 assert a == maxSafeInteger
Types
ArrayBuffer = ref object of JsRoot
- Source Edit
BigUint64Array = ref object of JsRoot
- Source Edit
Float64Array = ref object of JsRoot
- Source Edit
Uint8Array = ref object of JsRoot
- Source Edit
Uint32Array = ref object of JsRoot
- Source Edit
Consts
maxSafeInteger = 9007199254740991'i64
- The same as Number.MAX_SAFE_INTEGER or 2^53 - 1. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER Source Edit
Procs
func `[]`(arr: BigUint64Array; i: int): JsBigInt {.importjs: "#[#]", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc getProtoName[T](a: T): cstring {.importjs: "Object.prototype.toString.call(#)", ...raises: [], tags: [], forbids: [].}
-
Example:
import std/[jsffi, jsbigints] type A = ref object assert 1.toJs.getProtoName == "[object Number]" assert "a".toJs.getProtoName == "[object String]" assert big"1".toJs.getProtoName == "[object BigInt]" assert false.toJs.getProtoName == "[object Boolean]" assert (a: 1).toJs.getProtoName == "[object Object]" assert A.default.toJs.getProtoName == "[object Null]" assert [1].toJs.getProtoName == "[object Int32Array]" # implementation defined assert @[1].toJs.getProtoName == "[object Array]" # ditto
Source Edit proc hasBigUint64Array(): bool {....raises: [], tags: [], forbids: [].}
- Source Edit
proc hasJsBigInt(): bool {....raises: [], tags: [], forbids: [].}
- Source Edit
proc isSafeInteger[T](x: T): bool {.importjs: "Number.isSafeInteger(#)", ...raises: [], tags: [], forbids: [].}
-
Example:
import std/jsffi assert not "123".toJs.isSafeInteger assert 123.isSafeInteger assert 123.toJs.isSafeInteger when false: assert 9007199254740991.toJs.isSafeInteger assert not 9007199254740992.toJs.isSafeInteger
Source Edit proc jsConstructorName[T](a: T): cstring
-
Example:
import std/jsffi let a = array[2, float64].default assert jsConstructorName(a) == "Float64Array" assert jsConstructorName(a.toJs) == "Float64Array"
Source Edit proc jsTypeOf[T](x: T): cstring {.importjs: "typeof(#)", ...raises: [], tags: [], forbids: [].}
-
Returns the name of the JsObject's JavaScript type as a cstring.
Example:
import std/[jsffi, jsbigints] assert jsTypeOf(1.toJs) == "number" assert jsTypeOf(false.toJs) == "boolean" assert [1].toJs.jsTypeOf == "object" # note the difference with `getProtoName` assert big"1".toJs.jsTypeOf == "bigint"
Source Edit func newArrayBuffer(n: int): ArrayBuffer {.importjs: "new ArrayBuffer(#)", ...raises: [], tags: [], forbids: [].}
- Source Edit
func newBigUint64Array(buffer: ArrayBuffer): BigUint64Array {. importjs: "new BigUint64Array(#)", ...raises: [], tags: [], forbids: [].}
- Source Edit
func newFloat64Array(buffer: ArrayBuffer): Float64Array {. importjs: "new Float64Array(#)", ...raises: [], tags: [], forbids: [].}
- Source Edit
func newUint8Array(n: int): Uint8Array {.importjs: "new Uint8Array(#)", ...raises: [], tags: [], forbids: [].}
- Source Edit
func newUint32Array(buffer: ArrayBuffer): Uint32Array {. importjs: "new Uint32Array(#)", ...raises: [], tags: [], forbids: [].}
- Source Edit
Templates
template whenJsNoBigInt64(no64, yes64): untyped
- Source Edit