@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
JavaScript
;
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==