"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var helper_1 = require("../helper"); function lookup(rows, options) { var opts = helper_1.mergeOptions(options, { default: null, as: [] }); var as = opts.as, values = opts.values, field = opts.field, from = opts.from, key = opts.key; return rows.map(function (row) { var item = tslib_1.__assign({}, row); var target = from.find(function (item) { return item[key] === row[field]; }); if (!values) { if (!Array.isArray(as) || !as[0]) throw new Error('as is required when values is unspecified'); if (!target) item[as[0]] = opts.default; else item[as[0]] = target; } else { values.map(function (key, index) { item[as[index] || key] = target ? target[key] : opts.default; }); } return item; }); } exports.lookup = lookup;