UNPKG

@sanity/import

Version:

Import documents to a Sanity dataset

50 lines (49 loc) 1.84 kB
const MAX_PAYLOAD_SIZE = 1024 * 256 // 256KB ; function batchDocuments(docs) { let currentBatch = []; let currentBatchSize = 0; const batches = [ currentBatch ]; for (const doc of docs){ const docSize = JSON.stringify(doc).length; const newBatchSize = currentBatchSize + docSize; // If this document pushes us over the max payload size, start a new batch if (currentBatchSize > 0 && newBatchSize > MAX_PAYLOAD_SIZE) { currentBatch = [ doc ]; currentBatchSize = docSize; batches.push(currentBatch); continue; } // If this document *alone* is over the max payload size, try to allow it // on it's own. Server has slightly higher payload size than defined here if (docSize > MAX_PAYLOAD_SIZE) { if (currentBatchSize === 0) { // We're alone in a new batch, so push this doc into it and start a new // one for the next document in line currentBatch.push(doc); currentBatchSize = docSize; currentBatch = []; batches.push(currentBatch); continue; } // Batch already has documents, so "close" that batch off and push this // huge document into it's own batch currentBatch = []; currentBatchSize = 0; batches.push([ doc ], currentBatch); } // Otherwise, we should be below the max size, so push this document into // the batch and increase the size of it to match currentBatch.push(doc); currentBatchSize += docSize; } return batches; } export { batchDocuments }; //# sourceMappingURL=batchDocuments.js.map