mirror of
https://github.com/cloudflare/wrangler-action.git
synced 2025-02-17 00:54:45 +01:00
46 lines
1.2 KiB
JavaScript
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
|
|
}
|
|
}
|