UNPKG

@flxbl-io/sfp

Version:

sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model

36 lines 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = chunkCollection; /** * Split values in SOQL WHERE clause into chunks to avoid exceeding max. URI length (16,000 chars) or max. WHERE clause length (4000 chars) * @param collection values in SOQL WHERE clause * @param chunkSize default is 4000 * @param offset offset to account for keywords, fields, operators and literals in the query. Default is 1000 */ function chunkCollection(collection, chunkSize = 4000, offset = 1000) { const result = []; chunkSize = chunkSize - offset; let chunk = []; let numberOfCharsInChunk = 0; for (const elem of collection) { if (elem.length + 2 > chunkSize) { throw new Error(`Single value cannot exceed chunk size limit of ${chunkSize}`); } const commasAndQuotes = 2 * (chunk.length + 1) + chunk.length; if (numberOfCharsInChunk + elem.length + commasAndQuotes <= chunkSize) { chunk.push(elem); numberOfCharsInChunk += elem.length; } else { result.push(chunk); // Create new chunk chunk = []; numberOfCharsInChunk = 0; chunk.push(elem); numberOfCharsInChunk += elem.length; } } result.push(chunk); return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2h1bmtDb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvcXVlcnlIZWxwZXIvQ2h1bmtDb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsa0NBNkJDO0FBbkNEOzs7OztHQUtHO0FBQ0gsU0FBd0IsZUFBZSxDQUFDLFVBQW9CLEVBQUUsWUFBb0IsSUFBSSxFQUFFLFNBQWlCLElBQUk7SUFDM0csTUFBTSxNQUFNLEdBQWUsRUFBRSxDQUFDO0lBQzlCLFNBQVMsR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBRS9CLElBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUN6QixJQUFJLG9CQUFvQixHQUFXLENBQUMsQ0FBQztJQUNyQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzFELElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBSSxlQUFlLElBQUksU0FBUyxFQUFFLENBQUM7WUFDdkUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQixvQkFBb0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVuQixtQkFBbUI7WUFDbkIsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNYLG9CQUFvQixHQUFHLENBQUMsQ0FBQztZQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLG9CQUFvQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRW5CLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMifQ==