wrangler-action/node_modules/csv-generate/lib/sync.js
2023-08-07 15:11:15 -05:00

46 lines
1.2 KiB
JavaScript

/*
CSV Generate - sync module
Please look at the [project documentation](https://csv.js.org/generate/) for
additional information.
*/
const generate = require('.')
module.exports = function(options){
if(typeof options === 'string' && /\d+/.test(options)){
options = parseInt(options)
}
if(Number.isInteger(options)){
options = {length: options}
}else if(typeof options !== 'object' || options === null){
throw Error('Invalid Argument: options must be an o object or a integer')
}
if(!Number.isInteger(options.length)){
throw Error('Invalid Argument: length is not defined')
}
const chunks = []
let work = true
// See https://nodejs.org/api/stream.html#stream_new_stream_readable_options
options.highWaterMark = options.objectMode ? 16 : 16384
const generator = new generate.Generator(options)
generator.push = function(chunk){
if(chunk === null){
return work = false
}
if(options.objectMode){
chunks.push(chunk)
}else{
chunks.push(chunk)
}
}
while(work){
generator._read(options.highWaterMark)
}
if(!options.objectMode){
return chunks.join('')
}else{
return chunks
}
}