'use strict'; function index(data, security) { const rowPredicate = security?.row ?? (() => true); const columnPredicate = security?.column ?? (() => true); return function(context) { if (typeof security?.row === "undefined" && typeof security?.column === "undefined") return data; let filtered = []; for (let row of data) { if (!rowPredicate(row, context)) continue; let cols = columnPredicate(row, context); if (cols === true) { filtered.push(row); continue; } let transformed = {}; for (const [col, val] of Object.entries(row)) { if (!cols.has(col)) continue; transformed[col] = val; } filtered.push(transformed); } return filtered; }; } module.exports = index;