UNPKG

mingo

Version:

MongoDB query language for in-memory objects

70 lines (69 loc) 2.31 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var minMaxScaler_exports = {}; __export(minMaxScaler_exports, { $minMaxScaler: () => $minMaxScaler }); module.exports = __toCommonJS(minMaxScaler_exports); var import_util = require("../../util"); var import_push = require("../accumulator/push"); var import_internal = require("./_internal"); const $minMaxScaler = (_, collection, expr, options) => { return (0, import_internal.withMemo)( collection, expr, () => { const args = expr.inputExpr; const min = args.min || 0; const max = args.max || 1; const nums = (0, import_push.$push)( collection, args.input || expr.inputExpr, options ); (0, import_util.assert)( (0, import_util.isArray)(nums) && nums.length > 0 && nums.every(import_util.isNumber), "$minMaxScaler: input must be a numeric array" ); let rmin = nums[0]; let rmax = nums[0]; for (const n of nums) { if (n < rmin) rmin = n; else if (n > rmax) rmax = n; } const scale = max - min; const range = rmax - rmin; (0, import_util.assert)(range !== 0, "$minMaxScaler: input range must not be zero"); return { min, scale, rmin, range, nums }; }, (data) => { const { min, rmin, scale, range, nums } = data; return (nums[expr.documentNumber - 1] - rmin) / range * scale + min; } ); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { $minMaxScaler });