UNPKG

@cran/lib.gql.core

Version:

GQL Core Functionality

40 lines (39 loc) 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Int8Scalar = exports.Int4Scalar = exports.Int2Scalar = void 0; const utilities_1 = require("../utilities"); function castInt(value) { switch (typeof value) { case "string": if ((/e/iu).test(value)) { // eslint-disable-next-line no-param-reassign value = `${Number(value)}`; } return value.replace(/\.\d*$/u, ""); case "number": return value | 0; default: throw new Error("invariant"); } } function createAsInt(bits) { function asInt(value, invalid) { const int = castInt(value); const bigint = BigInt(int); const clamped = BigInt.asIntN(bits, bigint); if (bigint !== clamped) { return invalid("range"); } return `${int}`; } return { string: asInt, number: asInt, boolean(value) { return `${+value}`; }, }; } exports.Int2Scalar = (0, utilities_1.createScalar)("int2", "small-range integer", createAsInt(16)); exports.Int4Scalar = (0, utilities_1.createScalar)("int4", "integer", createAsInt(32)); exports.Int8Scalar = (0, utilities_1.createScalar)("int8", "large-range integer", createAsInt(64));