[fork] A Very Fast Streaming Multipart Parser For Node.JS Written In ES6 And Optimised With JavaScript Compiler.
npm install @idio/dicer
@idio/dicer is a fork of A Very Fast Streaming Multipart Parser For Node.JS Written In ES6 And Optimised With JavaScript Compiler.
``sh`
yarn add @idio/dicer
- Table Of Contents
- API
- class Dicer
* _idio.DicerConfig
* _idio.Dicer
- Copyright
The package is available by importing its default function:
`js`
import Dicer from '@idio/dicer'
Dicer is a _Writable_ stream.
import('stream').WritableOptions __stream.WritableOptions__
_idio.DicerConfig extends stream.WritableOptions: Options for the program.
| Name | Type | Description | Default |
| -------------- | ---------------- | ---------------------------------------------------------------- | ------- |
| boundary | string | This is the boundary used to detect the beginning of a new part. | - |
| headerFirst | boolean | If true, preamble header parsing will be performed first. | false |2000
| partHwm | boolean | High watermark for parsing parts. | - |
| maxHeaderPairs | number | The maximum number of header key=>value pairs to parse. | |
| Name | Type | Description |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| __constructor__ | new (cfg?: !_idio.DicerConfig) => _idio.Dicer | Creates a new instance. |
| __setBoundary__ | (boundary: string) => void | Sets the boundary to use for parsing and performs some initialization needed for parsing. You should only need to use this if you set headerFirst to true in the constructor and are parsing the boundary from the preamble header. |
| ___ignore__ | () => void | Ignores current part. |
`js
import Dicer from '@idio/dicer'
import { createServer } from 'http'
import { inspect } from 'util'
const RE_BOUNDARY = /^multipart\/.+?(?:; boundary=(?:(?:"(.+)")|(?:([^\s]+))))$/i,
HTML = Buffer.from('
createServer(function(req, res) {
var m
if (req.method === 'POST'
&& req.headers['content-type']
&& (m = RE_BOUNDARY.exec(req.headers['content-type']))) {
var d = new Dicer({ boundary: m[1] || m[2] })
d.on('part', function(p) {
console.log('New part!')
p.on('header', function(header) {
for (var h in header) {
console.log('Part header: k: ' + inspect(h)
+ ', v: ' + inspect(header[h]))
}
})
p.on('data', function(data) {
console.log('Part data: ' + inspect(data.toString()))
})
p.on('end', function() {
console.log('End of part\n')
})
})
d.on('finish', function() {
console.log('End of parts')
res.writeHead(200)
res.end('Form submission successful!')
})
req.pipe(d)
} else if (req.method === 'GET' && req.url === '/') {
res.writeHead(200)
res.end(HTML)
} else {
res.writeHead(404)
res.end()
}
}).listen(PORT, function() {
console.log('Listening for requests on port ' + PORT)
this.close()
})
````
Listening for requests on port 8080
Original Work by Brian White aka mscdex.
---
alt="Art Deco"> | © Art Deco for Idio 2019 | alt="Tech Nation Visa"> | Tech Nation Visa Sucks |
|---|