"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var helper_1 = require("../helper"); function fold(rows, options) { var _a = helper_1.mergeOptions(options, { as: ['key', 'value'] }), fields = _a.fields, as = _a.as; helper_1.assert(fields, "fold: fields is required."); helper_1.assert(Array.isArray(fields), "fold: fields must be an array."); helper_1.assert(fields.length === 0, "fold: fields's length must be great than 0."); if (!as || !Array.isArray(as) || as.length < 2) { throw new TypeError("Invalid as: as must be an array which has two item"); } var result = []; var _b = tslib_1.__read(as, 2), key = _b[0], value = _b[1]; rows.forEach(function (row) { fields.forEach(function (field) { var _a; result.push(tslib_1.__assign(tslib_1.__assign({}, row), (_a = {}, _a[key] = field, _a[value] = row[field], _a))); }); }); return result; } exports.fold = fold;