diff options
Diffstat (limited to 'together/node_modules/formidable/src/parsers/JSON.js')
-rw-r--r-- | together/node_modules/formidable/src/parsers/JSON.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/together/node_modules/formidable/src/parsers/JSON.js b/together/node_modules/formidable/src/parsers/JSON.js new file mode 100644 index 0000000..9a096c2 --- /dev/null +++ b/together/node_modules/formidable/src/parsers/JSON.js @@ -0,0 +1,35 @@ +/* eslint-disable no-underscore-dangle */ + +'use strict'; + +const { Transform } = require('stream'); + +class JSONParser extends Transform { + constructor(options = {}) { + super({ readableObjectMode: true }); + this.chunks = []; + this.globalOptions = { ...options }; + } + + _transform(chunk, encoding, callback) { + this.chunks.push(String(chunk)); // todo consider using a string decoder + callback(); + } + + _flush(callback) { + try { + const fields = JSON.parse(this.chunks.join('')); + Object.keys(fields).forEach((key) => { + const value = fields[key]; + this.push({ key, value }); + }); + } catch (e) { + callback(e); + return; + } + this.chunks = null; + callback(); + } +} + +module.exports = JSONParser; |