expression-evaluation
Version:
Expression Evaluation
32 lines (31 loc) • 4.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.funcRandomString = exports.funcRandomBuffer = exports.funcRandomInteger = exports.funcRandomNumber = exports.funcNow = exports.funcMerge = exports.funcChain = exports.funcRange = exports.funcMax = exports.funcMin = exports.funcSum = exports.funcNot = exports.funcAnd = exports.funcOr = void 0;
const FunctionDefinition_js_1 = require("../FunctionDefinition.js");
const Type_js_1 = require("../Type.js");
exports.funcOr = new FunctionDefinition_js_1.FunctionDefinition((...values) => values.flat(FunctionDefinition_js_1.FUNCTION_ARG_MAX).some((v) => v), Type_js_1.typeBoolean, [Type_js_1.typeBooleanOrArray], 2, FunctionDefinition_js_1.FUNCTION_ARG_MAX);
exports.funcAnd = new FunctionDefinition_js_1.FunctionDefinition((...values) => values.flat(FunctionDefinition_js_1.FUNCTION_ARG_MAX).every((v) => v), Type_js_1.typeBoolean, [Type_js_1.typeBooleanOrArray], 2, FunctionDefinition_js_1.FUNCTION_ARG_MAX);
exports.funcNot = new FunctionDefinition_js_1.FunctionDefinition((value) => !value, Type_js_1.typeBoolean, [Type_js_1.typeBoolean]);
exports.funcSum = new FunctionDefinition_js_1.FunctionDefinition((...values) => values.flat(FunctionDefinition_js_1.FUNCTION_ARG_MAX).reduce((acc, val) => acc + val, 0), Type_js_1.typeNumber, [Type_js_1.typeNumberOrArray], 1, FunctionDefinition_js_1.FUNCTION_ARG_MAX);
exports.funcMin = new FunctionDefinition_js_1.FunctionDefinition((...values) => Math.min(Number.POSITIVE_INFINITY, ...values.flat(FunctionDefinition_js_1.FUNCTION_ARG_MAX)), Type_js_1.typeNumber, [Type_js_1.typeNumberOrArray], 1, FunctionDefinition_js_1.FUNCTION_ARG_MAX);
exports.funcMax = new FunctionDefinition_js_1.FunctionDefinition((...values) => Math.max(Number.NEGATIVE_INFINITY, ...values.flat(FunctionDefinition_js_1.FUNCTION_ARG_MAX)), Type_js_1.typeNumber, [Type_js_1.typeNumberOrArray], 1, FunctionDefinition_js_1.FUNCTION_ARG_MAX);
exports.funcRange = new FunctionDefinition_js_1.FunctionDefinition((value1, value2) => {
const [min, max] = [Math.floor(Math.min(value1, value2)), Math.ceil(Math.max(value1, value2))];
return [...Array(max - min).keys()].map((i) => i + min);
}, Type_js_1.typeArray, [Type_js_1.typeNumber, Type_js_1.typeNumber]);
exports.funcChain = new FunctionDefinition_js_1.FunctionDefinition((...values) => values.flat(FunctionDefinition_js_1.FUNCTION_ARG_MAX).reduce((acc, val) => [...acc, val], []), Type_js_1.typeArray, [Type_js_1.typeArray], 1, FunctionDefinition_js_1.FUNCTION_ARG_MAX);
exports.funcMerge = new FunctionDefinition_js_1.FunctionDefinition((...values) => values.flat(FunctionDefinition_js_1.FUNCTION_ARG_MAX).reduce((acc, val) => Object.assign(acc, val), {}), Type_js_1.typeObject, [Type_js_1.typeArrayOrObject], 1, FunctionDefinition_js_1.FUNCTION_ARG_MAX);
exports.funcNow = new FunctionDefinition_js_1.FunctionDefinition(() => new Date().getTime(), Type_js_1.typeNumber, [], undefined, undefined, undefined, false);
exports.funcRandomNumber = new FunctionDefinition_js_1.FunctionDefinition((value) => value == null ? undefined : Math.random() * value, Type_js_1.typeNumber, [Type_js_1.typeNumber], undefined, undefined, undefined, false);
exports.funcRandomInteger = new FunctionDefinition_js_1.FunctionDefinition((value) => value == null ? undefined : Math.floor(Math.random() * value), Type_js_1.typeNumber, [Type_js_1.typeNumber], undefined, undefined, undefined, false);
exports.funcRandomBuffer = new FunctionDefinition_js_1.FunctionDefinition((value) => value == null || value < 0 ? undefined : crypto.getRandomValues(new Uint8Array(value)), Type_js_1.typeBuffer, [Type_js_1.typeNumber], undefined, undefined, undefined, false);
exports.funcRandomString = new FunctionDefinition_js_1.FunctionDefinition((value) => {
if (value == null || value < 0) {
return undefined;
}
let str = '';
while (str.length < value) {
str += Math.random().toString(36).slice(2);
}
return str.slice(0, value);
}, Type_js_1.typeString, [Type_js_1.typeNumber], undefined, undefined, undefined, false);