{"_id":"@marblejs/middleware-multipart","_rev":"118-b3cb54dece96a720efd39fe38ddabea7","name":"@marblejs/middleware-multipart","dist-tags":{"latest":"4.1.0","next":"4.0.0-next.32","dev":"3.4.2-dev.6","rc":"4.0.0-rc.3"},"versions":{"2.3.0":{"name":"@marblejs/middleware-multipart","version":"2.3.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.3.0"},"publishConfig":{"access":"public"},"gitHead":"8f654b57c6df7f8ac30918bbf61c207c0457355f","_id":"@marblejs/middleware-multipart@2.3.0","_nodeVersion":"10.12.0","_npmVersion":"lerna/3.10.7/node@v10.12.0+x64 (darwin)","dist":{"integrity":"sha512-16VjLKxssERqGhL7//XlGlLL8q1jFE/fFuGOIGMVKtKJZXsfT6028aci9JI2rbrA517a0qpqCJA6l+eQ5Mrs4g==","shasum":"a11a95302d69d4cb4c2b8d8d778b6d4aef5cfc36","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.3.0.tgz","fileCount":17,"unpackedSize":14767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEcFmCRA9TVsSAnZWagAA5JgP/2XkAGCxcgpxdQtdKECy\n6/YSFxngtqjQPOzxPX1NDPPfrOfXk/a7Zr8qlIBhKzazj+iP1NyOjRGr9UjH\n6/4TYjTO5tZgNQJ3Y+6Ot67BFSEjH7s7LHqkuYtymutvl2S1QlX9ftkyWSKv\nfvxHe/6zFdCVL962zDa0K0OfHATzeCq8sFivxNTMgGQk3YnfDFZ2haKkqdUd\n6fL3/SykQlsY8GTAsoMvmPha94uMOVQ2oTAqGFHRxOPiEJMP4EX9+iL2UAFZ\nxgUabXfzf4cvu6kJQJLIiFmufb72Mh7y79sLCnfDz/c9tL756Eb7Ktnhvdus\ncVp6Hwp0KV4FJ2Rw+Bhfm0Lbw2SZbHcUkda9uYiu6N0e1WS7TI3DUGbR95qb\nlbaJ6IF2L0YglLSEHyFCBanmPZ3w7xoS8BTa0OvmXGWN41JtYD9DQasoDcyu\neY/6s6QtL/7+tggmCHCiprY+PIDs5KRY1J49jkI2etzTTrmYJ2h+Xf+Ua9xT\nALPVIEjJLFDV3T15DC2bxDyRh5Fn2+kaKd0oGC5B2xq4etpgLV6lKpBruu7S\nyV1bwOWIPkFsN37niUXGWXGls8J4UDqv50XnFVMv32tRcNYGbb7UfBrN3yPm\nyGDXjNdn55iRCZj3hGvdPNjMnFWXALobcJTI12N6zey/RRJwskHTO17vH6N7\nVLUQ\r\n=SGzc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICjDy6TDaWUhibDAk2r3qD8WHxXrULUq1xC/jC/3YBaHAiEAkljL19JIH/Je6TmelOtMKDGbTLxTCL6pmuT++W2YDHQ="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.3.0_1561444709947_0.3701015277841986"},"_hasShrinkwrap":false},"2.3.1":{"name":"@marblejs/middleware-multipart","version":"2.3.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.3.1"},"publishConfig":{"access":"public"},"gitHead":"b82eee03a5a6504c3f850cc5a141cd84cdb52570","_id":"@marblejs/middleware-multipart@2.3.1","_nodeVersion":"10.12.0","_npmVersion":"lerna/3.10.7/node@v10.12.0+x64 (darwin)","dist":{"integrity":"sha512-kzk2VxvA1xSumgwsmXqhYxmVVaUUqZrvyJsdeUmzK53usDpqXNGtRVfeLbmkrtV4NZX22kduJN3HFyrdxjwkLA==","shasum":"423e6ed15bbde139be37b935bb594873a67995d5","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.3.1.tgz","fileCount":17,"unpackedSize":14882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEgAkCRA9TVsSAnZWagAA3LQP/2FS4xgQR4XklanTfkOL\nlNOZNd8etNnA0ZWwQ55ZjyIiatAEiUtYDDb2wauulyzeZLw0LeDZXcM83YlF\njh/6sJTmrw/8M/uq2NkCfVg17c8486MI3reQV2cj2a/Rdi+WQODQ0poW5j/N\nkCIsn/i6wK67CZouiT74haQ0eh+/GT9e5iMNUdnYJmMg1OoJgMqavLL01mfP\noELkCWa3f8bC2Bxbvd2B/8gabllp2eiQdAgGtj0xRlbE7K1bKbqWg+Vr3era\nkyGoTv/vGGoX62NufpEFoAgcjdiaylkk8Q6VRvVGNww/ATB5IEFAKxuv5sG/\nk47UruCSsp8zGplS3OmlgRw3cxCuC3INe87YMgd+3S+x1j8FNQD0qTp3ULJa\nm9XvlLQVq8FFe5l3isl72zFIuGpxrYoh+P9zYL1uLEO/vMquNeS9kyu1eyBy\nfGhBRldS/es8f0Zap9e6YTVGJVEjpCXeoasG5zX7uSb0OM3QnyOGhKDFoaxy\nD/W84dusHlgKyKQoqb/5AMkWd10otSxn6CvJpXKEt0890skpX7Ydf+LMga7B\ndJbm2I3jHEL7fsj8I4yZNKfJhC0xsx22u2cGntp/ghTV1IvZvCCNBX9pVVHV\nS0h/w9bt0hcV482VyM6BepbRgHjFXC2mN9R3YABq3N5POre50JJuB4ykRPkK\nWl4+\r\n=qYkR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDCri5Th/cMnLZas6GbmLooc1knDwg7YyfVGIdelcIlgIga3C9E0YRJh9BcqpuuwVnusvCKxH/WL9eNgw1TcuFoak="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.3.1_1561460771931_0.6402739025814106"},"_hasShrinkwrap":false},"2.3.0-dev.21":{"name":"@marblejs/middleware-multipart","version":"2.3.0-dev.21","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.3.0-dev.21+aa4f52d"},"publishConfig":{"access":"public"},"gitHead":"aa4f52d65044903647f12db480af92c797b2337d","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.3.0-dev.21","_nodeVersion":"10.12.0","_npmVersion":"lerna/3.10.7/node@v10.12.0+x64 (darwin)","dist":{"integrity":"sha512-BSw2/wQBhfkNrKJN21t/3exmY9D3JWNvhenMw8tWbsaVE0wYTGAsV+QkYOrvgqmOlU+XK6eQze1P1JfAZIk1MQ==","shasum":"7a63eb1c3f5d1fbe37f2c3dfc496036deb3b520b","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.3.0-dev.21.tgz","fileCount":17,"unpackedSize":14912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHJvpCRA9TVsSAnZWagAA7FQP/3Ze4zcFr4nloCAbkVJF\nUni6+9nx7fRfgtMpqcxcguEcKuaYmi2XaqH2kn4pRuK/M/MOrJW66WNjsQ2c\nyihFL6TRr5xhE0WC7YkFKZ/QQbXPSFi2lz9nySghHSYGdgJ+IbcY9/5cSaMZ\nmw2yA9xHcn0SsuyfCQnPG64bTcVThj7QmVbhL8svQh60jtPpBv/hI/4fU8eU\nK+eYUSu5zsM/OkGDYtEGveTqTycveFG4VG6FZ4LKyv/Q++C4CJPWdyfUzeeX\nbnwAy/0jrMnhtFfKLoC4HgkQegeTAU/cLRSxUj9DcidBRvpJTGO1aqI0Nmzj\nG/8GAjn1+NofOH6Ki+WguCIacJmZgvPlKVj7BlMV9+gMg26gOFzI4NNsbnYm\no1dRIAtk/sXR0vHvnKoz31HHb/lqzyG/qH3rcoes6apZSX3bKJXhhwKIGUip\nSsrZ4XV8SECkSVoKxINWGaaNIQuB3u0CAdf/sNs5I5x/H25kPTXXKWenFuvG\n3clfdtKmAyC/bbM2IyLrKYS87HN7p+JCKJ0C911rk9GpEoTgJ4hvjdMiLunz\nhGSCddKFrVxsmBiB0MnkCQ/SGZgzAcD8rmt5Z7vcq0VR+1IZOYO4DPgWXUl9\ns/9rrXPLHibO/M6fkd12pzDvEpVro7HuiNMARagsJWVcPtKuHcNVH80bE9wV\n707q\r\n=JVZs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDI6L3zKFtG3G6XR4lJ9lgTDp4GyF5KkYuDQhUiBUPVKAiEA9DUhkvPRZL1VvMXzRP2oEgQi9Y4eYFPGdsQEXEHwK/o="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.3.0-dev.21_1562156008437_0.9872287221434537"},"_hasShrinkwrap":false},"2.3.0-dev.22":{"name":"@marblejs/middleware-multipart","version":"2.3.0-dev.22","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.3.0-dev.22+6c2d378"},"publishConfig":{"access":"public"},"gitHead":"6c2d378c7d3d90250113fdeec1ec89043eb10ddf","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.3.0-dev.22","_nodeVersion":"10.12.0","_npmVersion":"lerna/3.10.7/node@v10.12.0+x64 (darwin)","dist":{"integrity":"sha512-1M4FhlRfu+wcIk0lKPRAsyX8axRVp4juPQcvW8tGskg2vx/ibZ43FxN4s7iSVpxL8sJrloYgjK2eMRfMFvlbmA==","shasum":"71be29ab49631b552a1b9d59744b4906d3830e13","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.3.0-dev.22.tgz","fileCount":17,"unpackedSize":14912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHKQqCRA9TVsSAnZWagAA4yUQAJMLWCfe4X62pRFAA06y\nhFYMiFjZDGSrIzug8XzzxPyNHG9LpvWc0GceoLZqwngmc76xbKMRNjhLx2jW\nCnxSoetnmkPnPUJ/3v7sHWSoX0c3GR4L/nSHL7Vt23RFMAfFKYLw5CT259vW\nNWYF2+0ON5FbbgS2f+aXQW6iQi1DRamMlbPaSQsRlPONDWg1LaFDs7KEiea+\nkfVQdbs2wXsBbkEIgzkLnmhEk/FS2/+ix4eE7IGPiYqk58x37leNN0qWLXG/\nycVyYSZtX0o6AXNHOHcA3aagM/VWO6AQCr9zoHyX1+6hFjwY+9yU52erg9fJ\n82cWCsoI01MGePDGXDfv3IPxwrBQVqbqp1L9GfGnjpFXEnf3ufiOzkOu0SLw\nwNY9+dkLZ/4AhXcbWmJ5puYTpSnOXN20HIB9rDd1rgU23Jmi8yLltk/dXnLr\nP0T0sfjhhe+LpeFbBx4/HMz1NdSQOGKVge4jWfj1Aek3L1iNVVFuA3gac2sX\nCWU/yfwsSIwtTRqJcnN9ULkDecFb3zBuxsMnfhzt5lejgscofse0iFMjZyYb\nQrjWr2BCAklu1/MtIYuR5neRypYZZsExg2dMpART1qMKMK8eSmcoW5y1W5MH\nQHK7dVI2LadmnaNvG+Zx80yC++KyK2i1UT4H6fmLyzxtXv6HULQ3OlAROAAV\niCf1\r\n=gzEP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlHFvJkotoaGQLEZ1ITV20RH17Q4J9lZr1R/SXCCiMVAiEAnwWE3pRK9H9Wqg3NAu20t1sShRVNDVe6FDE5JOhDSF0="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.3.0-dev.22_1562158121662_0.2675569264740094"},"_hasShrinkwrap":false},"2.3.0-dev.23":{"name":"@marblejs/middleware-multipart","version":"2.3.0-dev.23","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.3.0-dev.23+52fb67b"},"publishConfig":{"access":"public"},"gitHead":"52fb67baf377422f5fdd0dc77192366522e1e7f3","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.3.0-dev.23","_nodeVersion":"10.12.0","_npmVersion":"lerna/3.10.7/node@v10.12.0+x64 (darwin)","dist":{"integrity":"sha512-GoJ9KGPmpcPJ+tYXsdHp5WPpB0svMd/EYIZPsoOz2bWFTsxDyMKxRI/1CZeJeZAdgc+rgKWbH9hL2euTZXF9ag==","shasum":"18b716c37309c4e5d657ccd6af54832e88ce0bac","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.3.0-dev.23.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHLCgCRA9TVsSAnZWagAA0qcP/ia9mEYv4Zj7PeubJlKN\nODg8tFsQj1pz8NXRCDA4Fgr7wsVpYqQyJ0n3YQv5KnieONuWAZkoT9CH4uSo\nYpiO44z5u8VzlYHDc+2Z5UFSwUiXxAd/mZybj8OUKIgLD250W8IJU86GaYmU\n5Nglt6tS0l+mgzss6zWs4o/nGg8vN0i0+7saw/xwodOVtnwzRBj6W4SwuA8q\nu/I5vI5bZ16UhPevz8A874V7cWaGG7vyG84+0DMzGkAxknaSuPIOK3IpIZN4\nCsMbEasicpkwhCiWvgmIKO8+vHdROGdT9HVy3HdfYPB8tDqzLbVmv6OwQzpk\nJJeXF2gU/aCMkRjh0z7w1JrvwwYzdKg6C7pwlXthi2GB5ik8lgMwJABdWI2h\nX9IMmoKA7UgKq1TC2Y30Vm55ZAXSeP3owuyhCPbGMXOHsUO3AE4x2/yd0I3g\nMrJftl+1rpYNrUUbt1YyWVcIv2osyONturu1xGJ8LgLeXw1O10bV5DmRVnze\nzUG+c4EK+0y6EvUUmIaYvXECzkiE71nla7QLwtUhnroXS7dCELImeA5xohNp\nTI/Pt/aOKqDSU0+pH2ZPkluHtQ0BZuG1jnzLPoqKuBf8GVmeruAfIZvCngxM\nC1BqGDd3dgzpdg/ZmX9LWdUHERnQGszAQh9wwYTFP3UFVIDVUDMwJ+JYgg1k\ncQ+U\r\n=DhCi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtGXN7rpqE+WPZv5xJZ2zG8qhbE2wBEy5nVVZkD8wCcgIhAK3TaR/Cr+oOYf8r51KVmLyocJxTReovbdKqb6mBh4aF"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.3.0-dev.23_1562161312113_0.495095415871069"},"_hasShrinkwrap":false},"2.4.0-dev.35":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.35","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.35+9073584"},"publishConfig":{"access":"public"},"gitHead":"9073584cc79452b05b32f78bf0bf1f9877b98a44","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.35","_nodeVersion":"11.15.0","_npmVersion":"lerna/3.15.0/node@v11.15.0+x64 (darwin)","dist":{"integrity":"sha512-rfJcR9NsrOCmFO48AsbhVh2Aqnt5fMFb4o1/CTG0SeyBMwkaackFdjRl/GbcUqMHqXj0PrJDorc0nmfQkpyvCQ==","shasum":"ed90738e76672e4f445c05b2340fb31edfaa056e","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.35.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLzHrCRA9TVsSAnZWagAAt6IP/12zuMQ+uV5XhWxQKq7n\nUgj9J6rWm1yR7jZmsbovPtzGegLRvEmToiuG5jET0u1oMuk3Nk4LDbgGHQfJ\npzBRaI4oGkYJzkieoaSDffDK7WXzEBWNxeHNiKEkQRmOaUpWPMxp9KGvYwMc\ncn3/IxN5+jiC9ayuEO6ncZNemqe4xHWmIZ3MeKcT+VhAjNGxYPJcsfmNXxC0\na43P31l4WsnVDRgl7LZwXR0/yy/Qdv4KPTaCOPKD7OEEPrOpb3BeQ43+V+B5\n7sOQ0fKtWjbIfeYWo59Af1LELsNqE8r9IqSxRP0JdzIuIZjnd2n384gF7V0Z\nGusOk4gMcVFGwgmCf9nVFI+1UejREAcph2BjEwVBtpKhpAQEsC4+yoBx5hHJ\nBe0qKrbHNHtys4uisnuj8MdaGGH2GUhUZPuUV/IaU4lSglSGIpIKueK18Tsd\nkaGDqj2NjEBk0JxzMTRGOul/RY5or3lxVyu8Shqi3Vflpa8pbF1CPxVRpOwu\nIKTDu96a4q0Ecdxa0IbWEjiOB3SPwoyM1kWPiEIZkOrt8ZvXozeeZ4dzSVe+\nQJ5NMRT7X6/dIjO/hn9ep3580sjiuZSlmBW2w/foQli/1zSTJcB60bV7vIdA\n1PxP427Uq/tZSmCEZoEQx93pV610rIyibBl89Bm6srbL1h92KRB5JHIRAgDp\nmPe2\r\n=htzX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGUwpDLQZVvk7peLOm8QgyAGjw3auYn7euzGkCEMo6GAiEAisV2yZdZ/71u0Oi+lPKXkKOG7Xd8KLG2Qw099Kmx6QQ="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.35_1563374059061_0.6230335186956448"},"_hasShrinkwrap":false},"2.4.0-dev.36":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.36","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.36+10cfd2d"},"publishConfig":{"access":"public"},"gitHead":"10cfd2d26e6815b8d96508f14643540a060dc2c7","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.36","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.15.0/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-qjPZpF968czKAd/trz+ndR9AcUiH8fZY3vvRknoUavYFf/LKgtBkrMdhjQi1feQ19fv96RJkq5SorkTx1hCJew==","shasum":"22ea58f39fc43edb06790fb70f70a6194d39f67a","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.36.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMBGyCRA9TVsSAnZWagAA3gkP/AywIAhMtzBv8pkxSUIX\nT1QhAzDt2kp3NOdQ+rNrqBWOTw7CxdP8HV2n0Nwq+z3YKK1JiES4jN7PMhOl\nDvfQp0/y72/2/OCbpFECuoHRhaTGUlIRf+xjJniGDz0dIaiYCPFK1uw5b5E3\nhWfIkLILYgyzNC0OXYxowmYPJN7/tsAZ/jIN4nAWNNmVNkKI81rHoC39ratK\n3NNjb+1nRMn9Dtb/DLPUgemGiC8koi57bC9asIEmbl83f6XfxmHRSEDWDWeT\nxJ8g0caUX0nxH+7gLDBz822J2RXT8fk1t2PfFHitaPvm8kuWn//IkbEkYseL\nlDCVVA9xoa0GyS5q67z4E/n1q/D22P29DT1pFavkT5x/mKEhcYO3XcQA7n/p\nRelK0NvbO+M/ySzguWQcpqIImWKRbho7xjaWcj+gwmU6G4qGrE5i4Fx4+PYj\npAErLY4GzSlgDOKBoqao+V8prEuAikfXxeevrC1BZmxLhCRSNI7x1oRvHIVH\nO0YYeL2DEgqo9/8N9oIEZuV1d8rhsNfE/AZIxmD5gGEkyvikcYKCKASz0I/r\n9/XCu2H1zFb+eyKKL2zS7nQjTWfKqyaYg0zYVn9FQpZdAQTtiDejSMLeK03h\nMW6QYG01PX/0jJRIoECuMNzhW6gPcL1eRG1JeGUd3wu28BeDkGZDq/F5JVUu\nFY5h\r\n=4rfr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3Yn7uQh6l+OcvDduvOERtdd7dGP5on1fgL6cJFN3HzwIgIvfPi/VYWNYGr5y4V3ThLQ4TmZJRRGGSPJKXUGhSW+M="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.36_1563431345424_0.449526015908593"},"_hasShrinkwrap":false},"2.4.0-dev.37":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.37","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.37+085e17a"},"publishConfig":{"access":"public"},"gitHead":"085e17ad62f4d33d8ef74cbe851731321600258c","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.37","_nodeVersion":"11.15.0","_npmVersion":"lerna/3.15.0/node@v11.15.0+x64 (darwin)","dist":{"integrity":"sha512-EharQR0jGLoeU5cqRCKwBtlRYS3za9Z/cxPGJbY1jcEf74CkRByuLpjcDxJ+VMWwakNUsfwlW4MF5ahuTkIUVw==","shasum":"3e0112746d55ffecc15e82fa0ad3c612af9db128","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.37.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMGfACRA9TVsSAnZWagAA2bkP/iFyVo3ujyyyVdfbkSg7\nzlafhnN8yfTpYTmO/g5zNGE/JsHmE2T5p6SlusZ2R/QOH8PacDdnnxc0F+1T\njXuV1z8QYYhqJEfSr38DhaR3RzoNwpNXTFwLrpigVl/oWd6oSuBNSXJBI5fQ\nT2/qZZNQT/Y0I+fQcs6Nq6RhM1TyyA1e6mOAgoglpzWzcIQ53xJVYr+r84vr\nAWFA8BuEkckg9H3v9SbhWiRc8+Eb2eWEMlvk9zb02kWbXsIJe6c8YjSTGStF\ndE1K3UECqWEshlDNXeNWM/+tyNgy5iKXqEtvWT1HgNEgZ5U8gMNuQDrHTkyh\nkdq7j8rXrx6BJ2pe9CiZT+A3pWzVDUhio0nyQD3HnCUqB/isfAXKVwcLI+I1\nSE0EjUCFuS8RDcpULnwGaWA1Tmj3U77JTd9w/S59n6ln7I40BHFlcvPxpd3p\nehfqe2V06MPt+Dm90k+cVXl9vx9Pu2suI2tYwdSWgSBooIZOxSsXKyg6no1t\nY/vTO/e+sggpWCjDz55i9D/NTqYzJiMWcYuo2zkuXtdcAte69iphHFORUauk\nz13I/a8j30SRVKTpAgzH9qPeSszZR1DRgto+7ETOM1IZk7EJWTQz9SuTNnai\noEIATwwNdpQ2jKXmBbA8rGQTIDRAB0TN9L93VZLs1BJ7to3gQUL5b4oqsBO6\nv8Gk\r\n=dOF3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGhHPQxkhyVnRt5Opd8cAyXqek1c9X+j+V0hVxMTRtBLAiBRdCUJw4we/RtDslF9RbYRMT1WrjrCSocDK3W+P79Evw=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.37_1563453375679_0.43280759313322337"},"_hasShrinkwrap":false},"2.4.0-dev.42":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.42","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.42+3877658"},"publishConfig":{"access":"public"},"gitHead":"3877658d985a941f3d777004f0fe0889557d22d8","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.42","_nodeVersion":"11.15.0","_npmVersion":"lerna/3.15.0/node@v11.15.0+x64 (darwin)","dist":{"integrity":"sha512-5p2V85sIHpuZWJ+kqF/mjMrvxyOdejX/RE9DQ+pMg7I07S+KAS1NqLbMXkVUba45qJz6LnPorvSMOFk7V2MlVw==","shasum":"14bef1815d972d6317472c81cab788836bbdec24","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.42.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMWZ/CRA9TVsSAnZWagAA+zoP/1HGSy9zsT7C08GV/NY6\nLnU+JpVe+eQHExQhnwpS33E/RL3FGv9Kio1gI7r/kr+YVOCD5uFvXfBm+8ft\njNgXwpoKEssnhAYgDvu+4DQt8eEheZ49xd+GfjUHttAts9k8L7aqacbLcrn+\nDZgbZ2CNuG6x9raTxC25wafMJ3IVGB4HZS5cK8KbyjY4Rp6DgFhSKZkaJj7R\nsRG45ZT0YqEp9hIhaJdvhrCCu62dJuZd/A3e52N6NdzFJ4CTjbHXkDySf7oR\nAWJUk24Rq5QJJ6GtNyyFjCuJ1ME3nEraRX97WZKdiBl1HZPjoFeelB3JGkyl\nG1I/ie9A8dtct1l0oRvT8dc1aWxfskJZFgPJCW95wKV4hzRJRZBj67C+wSmf\ns+XlfH6t8w6LyCfIioHE8oP+hIgQxCJBOMnOO2quHDyuMj0/J1LbfypiiZBs\nwDmltLakTfFL5AzNstQcCKfD8LcuO87Q1W+Ube/1nPBR/7kMNzo8tdz8dHQI\nUlgC94KFrKUnX2k0gvOx/1wi6xA2M7iUizb3WWIgB1bTCCbFGwuhLWVQ3RH+\nwtkuVNM/ig2rqvQqUPNfrGcYQw65h6J1EKMr7jT5LkSCGLXTczLUGfETwzv0\nSluYfsbbRfpQvrgSC5VUVC0JEICfXwjJndJmJIDmM89vGJ72CwYBTKmKH2i5\ndky7\r\n=Sus+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCl2Fn3YO8WFm3w0goY+ru5nAzI3pKRdcRfs0MSzqTI6gIhAL7EZfK9k4U7Gb4fFoGEySb0lXTIdOgTabAJUmxlT7/V"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.42_1563518590388_0.4317979722701122"},"_hasShrinkwrap":false},"2.4.0-dev.44":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.44","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.44+5dfc9e3"},"publishConfig":{"access":"public"},"gitHead":"5dfc9e34a0cac8649e38c4fb04d667edabb15fe8","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.44","_nodeVersion":"11.15.0","_npmVersion":"lerna/3.15.0/node@v11.15.0+x64 (darwin)","dist":{"integrity":"sha512-TqqwIaCwbL+wFr2QFPvovXAGdj5e3rzDYwifAxG1bAl6AkYbE+QazIVG7Z04ZKFNHU9H3uP/GSU+jLaSgZd24g==","shasum":"355d753257bdeefe523b8f56ecc6f4a84ddff0e5","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.44.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOZZBCRA9TVsSAnZWagAAC7sP/03d3Yo6xyGCcJMUSrp3\n9D9MoFiHlGXij68bFfiIb6xwrG/BLu7DOW+2cxr8o2an+2vb7Fk2TQqzIIIC\nVu4SCF50sFu70En51u5NUu4nfrAf/QW9AxCgAD4M1PYPztSnA3wtnMJSCDTn\n4aAAYX2T0YtVZQYpFS+/X7RakA1wpm8Ohh3Zq1j0iBUiDTHAtoAcZUQMwQx4\nJLJODhZbzp9ES4Ha3BiiKVvR1ayHZL5XDpPiilITSBKpWRgnV1k7XMXH5Wuy\ng/iTqUPtdLrnhlMGy+E9yns2fPxsiloP3jUZF6v5zFjBpPTNAEnrRQqSZrGG\n2v85sP2ColhcyiZuxhc850oKO8CZpJqgFNBSuzosZ0H7UGQXrHzhVcjJosD7\nILc93UM1DAx9fqgRpWDzZG97kzPsixrjOC5Be2p3WSd7XZUTwLJQadGRmVzK\nWeLvmsAfwT1sKLVlPSn+XTHtzRH5sSgpUcLFlIil33OhsdIMPDbw9be+zFvr\nsRz/B8p0j6C//V4tW1OPz1eFy6zPL9/OlWz2lIF1ASzOz7UBNG+xCUmuWLp2\naaTld02l2VutxhP96fZEwKsPbi5D/Fo8cxpN4SUxRiRewzT2nyVKtP1LukLc\nhSV7448qiUv9tDxW1qbVar+M+D6RJ+1HiMqQsY8+2KMsh3P46zoIXN9whtnW\nQJVw\r\n=TEtM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyCvvwSJOna2Vlu98TKGc9jEWWodvK2AvVjZaT3EizIAIgfXzcLJoG1LKCx0Iryoc+38gxdbhKlWWpahfcCwpLMIM="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.44_1564055105015_0.5459572888261037"},"_hasShrinkwrap":false},"2.4.0-dev.45":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.45","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.45+c763e4f"},"publishConfig":{"access":"public"},"gitHead":"c763e4fb5c8cd244def72895a6c3df0bae3f8cac","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.45","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.15.0/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-nHBpQFga1ErhdF9IOem7xGctHezgDX5/fbPB+zKn4Rj42EaKjuP6BtvVA47moWVB7y7v8S9Z9JxF56TQmwpS8w==","shasum":"ac1e4815dcc3b4b658ae621e13aa9979aaf385a2","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.45.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOhsPCRA9TVsSAnZWagAAF70P/1kSxFrF2HdH0yPVDfSm\nTVt1rFMndtDjqLuxB+RGZD0sHovU1l6gTNwXHnwQFcmz89deSMXHqWXEEhBy\nRAs9xTBfaHZ4yRyVExD1o8BnXcqqdEuACTdRe5+3pElGvOpUbzM688vRbVx4\nPXPqQvrSec41nEq0KcSXyxkq4lyGwaYvlqW30Egce8RQ/IRamobj7bBGZsXu\nl9tX1SzFzwRcK3/yXT89bwxFdLRrOaDs9Lc4AK2PAzn0eZmRaXDrZ6cDVu4F\nkvIDMIHVy7pcJ8qyqTVes+ft0VpfuhsDQT6V2MHrXeWtrnUBpsrKlhlJLDKh\nuBIHbFYTfa3lSbvnYpwwOnPVXqvG051JtOOFglxvCO9dJ4RzbLT8mRwUEaeW\n88kPBq66lW1cZQzbFnDGF+WpTHtPNHF/kSXCV76F/8RMmM2/A09gNMPVWfqN\ndzTtc6YJ2EFBJgmztxkU8lUjCkIbAFDaoeVJUcHPKnk/lU0zmuzuE6NiponL\n72A8oFsYIW3psz0c4S0Qkgv9zu2fyEdwKiURZyLwzx5+0meDEPW77mxYK2uY\nMSYcimTTOc23iULQPpxSH67uWEBOVbQnjyIKzb+8eIdGAV+GsB+OaphgOYk/\ny9nfC12ob8YdvhYoFysG1/QCq3IYir0UQiEIIPdXfB6RrVwUSsnt/G3A98bx\nf+Ct\r\n=D+0K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtU+MBAQBLYorfCA55H2k+BWdSqlt11Way9a6d62ceOwIgXS3ag27VOp92moPziRIRtJPkrOsNAMvJyaS8LvAe3WI="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.45_1564089102326_0.7011220860686347"},"_hasShrinkwrap":false},"2.4.0-dev.48":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.48","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.48+f9766ab"},"publishConfig":{"access":"public"},"gitHead":"f9766abe63ad2cfac9e0cbf36ebcfddc4d8a2ce2","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.48","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.15.0/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-dJzNpkAPHbQAtjx77VZKE0cs2VIAj9QOMmsFLwcYmTbu9Kv5/0GGXk+/+s7YkNGNPctvEARuZSmp2b/IEzdy7w==","shasum":"637d1c0127c0bfd68afc761dc3bd1c1124f9c0be","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.48.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSFY3CRA9TVsSAnZWagAA7roP+QGmQIQFPSsqxdxmY2zR\nZLPRv/KUqy87U3QCXvgrIJjXcvCJ9fbav/CTcoldt25+NKxtfwUwQHW56HwT\nNMN4QOYh1tNifKkYGrZkw01ZXnbpPgN6vtWqGoXo8acC0XpChBTnapv1G+DR\nCKciPv4DB+ACadBE9OKOEtrlqdPIvU2v682OSQr7El6R1/M94JBlF0g1skVr\nDG+FgJIm6c4Q/zaAl5pimULbv6nmdwxaCurd6lZu3EPNPd813GnVSt/Prm1F\nqevR7vcYB1NFbcbpPJLavUpYdBfwuam6lTLRYfaJ+j8tB7sO++dMaTE2f/Q3\n2MGqm3RnP2LuQ3ktZzfmxUwRC7EeOfy6HfYzgkzxXxDMo5j2JdM12IEzb2cU\n5njVERV68pRfyog+YARmYvWsma4OwMuE/EE14fTMWPrUdVZu/2eWdrNRvIBD\npEwR8M114K5K+em8fMwPIU6KQOVCVccPCv34GJ8m7RrW4JdC7hYVRlfWAMYv\ncoOtVImIrz88pyArDtuBn+9+OQaIBm+Ul2jiwv3xxHCJyO7uypc0SwJ3+ezA\npwh0KAf4NCb5f/KyFzarncuPb8zRVZCpitx4+WlqU4dvbPBn6Q+2/IuGJZm+\nR+XXn0Wm9mtLp87vEGRRo7SqER2SR9O/UA5uyqx+q0AeYKKJiieUAUszcgcl\nUb8O\r\n=GaBj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwGPM/VrWmwR7RcSF4kev8a7c9Xp91WkEfCEaTLQITKQIhAKQO2N/4K+5I7b2HLfY+mIkcvrrRDdwPliirXcGDjzKe"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.48_1565021751064_0.0037702219053021846"},"_hasShrinkwrap":false},"2.4.0-dev.51":{"name":"@marblejs/middleware-multipart","version":"2.4.0-dev.51","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.3.3"},"devDependencies":{"@marblejs/core":"^2.4.0-dev.51+ab9d813"},"publishConfig":{"access":"public"},"gitHead":"ab9d8132d0aa8813dc6229b9bd2a5e0cb17ce71a","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@2.4.0-dev.51","_nodeVersion":"11.15.0","_npmVersion":"lerna/3.15.0/node@v11.15.0+x64 (darwin)","dist":{"integrity":"sha512-mbYNJdHo/zXBX41+oqnMDZejYXHJpdjbaoogEEfYBsgZvCo/kfKWRgb42MyUozYR2cWYVwYaHwDaVU3KudFFgw==","shasum":"d9f3214c67a1847404ed045770dc2e4627a1b7f2","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-2.4.0-dev.51.tgz","fileCount":17,"unpackedSize":14998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZn1UCRA9TVsSAnZWagAA6TAQAJaNExNt6QOUa0DUPEna\nRVGA88yceZ4HQeMsMsMzvan7xuFZMoiZ9mI065vKnBQt8y+8JQJ4mgqZaBvM\ns3ykCJrZgssrbpRLDCE4Yp81z5RrSyzFJm2XBcZKXKys6/iC2RmUbATgqKhK\n3msEA/I+QGFbrZIjoLuSksmWupRcJ16fzameIeWcbuIJeY7sdE20vBOSrzG6\nTyDAl4HK7KtrlmqWWuulrOo4Cl38FNrukDhh4/QIXfEQ7+x13v6lof7LHQhu\n29Tsd2jdo+7SEdbEiCYOf/fXLypyt5wXW6QWUUwHWc9NIV8N2gaDD2bJ0m8y\neK9nSMFmJlepWm+03rt4iepsz/Pl/LsQk3sLgUNgQue9FcxG/SEhrsziU4Er\nW+nq6JCIjG2TfTsXE83DIeiK97Ddg2jz5KYruDgEBD+64EHCXV2MuIy4D2s/\nMsxtMmPy93xPqksy1BEYffiTiE/ibdQokMD+0qhXBhLjNxu+SUlw4bFrHyag\noCDGrudM/iGYuGL6OFXGM+gxCNoqOxMQSTU3tH1YpQCmSvVbhMkclXAA6O2s\nlz4vaV6MDaRZ5T1Se2aZ13a1IMplf9VXhGc1VXXFKps4+zpGWv1H4YXnaY1m\nOigEwUuMel9BHzBZpGRHmbSydjyhIkx26BDaK44P3NzQETErKrBRQ87hOUV8\nJEiL\r\n=ErYE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCd1JSfWw9aOzqYvJc8UnZjPZDKD6GbMj20KHmWjhJuDQIfY1j/JWl5YK8PRZIcyP9tXo1PEUFpHWPCLuX0VCAxkg=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_2.4.0-dev.51_1566997844144_0.6869937217269924"},"_hasShrinkwrap":false},"3.0.0-next.97":{"name":"@marblejs/middleware-multipart","version":"3.0.0-next.97","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-next.97+99312ca"},"publishConfig":{"access":"public"},"gitHead":"99312ca6b2ac094badbded66ea4535bc8b7ed4a4","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-next.97","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.17.0/node@v12.14.1+x64 (linux)","dist":{"integrity":"sha512-mZs1BEnp5HuW1dKXaE9I0wTmCC47MJw08paS0M52v8WlcXqLkqdMRaxAtyVs0w7tp+57bp/KiYhudDG/WTMKaQ==","shasum":"096bc83e0fc5d4c5b1f59d914af1ed31443120fd","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-next.97.tgz","fileCount":27,"unpackedSize":18799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFwrJCRA9TVsSAnZWagAArecP/RDTjuHo6dV+35q4v90f\nRvYP6ENsfTy30FDiek6RBVkneuzEDPHJMj8BOU//JwyQuNk2X93Vqzq2DyFN\nb/r/Yn2MkieyKGxI5NtcuPBDYuQLOIYi46ibjwfAJs+90nFlGkgZWcE1hbtJ\nRR30N7NbOeblL50yjqUYRswbZbe2tGf0lED6m9qF6LjdRHqcyBJTP2Km6Eam\nFHWqXYu6kU8p6kv7+clHCDV8sktBzqdAzWpaW4xs0szpQkvthsxziCrtgU3k\nPO5r6N2mcWrund7T3MNVOeL0sLX0iPzaTfKKIzALwpgp6p1JdGqW2V5Tm7wV\nQR52lNsclpzIMj2+dtg0/GyTLfVnT9C0fNMCCfmULIRgKwNQNFebUNQvJfd9\n3G4dQt7gsvYzo+nZgvvaajcEBZQjcNVmkoQlSsVxOVAlAt3vrqPM0yoa9AvW\n7mRzYZxpmHgS6GPkxcFoy/F/YrL27hjQX7vuD24GyumQvWTfoeNUh/Ug+Yql\n0j0G2U+c4vfwzk4p36oZJY0qedMrlLhNjyuDpAT+vIiEPWRki5PxMELk5XPr\nR0vs0/RC1LtQX7rVv+4p0rH4D1ltlSxSgfQxavyCCDbckZD7OftYTP9AX/X4\nW8NNeX1IGt2cB/CmcfLd4rYJdMPrpLT7JKzA+Fjju6VYW66YKN54y2oqy2eo\ngSUG\r\n=Rj0l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB6WG6BmsCcFzJUS+KITsgPSyUqPmwO8F0Op5ViJgrhbAiBvjl+HFFSLtqdJEqsteTyeZU6YWJVoryTRq2b1VsNG0A=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-next.97_1578568393234_0.4605808352990661"},"_hasShrinkwrap":false},"3.0.0-next.98":{"name":"@marblejs/middleware-multipart","version":"3.0.0-next.98","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-next.98+b47d638"},"publishConfig":{"access":"public"},"gitHead":"b47d6380c3a62290bd682b4e3800ca15825b4346","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-next.98","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.17.0/node@v12.14.1+x64 (linux)","dist":{"integrity":"sha512-ErL4Jyynbo+fSaAQztIvlzZczioW/A8/SkveMFG4O6fBh0oLD89gxvAhs+zuf5aVWW+zAKzEveacgKsfs4H6Pg==","shasum":"a905f377a9f2484d12721519dc8a91a2e3973a3e","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-next.98.tgz","fileCount":27,"unpackedSize":18799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFyr/CRA9TVsSAnZWagAAaR0P/0TgiiS00qQI0Y5BL+0E\njsIZVdFILua2R6iHDz2VY85Gzu1zdJwvth2D0iiXPvNjtuBwhOBFsRgYRppK\nAJNrZTtWMVNk8yZURia7UICej1qMbhA/5VKZDFDanGus+d1L91CXs0KKxBTf\nZEnwEcSMJYuleAcnrxaubJtJivfLuXzIC370WZ6hgZI7Ldk7Yioddv3RXCPI\nDM764aqXQanazm86sE2s8wrqz8dCUgQz86U5mkGIdGgmpfLg6c/kiAaWd1Sv\npHEqwQgnKdmBmA83ih3J6x/uzOKe6PqB3GX0MVMSjOnXWFD77FGTlBfwTtmV\ni/ZPWmf9LTKHrBvDQguZEPKc/Xm7XTHh1qw3UEnxMGIxRttn4iP1smUNSHVU\ndphB4OBKfzjFGpNRODtIIZkMZm59eEYoJs38dyEHmO42cLkJ3kuCpzopKUZG\nGZJP2rVlDLxUbldcwLcpX65FhOfvJXqDkKv9CtaH3ynAc/VWYYavVxxDmHyl\nMwT18fIy7HVE4maAEwGOxCKGbuNx5qoY3gVZLIe4ljRYSkCXfwKRlPxTgd9b\n4wwV/nO/jkpu8ELLWqvGjqv0TXzfTRS119F/vt2Zz/CAZMynW5+ktnH8NN1B\nq6TE1JEA5gwOiIsOTRzfHB5GHZ5pHwXzP5onE5KI5WtRkmSkZSZ9A37ti3gL\nXbZa\r\n=0kJi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnHvaniN2hS7T4QM/28QNhixbUbaX+hbHQxdwbbPYKOAIhAOAhN/m/lWWgPwZfuhvrdBbSt166swfARMs1OPDMzz6v"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-next.98_1578576639585_0.9487162321548943"},"_hasShrinkwrap":false},"3.0.0-next.101":{"name":"@marblejs/middleware-multipart","version":"3.0.0-next.101","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-next.101+0c9082a"},"publishConfig":{"access":"public"},"gitHead":"0c9082a4c486d7d9e32fe6ef4bad19bea992fb82","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-next.101","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.17.0/node@v12.14.1+x64 (linux)","dist":{"integrity":"sha512-xbCnQ2tjX0Nv9OnZ14TBk5cIb4XXAVve1h17fStVy2WXr5J4h+MNLh+hSMGo5PzknmaRtBcUg++pJC/8OxQgrg==","shasum":"1a5241cc24ca33588d1d8a085dc959d0eeb3317f","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-next.101.tgz","fileCount":27,"unpackedSize":19068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHbDLCRA9TVsSAnZWagAALUsP/31933Niu12nVnqG9LTZ\nca83GgEPt8wNKmNJYYILvDutVLhjAafUmeESCE0K/+r2dYm/qsPym5D/C70Y\nV9oVUNXp/FL02EvfWelZqJPfckkrkfs565jJJ9o/lLPbV5sYnXCjxa6mSzee\nr8dC0FLpF1pFaBf81ZFu9KI2tEtC+YdrG5UzS5Jqt/kSLxC7qg/mVU282ffI\n8/M4r7wcBmXHhWWR9XDmeoBjcxshU0o1h8v/iRoFKBQtFp11QfsDFhRo15Ls\nX7NTVd0ter2waf8PNZyz49r2HSQA8y3NkJTOWNF72PRzwdFZhJTSC5XKiEsh\nb7cTmNiv0riabp+I9xcVOV+5gVY7gLD17cgK2CQ0At4be5ViY3Ci58yo9Vpx\n/Hzx9G+KLMKundgM3NrcKDOwhlk9+1vEpBErzaOfb3z+5+xD92/rg++9YpOm\nZ15Q1dAWUeWTy0baurZH1SPaLRX1yI1uXuaxQ747UBmAz4SxH/mRE2bPlTaF\nR+YPp8oYf1+tbYGgxfp043JwB1MnqLYuhhdwIir1WCWLFBOOfJ+bdsXBNlcP\ndVYWwtdnGtKkei6t91IL8BJR4TmPlVFz1P8erFMkJRpfYun2ShXu5pQjBYcp\n6CNtE9QrkujyZHBA9B2PKcf47zqLi939aBpjDXJ3AffywRZGRQTgM8TOb47O\npGrW\r\n=OuBf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+HVeX3ATKLsK29bKVvNjL5UpCkqDE69LAoHYPmntjBAIgDknlH/GRQ+Bd8LB183hHNPiQY9syQJCNnBhVT2RCfA8="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-next.101_1579004107241_0.8044351124574194"},"_hasShrinkwrap":false},"3.0.0-next.105":{"name":"@marblejs/middleware-multipart","version":"3.0.0-next.105","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-next.105+8913df2"},"publishConfig":{"access":"public"},"gitHead":"8913df2db967e40bd276f25900fee07101d689f9","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-next.105","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.17.0/node@v12.14.1+x64 (linux)","dist":{"integrity":"sha512-TORUMxvm/h/SkRIEthFyffihNxsFW7lbGMWoYf6Ki1ORAmTiJVssxbQsifseyclmYyOoCEyqp0rmGWjuVu3i2g==","shasum":"69bec4cf0f4569f93294b8c84de0b224b25e3e88","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-next.105.tgz","fileCount":27,"unpackedSize":19068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeINE4CRA9TVsSAnZWagAA6YgP/2C2hU355MDFzXr7X3v5\n6v5Yk4VBF3EErtGhQQB8mmcqHOYUut0js/GxX1nNgWO+/3+ojDe3Y1CZIKkU\nLNHS5rmgoiF3T77eh5gLzO4sl+ZghEd3ycKbRrps2YrOHJOdnlR0z3gaRnhE\nio/UgBeBTTp+XuLxo98EobIq/ypYMt3GD5zVrzqBBQF/TZDLqNnOpwFVC5KH\n7UooOAsy69ApmAhoRZmXJ3qI2GBHXlPS7yoo+PDS0O58uvVndNicb7531wYH\nYg4Yd1ckIdGesL8knUGk2d8DkSeL3YKVzah50HMRVQu27nXJiB9amDVXJF4U\nJHoTzyUoazAUjDPBRnOScpXtGBt8lTOLIZnXtWn4YcjgIKLPcYRaiTxjRKlT\ncK6g5b3z7cLPVrVqSLEI06JQbtnZT9OaCisGoi8JtsMAjWxC4pTUsGqsmngS\nRJW/iob6sjFrCkDVqvWgSZsaxRkLr9BxIEZ9Wo4PY5U0dQa0a8RZ3zIf0p1z\nwF0kNuE8bGOYPc0CvdLGmpzUzl1SCULJLY0YO5d+xwaIJdra5dNFSXvuveCP\n4sToLONYqgU7EkBGVtEOiyYmqhRRJWMhTRndo8zCubXVpU/t78MryBRYUVvi\nruafZ5vTV8kNAIC6WbiZW3Qw0DCnnQ+/4c5M0fKuLAbF1Z2fQoAf358qtmtU\ndSRC\r\n=AVB6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuPGGIA2002+ufNetUaN3J/r5sST/D0GlPSEq8ccylyQIhAL1eebIQ3+K1BvOViQenaTVT9WzA4G+T6hb+bUBu06dX"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-next.105_1579209015835_0.5609685969681617"},"_hasShrinkwrap":false},"3.0.0-next.106":{"name":"@marblejs/middleware-multipart","version":"3.0.0-next.106","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-next.106+c73a843"},"publishConfig":{"access":"public"},"gitHead":"c73a8432496ac6fb4b6b12d7df6f8f02c608c064","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-next.106","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.17.0/node@v12.14.1+x64 (linux)","dist":{"integrity":"sha512-hsDdbQgUnC3iQ+1rYgj6TopGJQmQy3vLfgMhR7k7ddYQrgD6zWYvTlXSYOqbCJHeMX/gbYhvTgKhrYkVQctZ0Q==","shasum":"f846f4682f4c3e5a7db62fbc5826cb1e2ffa654f","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-next.106.tgz","fileCount":27,"unpackedSize":19068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeIcawCRA9TVsSAnZWagAAL4sP/iCXiMf76gQNFY9jAJSu\nhe+DXNTGsBLREebNwfAQDeF4dVQrHa0IfBOcriFNPRrfKsqKiBVQQuSQ8zvz\neQmOFSTXg0PkCBUd9/BK8AoWwmX+a+N66EFhgXfcW2mvE5yBtRYHDcoPzt7r\nEbX9H9i5VXhsb9PNeXdsHvyn93xrsrcHPcBD6N9T7zDCmdStNzGFyF47HswC\neHnX9ANyoGeF7xSjVCI4xOz7LeOJgzEz416lrVGsKRRTh6HAz7iiIF+Kr9RP\nvDqbYv9AwACXQ7g2QrPfvzX35Tt/6LrHt9XmTvAAYYM6+x62s+LyGMaW2nmH\nRIP28d9sUABSpH0zV7ajawe+rahFvNvZ78Rgpx/LcLfW0V7cY5057Cg50dbk\nl+SoS8BpjsHvBAa5aej7Puva1zx76VfAzgMlcLMbCWcUvV3gEjkM9g4IshnA\nxyD6y7uVHS35N8wxGJGR4qisBCdngwpaef511UrX9ovLjos7+HCpClUZzlwp\n9XMLKbsDgyM4yKfNrS4U3WPEADXiC1e+x/EzktUiPqUFBEeh49zLlqzd4NOU\nknOyV1ZU7pxYuQur1erDwqz8y5yIgceCBWxxi/W3GMkNG0OPSmvDaugXpZ+5\nyOzJ84mteSOJrLbYTecVIO8GE31RDscp9IolBWx49YfnSLtvSaoND03WGqgA\nMG9S\r\n=fCEE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFN5+ApYaGcTpvayGApVbcEEllZzb94hfdj1KPs0Xd9DAiBoiTqxXfQsL+EyXbIcpN5WH8Jof3sRx5a/haRdZi7MAw=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-next.106_1579271855619_0.6885690299268499"},"_hasShrinkwrap":false},"3.0.0-rc.0":{"name":"@marblejs/middleware-multipart","version":"3.0.0-rc.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-rc.0"},"publishConfig":{"access":"public"},"gitHead":"def4ada2f188524af3caac7e68fd6967b7cbd20d","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-rc.0","_nodeVersion":"12.13.1","_npmVersion":"lerna/3.20.2/node@v12.13.1+x64 (darwin)","dist":{"integrity":"sha512-SpOIqjPwAnODtXiWyviKPMydM+JSDgmyeBrf47rlXiFnOdtkoflWLPZuZCz+Iru6xNG6vIRyI7Bd++xfvZ7ARA==","shasum":"4a7ca071a48b5e0660187949e262eca95119d592","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-rc.0.tgz","fileCount":27,"unpackedSize":19044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJISgCRA9TVsSAnZWagAAMzoP/1U0eN0mUUsNpOfQcrAT\nnAPJkgIFwON+gR5owk2iGB/02yiORhRR3GZBk0al+QKvvjmCXrnwrPgeWhag\nwiRhISY3TBFR7J/tZ+0SMo/u0F3wBLq7+eQ45lx15wvRv37HVy2bHroUoxQT\nujugFAUXzKoODZQgWb4GMEmihsoPW8Btjxk+FAnEBcbtgtQQzO62syZ9WDQy\n6m2b2seXKXN1Fos3+ytATHMzJ+U5qfBGaMOUQQNZ6TnYkKKNpkmObhM+R49c\nD7tcVTP42dv6HOVKj1Hk1nQLL7nMSlE/hEYkeFARysYIuRvwjmNSRD4H4hCG\nzRlZD5vxMx6LmEdthnPSzdoJE+kTOnhM5G6s3vyH4jt2Sz2sMKh7qd2VuA6Q\nM5jCBwGiZHUswlTUX10MTNhQYXNQoh58dGEJa1Jg/QlgwRJNlchqnR5XzTiw\nTJbMDSuIpIMX/8IruJb21r0go8daa3aMn1pO6Sc/W869pHukzGi+QoJFkI7/\n5+1B2Y+rmEGBv/211Pq1AlZ7hDuHldMPrV/Z611LhB4vodrhX5H5panWQNR+\nT658x+Sfs7oXnAB5kvCdYQJVDPBphqHCVrfnHNt27qUoHvOOV+gzAGtFULqe\npelMmMQxrac/xO6bEyp2Gq1HkSrAOAGLm6v4YPLp1ol9wYYlXV3/Civmml2C\ntYDa\r\n=7lVY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwGbhf6e6iTdz4yPolZ/WZJ5UfJqJpYGiRaCeMLROabAiEA2t1Pk2u8hG3ranTjDNlM53b7Pj17/49MLISLWEI7h08="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-rc.0_1579451552159_0.4579602593490979"},"_hasShrinkwrap":false},"3.0.0-rc.1":{"name":"@marblejs/middleware-multipart","version":"3.0.0-rc.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-rc.1"},"publishConfig":{"access":"public"},"gitHead":"cb73eb36f1cd1d2d29541e2ddd7c93653d34b211","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-rc.1","_nodeVersion":"12.13.1","_npmVersion":"lerna/3.20.2/node@v12.13.1+x64 (darwin)","dist":{"integrity":"sha512-QoX+XhlkfPmKAdwdNEw6GqLlCq+pwEi8UtfsX1EHmNocK1sGH46pHNqFQUia8xMLyvisgd6Y1h+0V+jRT/OZaQ==","shasum":"e5070f0fc2477383421dea5518b6c8ca7ba685a6","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-rc.1.tgz","fileCount":27,"unpackedSize":19044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJWI4CRA9TVsSAnZWagAAp7kP/jTpNTfskJkJaBq+UvmV\neXAIDl7Z7pENlT+WicZLDIsuDBKPm10XJdqZxtk5mz1v4VGmwQ4mGoGC5jzp\nzRTz2wXITZpJRK2B7yUX+equCWTlrulGh6FYDErQRChC/kKGqP7ImMg6JZww\nR7c0SId2pByjIuphBLp7N6en2bxYntTnSyBMq7UN9R73mCJe5ITdD6J5/RvD\n8VASxX8cEpFJ0ge8XXWIvSu3aTtf79J2zAIIkiOa/p887UK71Gc+gKy3i0+S\nN/51PeVbKWIS5OAX6N6i1NSnbtoSzGksuqdKIIApOpS6RdHTZU6Xk8LlatwR\n45UlWUxcEmpML4fCI8UVz9PahbEpi8A7amWFrvxUGxuhgOHyJkwvAgbW2qPh\nThSw5IoU+3/YLUcA/E+3x83oBh4cxLQbJ3Z6n6jouTDauapeEqobZvFg7tjE\nrOL+X+4qV7mHTS/ad5JnKN2qjqN1cf21dtNbqOXKMJh5wgkCmzRU/ycymOq5\nDJDOitz8nOQgV3pMO/DpU/MdciRjx6sayWB5d5dXyBYkNkOiJ74uFO8Xi1E5\ncZzelZubNpU8wC6fYuBiy228d+whlp+rAOAVbF9+mTLLogF2W365WsMDi9nW\naReC7s228rCp+8vRrKRtPd3YKcYlHK+PX5Kbr0AjNr4OK+sS4BBOe2e0yhzU\n/dw/\r\n=Bv9c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHIGPOM6pHP8O73VNmAa81bdmtAMtAGlyUCDAVC8GqOgIgR8DVpl2Mzx9OV72PyNHLOgtNbgEcqVX3kxOrHHSXdFU="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-rc.1_1579508279866_0.10641633855548704"},"_hasShrinkwrap":false},"3.0.0-rc.2":{"name":"@marblejs/middleware-multipart","version":"3.0.0-rc.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-rc.2"},"publishConfig":{"access":"public"},"gitHead":"e8d9a4ee54b267db03f0f780132c0b60a918e636","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-rc.2","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.20.2/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-/NQZ6dNPq0UcSj1pKmXu28CsNGQWDRvpZoRve2uq668ywpXR+C69ED3u0285lkGGnv5PISfIMEpeb4TYTUy+VQ==","shasum":"c191ced329a47ce7cc03203bcba76301773927e2","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-rc.2.tgz","fileCount":27,"unpackedSize":19009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKhyyCRA9TVsSAnZWagAAT0IP/j5Zu4uoHy1Z5p2aN6I9\nrmYuD3FJfLh1Ck7AVhHCsuzAww35LKkNyJoQMl3xaZMXvQhxlPhalNJ0Fqej\ntUUiRjrTrwhu39t3Xb5RDchvVgSW9jXMiY/G91Fu7QPo5EGw8NQhGyYf+uwt\nb1PM34C3MRPMZRAP2VCEEkLeAuaw69wZpg0UuQ0OlB5h2PcefcuvmJSTSjIH\nYELaf/J2PL4AFrjhWebf8GJIjom3Jp+4MAyMrzkwuhq0nMhtbrigZybJ4uIy\nEJtLFK/K54E52ufbIVD0ZJpdV8BJIutvSdgnonEKtzxPVcyRhd0N80uMNVck\nuGrg2DvfW0HoT5HHqBhjhMTLk7HgamjDXq1sEEAeStM7oPEUIVvOX8kd2vdg\nnvnHrwvvxbct3DuZBVYwxmKh41A1UNeseO2+rDD2HNcqPYxrMQq8h8wRvBTi\nKkOkhommiQhLDPRetDIcmBEuORvkYfFBXavgwCKHGRB2b2jqQXV4U+T+Rp5j\n+WPzCiLZFtgOQvjsZ+JMzaTLHd/0dwDn0kNgXQithPRBAlLFahHsp0hDEpfp\nDMxQKo9i7Mth7TFGZjB0CNkcomg4dryQGQaWAFIYeKoMMzsTPB8tlcwg36eu\nj2BWST91Pz1qhPujydUGm1YUI83AziOwr3RqBt97hI0q/qREPUBiQU/XzhUz\nWlCG\r\n=KXEn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOSazOe7WhqyTQs3sD72RBX8glp0oOrssSEuhPRiLPGAiEA/wwhxTo4vC13tcNRwdk0PnmHmTaXQPsUy0mr2lUpH7M="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-rc.2_1579818162025_0.8568339425091085"},"_hasShrinkwrap":false},"3.0.0-rc.3":{"name":"@marblejs/middleware-multipart","version":"3.0.0-rc.3","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-rc.3"},"publishConfig":{"access":"public"},"gitHead":"3a3f4a49d68459f27cd32652f33ed72f891a8eaf","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-rc.3","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.20.2/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-v7TioS3RU+nwQxc1xot4eEf+2rlVnkofInHK+EUDhpeEjsguAPKKoc3dkr6zt9dGR0OFf/bdhFSxRfGjiq0S/w==","shasum":"6fcb91c18db5363971e812b14f8bac8240d311f3","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-rc.3.tgz","fileCount":27,"unpackedSize":19056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeK1VRCRA9TVsSAnZWagAArA0QAJFoYDpQ4PYK204vfo5N\nXkFJyYOk9aapUXrxIfqyiH8fCXNmGuonu9kREK4Q+vYlS5HnWiDtZfVcdeHz\naUZSjv6WncKsQ/6g5/RGAY5xhVuemR7kbdejuvgbomYvayvB3A6JaeDvKNwP\nfJh3dtWb6yySXc2po1A69ESdWwhBxkFbW/wrkaB9VUNXBf0v+oPO5XYypXrr\nUleKW6J4JappIiatF6owMiyFaFdTsta+HVmrw9VlOdgTruLOWCrhExro9CX0\nm3K13KcQyLVjTsfbY9Sc+V4lX2tuCymupKSHnVo+tMuK4vUeYmzeUV4+lBqH\nLT4fZjIw0Uee6gqNvGZY/2u4lkJ/Q3SAHGGKQMNV3gI0ah6jp0MwT2Ul716b\n5I0OiIISB10Z1fHzPybI4SAbOkYecWz/Yh4DzIMlJPylxEMmIAT4YDWIVNhZ\nLB5QsKkvHXyaTKplSOfkKSVtwhZSvlrvVsUP8hrFBhTS5PWhAUh5lTZWV1rh\n0ATl+ePULlFLDpP62JnaJ69I80/jse0UhsAbHZpFgwiLQa7hegOaFd081eU6\n53VHsHqBA8pXY4ST5m2Fw81RlG3iFpQQfwOU9P3W1TzmIhyb56ORcHYu6fFW\n//hVzpPmSgWzWl4Ag/rOG2QE+Qt3atJ2ikr9YYxfw/BIQw1HXfzvgLqIR3ae\nv/kg\r\n=WRNL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAFolKc8Tz58656DQpLMWEL+TDiYZFnn6mL4QOZV6TLbAiEA3McvrHFcSQ7dmlUZnpSm9Purig7xAcw8T6LqimEt1lU="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-rc.3_1579898192777_0.9969210460580886"},"_hasShrinkwrap":false},"3.0.0-rc.4":{"name":"@marblejs/middleware-multipart","version":"3.0.0-rc.4","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-rc.4"},"publishConfig":{"access":"public"},"gitHead":"7c76e69602a6fbee5fcdfc8f786928a9ff933ef1","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-rc.4","_nodeVersion":"12.13.1","_npmVersion":"lerna/3.20.2/node@v12.13.1+x64 (darwin)","dist":{"integrity":"sha512-o6TmtP+DbjuN5Bz6CAlDn7xq0KFTInr6GC0wn+pOHkJmuiSJBVGce/tvLsIsVnXKjkHNAU0Bd3dFgrBjDhUKug==","shasum":"e474fb2e88fa658cbd280ea5a3295c0ca505e753","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-rc.4.tgz","fileCount":27,"unpackedSize":19056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMCa0CRA9TVsSAnZWagAAMcEP/ihGSZJhCxpvEFUac21q\nwoyD7hpeCzC3Sxklb4pxiNXvToamNS8AOK4ckTT1MVIyATSrriKCTdmQLHZ4\n0qlHk2nYEj9apomWxorCUkoJ5TW+8pie6VFYRtfAS0oz6cgos9huaA5L1hWS\nigP8nyX1hHvTGwwLRij18SMPZWpYJTVfTQmmVqlJ2KmdPgV8wxMhwEuodvHM\nUZ3yBzlLaonl+ETlJBeM0Y75mHkRiCr0R5bZXnzwtRS5osGDhNgdyjlFHdLG\npasSr42T+ggTLkGhnhN3k4CYmPfgLcl/2EkUpxah1v6eHZb/ENWFMjTXMGVt\nHd3yTyVU12gnyW7uuAh5VsFpW30mZgLLbzl9KfWaDQnwzaaJnpJmO+7pTLVX\nwSizzp0a7EyE0rRUcatMSXtcbR+2CQL+JDdGDRmCxTwOqrSXk7m2uzOOfrcD\nyLO+84w+1Sj7VeCpBuVvB+nG4clYggqKsybFyJjUZCylooPFkcfxM2IpWNfc\nexgGlWTdxy3tjG8lqpK36HbSCXx2UtpTD15s/d/wQIWZNata4CVRGBNFC7oM\nuPVtrn0eufR2E4cR3qH7YZ19n+Us5zAC4px+QyYdntu2+T1htn9MzMb5zt4A\nWfJhEUS1rsxeaCPrv6LVdgTztPt8E3CWeyrlws1W09mJRlD3wwgZuGz/P7rY\nBc4v\r\n=k7pb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID1T0SHOxGLVCkxBKJqMDXAW82s7X6MSXp8xRzQmqvXnAiEArB9I60ojlsGkaTbzC9I8/u7B+W3HVwlHU5KEE6o1Z3k="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-rc.4_1580213939845_0.1769880122228542"},"_hasShrinkwrap":false},"3.0.0-rc.5":{"name":"@marblejs/middleware-multipart","version":"3.0.0-rc.5","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^2.1.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0-rc.5"},"publishConfig":{"access":"public"},"gitHead":"c3f68c31da1eff96ffa8c8c550aaab0d07b2ba2a","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.0.0-rc.5","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.20.2/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-Et834vT9gSZfK1eUoz7kkJaCdyYXmBCdjOIXhVa2pBO8ugiv+dOWYWxzE04QYp7wbR4pkKXOhehgRuxeYP0/bw==","shasum":"03d1a8167a69e78e0411e478c45c0398aad2fa07","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0-rc.5.tgz","fileCount":27,"unpackedSize":19079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOwkWCRA9TVsSAnZWagAA/L0P+QDfcdfEirVAsNdmhp+j\n/RSe3c1jPNHUvX/ZSNacJQlDZyzGrUuHvXlXYA/2/MnpEQBkDoY/pbUNT1yx\n4zr96nd/AQVht1bdvogmeP/e88iY2kCdD/IxqbjPFw8MvT2ZVNhcKDiZAaGd\nV6ACW4fRikjKviS0NZAHDYLKcDFnUqylPZwBC+IXoxAjLvKFE1ebPdVOkoO+\nsbt+L4+bdoCrfi8D2K18+0kmSDgFLmGKPcsT/bUsVibl/VqjYQ6NpsBNfkwv\nWb6GlXxBBPtt7mTp+HsxsWSzj65avrfTiCeIvi7ElCYK4lg4nYjVdFu+ipOc\n0CCsJkXV/iW7X3pIIjg2ZCjGDz932dinIINs2W08VEpSRE3rHgPPHwpf5Mo3\nDBy7yJSzYdIrhvAGt8/FZv51hGKDvt1spHWrxhJ6VGJcoxL9bL2GCF/zrDXh\nNQq4guVGZRzewCACTXviV0aHl3rTLUfVa3D6dmBTdVX5LpvsUSspzBmnStcS\nT8GAVgI7q2rbJfF/gwgbT3hh4/aI0ms9UUPiIs4lpeF671RFAp3/W3brguF7\nZp+SderQaW1cSgBO9kn9EO/MhnsNftUyUo7jvOb3oUDnl+eRSpfSQNqXIhYj\nCus7RTcLL6u8vKVdT2sLE6fILK9bpQ19EzOyS8suw5PFxbydHOtNeBjlDjWP\nYqND\r\n=ZqKw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwqhFOG9dXhhyuckl/G6kyZxWJAL1mdIuz+CF4GON+XgIgJ7r+VUSJGSNvrkHqnnBN39ZaTb8vAL0ocqVW3v2PgAw="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0-rc.5_1580927254316_0.19793812879285833"},"_hasShrinkwrap":false},"3.0.0":{"name":"@marblejs/middleware-multipart","version":"3.0.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"62d5c88435eb2f6c729bafd4110d1f7afb355892","_id":"@marblejs/middleware-multipart@3.0.0","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.20.2/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-uy6JYgDnoyUj8qnpt5qb2TVao4Oa6PpweLgFNVqd6Geso45JVgbRl1SGS+3EVL75zCDW9VuUFIwjDh8u4YthiQ==","shasum":"f90d8ab1c49af82079372aa0667299e900275423","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.0.tgz","fileCount":27,"unpackedSize":19069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWs19CRA9TVsSAnZWagAAL6oP/R320AIg6Ni4EkCJI8IQ\nM//LV+bjtA5nCrq6YWzTpHEKiAt4L+f0jUki4NqcxcUpQtVLy2v7lMUW1rlK\nz480NYXFPox2rSlV2vRHa+T9tGg4eAHsX42RsqXJgW4j0pduE1T+GJDC51DL\nM7MBtyFzF83+ilizku3jyhA3fCWYT++mrRa75lY7ZeKB3URleEvSM2nppgpC\ntAChbAF5uE96g0BfdY8prokOgcVhlUrj+J7ku+xWfK2cXoLPiNbOfI33Va0Q\nBvNWQBucDckM/Cv/F2OQGF59oZSFYsQtim+zXxdWUHVnlNY46iVmtiD2Cg+w\n+UCrlV86flMzOaYiyMMXK7NQS5BNXP8HYAdin/80u58P3L0YX/QjkDnXVKSR\nOG6WV5qUSL+3mim2hZ0kCXGqYUDDHdo2gPzvmdfyjnDEZ/1TBUm2uqJXuwlD\nZDlcpNMx5oxYx0BlzSNS8aknkFm/nAtrkY9cNeDwzxrwiwn12aJdSsvuTPFI\n1MsggjlSE/Y+yVcHCm0884+d77Xdd47su5sKLR2wSr//A0WFFSgRaP+4pAe7\n0UNoWavUUaANAJdmV83PRY3VjhnUznDJRq06R/OYYe9YrlRmYVIfbsFFjm0u\n8tlTeBPfCp7O4Vc0NbnPPZ+QQkHEchJlIelWNlqR9b6UaF8xRvVCyGyTetYQ\njhry\r\n=HtYE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICs3Ux5Zji2KNQIdVDEX9kZdub9dfq7WXqW0h0t/FxdNAiBcC3a2Azek6gGmWk+QCB6OJGBQKoAPTiTIDIcfLVuFtg=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.0_1583009149411_0.2582845611681688"},"_hasShrinkwrap":false},"3.0.1":{"name":"@marblejs/middleware-multipart","version":"3.0.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.1"},"publishConfig":{"access":"public"},"gitHead":"f9c8763bd94f77818d819bde2320e5cb8108067c","_id":"@marblejs/middleware-multipart@3.0.1","_nodeVersion":"12.13.1","_npmVersion":"lerna/3.20.2/node@v12.13.1+x64 (darwin)","dist":{"integrity":"sha512-e5I42OtzOVxBExvXZralopfymgQhkCjUmitD8hHl7YTflKJYiHJTos72KFgLlw5+rXYgIlDljuIn9jEHdlDPzg==","shasum":"87a84062a1262f99b8d3657dd776183d4e865bbb","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.1.tgz","fileCount":27,"unpackedSize":19069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYk0jCRA9TVsSAnZWagAABhgP/30HXraBa5qTSmUIk3IE\n7gp2Bg9O6xgFtkthcvjf+jHrpXgr0ULFRYyho5NE/21mAF0U4M12nI4un5jn\nsSsXB27CaGMa1wqBbwcduIljKRa4K9shNbuE2Wmjf7RE8l3sE+ym48iOqX7Q\nOXPRV3JUMQXxXNercgiGxwP2bwyQpwVBMi5bKhW4jH6aTi6WqN0KL1W/n3GE\n9rkDoFZpH4Suj78Nes+DSVGfeOb7wmo28xvruk5Lsn1pJ7WGUY719WXDJjk3\nmS8w9IVp7AvU9HSoV54pYsO9wRSWtWDg7BMv+3GV7t1lB48/mX8pechV75uJ\n37vKFAfIIwToiFYGyBbjCSVMIw1fMAc9vVfuKy12tX6lO4FO1uwNtkeaZzed\nDt4XmLOyih7EE+OJebmgXjnHUQQTEgUWKWlWUm0jeQl1WiW94pQPrvjX03W0\niqeSBeEKUAkU4dzj1ha3VNHp0GjFCFywWYT0UqrDBeO7QbwfAPnVl57nAzno\nH/yNsRS+0A3hUBMfDuT/vNWsGX/yD/NmU0ucNKdOU3T9jUlD4TA/5XZUvnlt\nm+u9Is8mLZbPeOR+ALG7xNIToQEDHwYuPWjlBHewEiK0OO8ylqJgcRAfmd15\n1148ykFuiCHWdTr9BXklTIqjHwAXbI48huqETV8tIE6/kAIXhZB8Wki8YsiF\nkVNY\r\n=pPKO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9Ge+pTF8qHcYTxZDojepEoz7QjdBxXklvJx5SECmL+AIgbW5YapZGKRheDBmY2jhwwhLFFV8mIJJ7fuJ+vRFooBA="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.1_1583500579373_0.6747244447611129"},"_hasShrinkwrap":false},"3.0.2":{"name":"@marblejs/middleware-multipart","version":"3.0.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.0.2"},"publishConfig":{"access":"public"},"gitHead":"b5c94cb3768062a719db1f276d83d0298ce4c44f","_id":"@marblejs/middleware-multipart@3.0.2","_nodeVersion":"12.13.1","_npmVersion":"lerna/3.20.2/node@v12.13.1+x64 (darwin)","dist":{"integrity":"sha512-H5F3UT9iFqzHwIg/9htCQsvC8mT+calceutf88o0cCcGxOA1nTNdJQgihBvmttu43NZ8wgcbixlMSrvK4FXNLg==","shasum":"25ef36d6a694789bc3e4f8d69d93d2e3656bccdb","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.0.2.tgz","fileCount":27,"unpackedSize":19069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec0NhCRA9TVsSAnZWagAA6rMP/1OTWmHf5MH32uaafFlI\nYYYVF7osyob2z/jdDY7m+IKqN3TkGMiOMnNIfapdFOShfI0RzKZZRkfsxRFJ\n3qW1hkouLb3UL4gZkhKSzBgSj/xDA5Phr0wBeJ2z7fLmkRDeM/HxOlDIISUx\nFrJdLRywkLQoBq/2KFu+pvdWLs3ClhbjYE5QzwvJAS1Uebvp4wxGEsiUS+ST\nmvWC/sgOkC1kzgFDkIm9pWUqDb1zJix9vqIZFOdLRgm5W12uJkLoQiCDRR4J\nFAvh9wQktABWvH4ir4s509zmyzQCbo5+jNby1ae6ipvdPJgIHL7S6BjfDaiT\nUYhDxm3PqA6LY+ziZJgGY52Xj7i2pAozjNdLL3sxBxj3fy5KQw39a24W8YFs\nRI0UwiiPbZlGrLF225hd6+e48989q4HzcW091xu1cp4z+TzB/9LyQ6Etn/hn\n+9u49d+eGSzAKGmKUuM51bJSqV1TWYhR8y93igNNz3s2us6APXW0Or2ZqmUt\nsuRQrt1qnTJM0fAurq24z7ZYG3HhrNG6aG8ESSeltlRD/kqwUU+2f2m/EPFx\nZ1ip28yMJNWJYx4JbxLBzEIqZctBPmsSi/LZ/3SsYKhDde20dq1hfsOBluno\n7znKF4+hCqAjeWh6feZjPk/7b8XWjjdN/1ZtRYECqrftQE2kNbQ99zrCJmVH\nxaD7\r\n=QiyE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6SXzBwqgvaGorMI9uuY+6p/EZfq7mf2f5p1sLe0+8ZAiA6PCmj4O5cNc8FO4qHhKlQrLQ1ZJk/j8k4rSfwxS1j2A=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.0.2_1584612193072_0.6141085392246268"},"_hasShrinkwrap":false},"3.1.0":{"name":"@marblejs/middleware-multipart","version":"3.1.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.1.0"},"publishConfig":{"access":"public"},"gitHead":"e2efcbb39d5f58c110c6d4de57e2d1527cc6267e","_id":"@marblejs/middleware-multipart@3.1.0","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.20.2/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-1WOBTIAMdQ/409CJ6AhiN8TPDm/nkTDlS8cap2Bdt1tePTP+sSWWLLLtEbU5xlyJ4BJd4XgtAzX/fM2IjULNUQ==","shasum":"9c3fef8c4dc901e42112007b0a42611426bb7f11","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.1.0.tgz","fileCount":27,"unpackedSize":19069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqdL9CRA9TVsSAnZWagAAFZAP/3PfMS4DakhJmFeiQU2/\niG1PeNTsGICAYaMDhrvPW9XgI+PwOVZYJnN+bZxqIBsdjtw1P3Y8KPfkE65S\nK9IxvmoTf0cft5TRrNjYAFw0eIJw8XdcVyH3csUqM8Y6/YRHL5AZplRr+mPl\noXmCL9VMr6LUh6CB4a5++3atcaACjHIiUR5jOcZulvhJURA4MiCKMez08SOe\ngDlZAeq06B9nT4vqfHuP8tLPgpnG7CBOgGaHt9j3WA2hilnBTqbx6dRO+ElD\nJuYac8tysphLnuvOTN2wHGUIYUJUNR4IcKjTgiiFmRw/ZRsGBVBi2cTzSjKG\nn87D6BU7bUY3ruSGTjiqM9DkivhNSw5OO5ocMuovTx7kiYgXSyDwOBfE3umZ\nZcObPryl0qMVfs1lwlmf/YzVKmBmfJMuaXPwvnIpksSQGGambOjRneHPiqca\nb+ZNxKjd+1LXoYmN9DybaT3mRB9iVow0QP04gPleKS8ZVzE2Q/d1i0dLHIRx\n8h/usHmh97clkjL3MP2IKwaZDKhOVRDFuxq40VXDzw5NcrDO1POrXCftBNFF\nWLnNGmKfiY0RcIhESCTBtW+930JEfZ0xo1cfhdjBj4OeiAAP2FYTJCW/FSJr\nC4xmioAhFE3itNnnXR8g9vsDQr41BNYGGmiO5Uxs/9vE17RtHEV+LqJ3T18e\nSvSa\r\n=FRgM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdOvP2/wqgyuutjbh71857b5UbQZf2gSfnAO/X432CdgIhAJ1KK76oY+v74Ia9GnT+uGEF+TVBe6d73sXXHTLw4GB9"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.1.0_1588187900846_0.5713424711815367"},"_hasShrinkwrap":false},"3.1.1":{"name":"@marblejs/middleware-multipart","version":"3.1.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.1.1"},"publishConfig":{"access":"public"},"gitHead":"75e26d080bb5816ec783c9d93e7c1cce87cda53a","_id":"@marblejs/middleware-multipart@3.1.1","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.20.2/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-H8HMYBjoZra9ds58LQ/KIde1LMRSXtAiEPrWw4SUf9ht4G6bBIL/i2iD6Pyy7mNaxwrjMzAdwJXBhzJnXhclVw==","shasum":"ced35264889db5cca91cae3ace62d594df2e222e","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.1.1.tgz","fileCount":27,"unpackedSize":19069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerv1gCRA9TVsSAnZWagAAsCAP/19IueR9BGJOeluW0zfH\nVpDLL77aZPuC9AyW9n3GGu6FP8MuSuJbwQv6ot6fe0pBUO04NCgPdAKbfrvW\nOzhIsvQ/soaj6+rprZ0TlXib0Z+1QVvehEIBaOAVQPrx7LgS2UxOMD2kAF2x\nBX5trudz+nxVTrVkO4C1X+rJy5aUZFsd204HPpX4rUHplcYVuR6EpWz+KnnD\nfbW0iB4WmYu9Z6EBebN6M7x1NOGhbz17PzZ4mIeNONgSMiWwuyDg+s8U5ZBv\nteOfmViLW7GFUF+1w2csB6rTRQF8h6jD3tzJBUlo5NqROCohc77Hk2ZdCny9\nBgx/nAUxBQqbrB2EPB7Iqb/0dc2tCq6fK2BDBL/sP0Sg/rZWTS4jjRFkxOLU\nUb+WXR1Jk4ElCFZdepE5EMFHZUp4lxW1U8wN8VTsQ+/LXvokH8HCn1Cb+ZSX\nP6A411MHeqhuk2YfC8wLJnl0VLu8cyqig2oVi7WgQYYbi/lpsLjHMqLI5mmi\nBiNtjJPVWdB0Dsij8X6yrGHUAOjWgT2Lb7Qq6qw7tt3dDr5Js0h10pRuzzI0\nLRMZqZdePwgMuHRDn9DkyjvbRHQi32PHaebRyLLd4iDpQxrjddtezLFEe9yo\nsM94KMnZMPkj6JyPvoficlLprzGKVdsK/M2FFBoAfye/cMVAHf6ec3JsKLXF\nZeo4\r\n=8B2E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEdDeLSSuHFASV7Fa6prDj5XBt5bzrXWm1WFhL+FbIrAiA4Y3WD+AlwMVn+nqmyiKDnnym0cnPvOQ3bvRHzTffFnA=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.1.1_1588526431716_0.24399527021192524"},"_hasShrinkwrap":false},"3.1.2":{"name":"@marblejs/middleware-multipart","version":"3.1.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.1.2"},"publishConfig":{"access":"public"},"gitHead":"7d7bc55c94f0a81c668ab9f3ac299e339424fc2a","_id":"@marblejs/middleware-multipart@3.1.2","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.21.0/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-gvSHAERSyA3YzpI2qA/RzZ5nK96XBb7Zui4LSbHhx7v5F3Y96w4MF8pgW8THUact+7C3i32P25ZL3WFnso/S3Q==","shasum":"a8d59b3d40fff50085a32c390727e0576d897981","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.1.2.tgz","fileCount":27,"unpackedSize":19069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezpZACRA9TVsSAnZWagAAUfYP/iocmeDdkkoDx7ONA2g3\n/2kK8Q7upozwAdr4QMAVfFAnhOSehVNVXGcNp0YIeUOBN8tC1zA6cTlm4uWn\nmCAIBtdCQj0mEACZkcM02Jb6EJWNfnT7TTDisETajCYsmLi6x6Nhft2AqiR4\nsX8rv7uLlz4sunJmaRo9/XqningY5uXfGtsBgDQivOaJkEyjIEvxo04ZqInT\nFR8TOCHrdHrLeFDGYwDO0S3gk828rg571wnQ2SZEg2Fr3u01JZB7PecYffuW\nmdJOAQdAukN3D3A1ywRIsUk52Mpat4POwiP7EyDy5/vdX6ZM1uvHwZG6NBXK\nts2BfCHWhrYIS996koBUxgYblmpPqrF7ur3Y7dH+zxomgiJ9e9tiMkKyLDk2\noGx+t3NRWdS+HN3Bq/LPb2tuYdG1g3h0DjiNIfIexyK2UGwvy93u7X7SyaAo\nGgd929p/qYM/Q/9SklVweI4zLZCtHIeDmwnO325bg238GbcwCLvb+rT85vfC\n/dQN5mdsjQyC6VB2cEgOXxUjq9mJt6xcJ3BI/zLs1OJZOF5BCmzDRgBaIuSs\nClHzhCEjd6h2WnyKqZoRV1yzEOObwFxAYYV0nR/EHdcmxqWU1N1dJ1Ikj0O2\nACraE6La7BtE9flkC9zTt8PLRBhkzZNUZBguJ4j8g4dTFTTvxSlQwANRivSA\ndU7d\r\n=QaYq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIDEP0UqtQnBUWvq63tQN90flupljMX0A+eQsv5NMiSAiEAt11AbONo9cDkjL3qiDiqV6NHOWwidZ5BPHpDnxLAHSo="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.1.2_1590597183652_0.06858217340960393"},"_hasShrinkwrap":false},"3.2.0":{"name":"@marblejs/middleware-multipart","version":"3.2.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.2.0"},"publishConfig":{"access":"public"},"gitHead":"786e8e1046110d7a284eaaa1811c9f1a0b763cb0","_id":"@marblejs/middleware-multipart@3.2.0","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.21.0/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-oStvkhWoDNNSYr1I+rJjgCIOUyGE85PBp6xiusS6yBqQDpY1V4EY2MjqCDsDMgs67CMOFpifBqFqBhVmMMs8eg==","shasum":"6e7418522414300e5d8e45953913da2fba81aa3b","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.2.0.tgz","fileCount":27,"unpackedSize":20080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3lgcCRA9TVsSAnZWagAAZT8P/0gEbHsvKQPQMkr5asJi\nlrE7KgKocCzC/sSBd+zrmlVk5A32Hxh1QMwZlDuw/McDKpuCPGkdqqueZxTZ\n0vkRe9gTJ3e90aftDNbH6VaYKsPGPlf4d214g0t99UY8e3UxBJTD/2jZEOMM\nfzYLUBPqtmqQZgsTQcoNVwdp6l2WIq/4AfmJX+KNRN5rslOURLGA09eCOAUR\n0/GldxIyZmZTiotfamKK6ddI9Xbrbk29kqWWXIlAaoNFkhE4N6xlq4jEtcRN\n4bpqD6nGe7nQbSwbgkfTRmBvNz1K8oc6I2dPxDvw3WePUK2eXqVov7w6kv6i\n8ODUMeClYxtgRbLFjhYQQqtCfT+K4HyZzaXx/6n0trCOQWRY2XJSUQ1BjytJ\nOkdkBDm8bDZkEd5ps8LuoZsoAg7ZmEvWCa+iQzXrC+uExsnDp7O9pd6a79dX\n4FXN1AFjIqpPQ5Cg5huW0U79sfhAhauHT3gBS3jJyhM2CCG8VyFdGEuwpEhf\n2aQDFs8CLC8yMJn8gbOPEGizfE4qLAi83vyTX1xyfKOeGLc1qox6tplYtOXS\nMAMFxQZejXwFjF2Z94ngFuvW3tzS+V5WXvGhNyLDOc5TCKgzgaYXYJt5JGgu\nZTEvYTSmlAGvXIprJDHHOTq9ImbhCfqzCNr41PI2je5juTQDvlNbJMvzJAHp\nGipJ\r\n=1hNr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWuIwnXmml51sCIGk/hr97fmhia3mbeQjRJMcAl8dgoAiBQLSjBkpAffqMzJZlAddENe5EPMdgIpe7lcFzsZupmww=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.2.0_1591629851797_0.10541958454719169"},"_hasShrinkwrap":false},"3.2.1":{"name":"@marblejs/middleware-multipart","version":"3.2.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.2.1","@marblejs/testing":"^3.2.1","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"010b692986ff519b92ca58bb21ef0b77447c6a92","_id":"@marblejs/middleware-multipart@3.2.1","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.21.0/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-h9iGv8aPDvVJdO7otayq2LgH6feE7Jh0o7Bf/yO+YooGNqSpsjAzf7g3cYuPQO57CyoGO5P2y/77YUBGnZ/71w==","shasum":"36ed7a46b0856ce6d2ce73d7f984cbf7e628d95d","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.2.1.tgz","fileCount":24,"unpackedSize":19755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5oMeCRA9TVsSAnZWagAANZsQAI9Fvftg5J9b7oIPmE9J\nr3nNPTqzfhN+FOW2hBYZOMBFVOgVBJSVJscG26QuIpaGGlbCGu8UhjtHSDfp\nD9i892xCB+dxaKGKozU1kzVJA4V0e341IBhw1Og2nLhtq2nPwJjpC0+aoLoW\nrR1rkdXJzR3isi0z9iycjIzxUQ+qn8GsGkzZ1TThL8jViOOEVj4cepl3rbnR\nxuP2mtKrrFlkg3lR5Hst7aC06nydp9b+FSoCMGQnR2pEm+UfZY/X5vZeH47T\nlLvbskGB6o1ZOGDUgBpSZlQe4DHPfQ3cY8bbHv78OOeCU8b5CPddsXP4oEN2\nzPxVbLTSjCVCXwoanG6kit3CiTr5NpDyrbsI02SugFYPMT2VGRaM2ywzkuz5\n/77nXJxpi+UdJ4InVIWxnpRkTEjivoeP7MEedE4rUnhOzecdFkNgXDpjc9yt\nLAYAQyuWKUFEaID6gkBxYwkn5wJ5smKf1IybbUEWVc0K4xl+o1vooKz45ZdC\nejRo4LDZtTKV840VyPqLHDjsYE7S/WtgovSIoB4U5401N+aWnl4QoTN/qGuD\nwVzA6mXwhcQQ/878KgK40+R0p8vjhenNyKhUqUeu4y+RjYZL6smblimP9FZT\nxi4LCHb8C34olwqVbXEM3LHmGfN9BFw5kNiXlyQbKRAYT8bOl8uphfWqS5GH\nF/GG\r\n=8xGa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLu+x7ScvHJFnVSfUFBeZdhQotGF3ta5/Bl4wVl61cmQIhAJndALzthrHDEqHUpg5oXf8y9D8XQkReW+qrNamFJ6AE"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.2.1_1592165149691_0.01487795683298021"},"_hasShrinkwrap":false},"3.3.0-dev.13":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.13","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.13+f1a5960","@marblejs/testing":"^3.3.0-dev.13+f1a5960","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"f1a5960a529929f6d69be068524e239079f04777","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.13","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.21.0/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-tbY7aSE0AJ19JHnue9FPZ0LND33yBHX9F0RyZ2hIZaht3YrLuBVd7AMpkDskMrE/h1hpYYSebgdVKLkrbEr9fQ==","shasum":"7473e0556aacd666131351dbac1887154de345e7","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.13.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8SqMCRA9TVsSAnZWagAA5LsP/Ra/9YwqXT619e89olTD\ny4KMN299mCsqQ7f7VVzSyNHZw2F79dufoA+1nwLX9x/CEykk2g5Vz8qss5HI\n3eXa1BDCR1Z+SrAWl7zXADvFO/Ums/t+CbNeK7x8ajHZZT/AlEf6II8sWCZT\n71ON/eTeXV9qMa7cIaBu/ZpjmHuRb6chua8YoBZedydMEByTXvchgDJvvWyV\nv6W4rCfMWyu7w2jkTh9+Vgp17Ax48DRifNDguxA89EvGT792J0H0+SKY9hvB\nHakaKqog5Lq2ZC0gYS2y1sGTzA6YHljM9oRcikz7felLVfjwAXMxglYXyJbU\nInu1mCbs4GsH0VHmAAUXGXsj4w8dnM8byPc+eZ8i1his2oipmS2ashf2WtDB\nZrXdPpKiCakCI/j0om/b56cZ2lBwM7tiB/gU4BLBctQVMb5LweaSxpHOgRne\nsm+xXY1ut/S3B1ITND3qAhP9EH495cFc8L0X26ZfcZBtUHRwCBxR7KOEVlD/\nieSrtVx5Dqp2QPuFSRl2pKxWWgAI39fbb2CRrzLg4eqjor0OpRzvt855mLtr\nX89e2odi7fCqYyQ/JJpjZAuUf2aoqxmEK/ky0+xIkFqABaU8TaVv4GmI3OwO\nN1V/aoUTspui+A8GKscyMxFz5G2YLKYxZpKOQPukjdKMTOO0FwS8pJiMQKkQ\nrIj0\r\n=467z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuDeOYr2ve+YyPsrgd/maD/2E6Cvv9MgQ3M6/xweq0LAIgaEC6Vl/SOF+SUFVeTNRGnzWyWEpcsGglkLxzPf+9CPk="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.13_1592863372288_0.06061687590299725"},"_hasShrinkwrap":false},"3.3.0-dev.14":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.14","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.14+25e8379","@marblejs/testing":"^3.3.0-dev.14+25e8379","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"25e83797c4928b06c1a516e6ddec0f38d042b92a","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.14","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-H/ZAu3mTHWLKfguRRVrkf5kXBEWqhJ9f8gaX1Tspqba1VucDDwWVq8xbiudR5+RVeHJmRasXX35oSOHGxkKHJg==","shasum":"08e0f8829e95d1d8f66af1a5389d973a7002b429","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.14.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8au+CRA9TVsSAnZWagAAHWYP/i4yCeN6qUVIu6HidhUS\nCgU/VPNYqypF60sFgxgzCTyEugynInNjgcQQoDRfAuugR1YZDVcheo1wDgeQ\ngu2E8mFY/iGJALX921OxBfelcGoUVF1QNgy3Iu3aW0o/2pYlB5pEBcPoGCM9\npM2d7W4Z6dzh9xVpNgL0NUBJyRqj+jFmAe7iX1eJk3ZKJGqneZqkdS3xlteY\nn1etPoJNr8otM+9Oep63TpSivhsD2n6TuNIFnYs7LwYcFmERvXcY6/nprCdY\nKxreNjP/CS3gFEuOwnX2SMjbiaAI/1a/6Az/gsa+PtcUZT0oCBlGfaotuBwd\nZV1ml2Ws/YK4jhnpy6AWPgNMxIVyQFBJFN/WPl+skN7Elc00BDu4NmJ4vrhx\nWWX4MC9/4AokbKODTeHjzEZPdh5ztERehVbz8li7zURnlp4IZmXVJ5Q26C31\n+wgxfso5Y9kOkkll9mr8hYPo7WIEO4PTh5FbiTFeXUqXwW6Bl/rvoVwWHXoR\nE2Ks/KMHTRkUc+lGpMLpbFsREV2V5kIH/p7ng4zeZCPJTptUAgcqlysfCKRE\nwRTtGvFaFc/kazAmkVbexaclMn0KMl/slz4lp5rYO12EmIcosmNJwE3iCm2G\nHcu3VJcBUzb6oQT9Kqfzfr6A/nfYPKy/UySBJGpPabNPeP53FLDraf9z1J1e\niI9n\r\n=GlpA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC07eYtT1WO2sP22gt55oVWPfrj0fA/RstNTv5cb8dLKAiEAuhRCbG5FWYBUcrpoO0gy+ql8ff9YFNqMn3qsCGEK2Ug="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.14_1592896445907_0.7695985529153864"},"_hasShrinkwrap":false},"3.3.0-dev.16":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.16","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.16+b4b795b","@marblejs/testing":"^3.3.0-dev.16+b4b795b","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"b4b795b6a89024ac530e4c0fc5fed9d7c1ff5984","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.16","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-JPz8rbgqEKRR16aKx88Qq11zTGN6W3iLJKIMW3qd4TpmRHBXlpLNtrK+Nnros0zhOPNKxsjyVh4HH3eEafAONQ==","shasum":"c641896288ad332de813652b564ca75d8514e51a","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.16.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9EXSCRA9TVsSAnZWagAAIy0P/03wrQ+BU0+UCR8yPcLk\nHle9JpV1flXjfJ+VZOhTEYqBhAPVtemUDg5r46vZVDcpPgR71Ke8ATWE2zzD\nEfhWu2vcMUAiBZkfouNVHVkhVpbw1CsT7Kxv+IIf19OPXKzl3+rVnRIvodcw\nNs7FhNxM+461u0ltYdsap+bI9gKCqX+7Y/FoV9mEBNFLoy/7nbNpED5ZhWBH\nXa+lfkk6ykGwbzbxp9U41mbAiJJUYgXjtZ3PieOE/ZWZYog5usqOHZvtzkz+\nzf0CawgesLrQDiEiCGaHNpS8mZjT2MzoXCq+nWPdxoHH8mhVbY92XSPA9rkk\nM4VPlxLQD7+SnGvpgojCDsllb0AWphNh5xfFogjT2AFlbmp32D2+F9vCnJyo\nPx9LlrbL7HSdB/KRF/r0Rlo0Ve3lEy8ccEsLhBNsLLvToH0q9fbKTUfn9/Yb\nPzFInV9Av7kPXlFj5HL5EcOQG+5/f3LvjfX6h28sHa/wwl0qn6V1Q+MpIYZT\nI7lSwBfcjWIeKkDye1vYAzom6lWNSpdPisndKpGPkB8eQdTzkqhJTiD5seXY\nCK9Kqt0+9jXGotykuQibyJjiNUytDcczds+iH7I0kaXeZLdB/msAKpfc66kQ\nSEYVoAT/JxMVP8PQpa98/Uz7PsSq33GVO56Mzrpl5dqPFYnXcCCqQHZnJ2O1\nwTQj\r\n=xRjJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCn5QtXQ/JKgw0A8eOLi3U92C4s6+l20sFkG4JybPJdGwIhAOQv7kKSKGCDHjSWcFziyzIoYQju+de5gIGRMwlIO6uA"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.16_1593066961398_0.02574876856410313"},"_hasShrinkwrap":false},"3.3.0-dev.17":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.17","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.17+476b4e2","@marblejs/testing":"^3.3.0-dev.17+476b4e2","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"476b4e200db9caa39f010f6d346aba7d43bbea03","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.17","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-62sfwaiXoPV1LN6A5GWYRCZM3Pu+wgjnMnB7p7tSHve5Eh7gad7jK7AJ4zK+cFnZVaMZOt0bVJEFzEX+B28vVw==","shasum":"02de111aa5563f13eea3b0eef36615a8773e7193","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.17.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9HyICRA9TVsSAnZWagAAoLwQAIZoj3M6P7jVDLYMKJol\nlHky9q2zS272o/wa+5r2hmIwDXGU0UMYtU4uqghTpiuVwxzXHtnmawtjoz7E\ncfOGbbFfjU1tjeXyyKcCidQObXv7TUn16ODFpY/tnUchtLogui0lOZdtVUiO\nmJfIvRce/5DRyikHBWCQZ810vXezuAYj7uEm6YHZeBVRXUN6mrquX5YOLVvT\n+xljImbL7Sm6qfN+dMJ/s/U73lyoOqNi7SiGUQuE6n0WlZ12V87DPeIIDLPy\n5vRpobalwNZr++Acj72yk5oZmGgwgThst3aBMqXcUZcL9NcccINBZ03fwlwq\nTJT6YBul/OkGv3Ush2juGj1Yryi4i6VshGwKWn7gqS8OyyabWtKS8Gy8sFkA\njwP18ZFN6+vLesLwCjXYoV0cSv8gWPrFUuOjPKOaYqMDHmRmiZhpBBNChcWd\nhEZI9rSefckhp4zPufs5unBFokjYoKaWNtp6SU/dgXyUHoCkOf+efgHg9XaA\nHMdivTtq0NrYncrCualmOHjTFNnTFERr4GUyTh8uhrb9Mxj5hP2zuO/N4gkQ\n72TpvV52eqyEcGK4QHr+NagJXGsFKLjWIjmZNBIWLo1c+F4M0ZDfjmJswxlx\nfmATG5jdeEiAHA7CmeCaSsXXBBDBq1L+AacPzjQ/VcGV/WoI1FIiWIqZRJR7\nRXQ2\r\n=FveK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0z/XAtowIUi0WX4F5meFq2VOFbLxYxyuV7gI+FkghTQIgPPNDJhG2ydBxQ2bC2rnqFnb92TB025jBiDbkz+amrTc="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.17_1593080968400_0.15806243578147106"},"_hasShrinkwrap":false},"3.3.0-dev.18":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.18","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.18+ee0b6c9","@marblejs/testing":"^3.3.0-dev.18+ee0b6c9","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"ee0b6c99ab0e7646a7f4068313906f7b383b52b2","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.18","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-PhA/41DcW9qeww8+JavIFUuFZPdbH57oZP5Y9p8VvmSuaOwLSQdPJmY8ekum/GFqRL57UwcSdQUl9Q9n+4Ompw==","shasum":"ce907620bb3a07a6cdf19ac9612254440c3d85b2","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.18.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+tyyCRA9TVsSAnZWagAA42EP/2pvBo9Qr+zHk9Ofn2CG\nxBGWklLIh2kVnZYUOJOaYKB1Y4c+dkUuRsGMJqr10fOG+ifOWZq2FCCMpIA0\nCokgs/47HRXCa20k//ALbov5qhEe1PnRnt6WAog6NGyvtn9K7ljia/sgkDIk\nqZIodeSBVT9OnNvMfDgRVqsqssoDNCJb/2Wq+fj+SqqLlKuazNLhUJWmOb4U\nK0vx7QvMdR4/CxXQ9alL9tSAlMo+2ZbJjNP4p24kt3c5DDs+dTWUzWaFldKv\nw/ZseksxAkkHTOdxhFAVEtKQ/aYBGMWgEFWp/nV6IbZeQkGtusWRJ38w1HeC\nU15dNt0/nnwOzYBF+GCWPFXJnodMNmLOy8N0FHpeFhVKQk9yUBAWGyaV5gZb\nN96Ds9qRpF2KGS46CAr9zKVsskiDLTlMF0LjyRqSYi2PqZtcDJlBR1AoGc7b\nTfx7N4ZcdTXl5VdV/SOH66ZCgCfZQYjsrb8GM282cIzMIOpbuKiu9qwT48VC\nfZqlrdVed0cAaq9Deod97zu49nIsq+uLzw2/GfX9n96qIFUHWMhbGIwdnLGy\nvIcwMJLl7Y6C60PoYQd39UagBuce0NWqemYW5xLk0M8nCNTrnqLJk/cr6HzE\n0ou31UbgkiszGTY7k44GrHEwgEBl1ZXhutB9NXwOcbBUoQog8XT8xWg2s78R\n9unO\r\n=oybl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAOJgGqbZ3mMw4dwffjp3Tdk9jBi4wgGzX/saEq9PeiAIgbs96czktFff3BbJFmVbFrgejTDTDw27WINb4csh12hs="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.18_1593498802574_0.6808435950319005"},"_hasShrinkwrap":false},"3.3.0-dev.19":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.19","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.19+1aa6432","@marblejs/testing":"^3.3.0-dev.19+1aa6432","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"1aa643292775579e1db8ddd57526519e43824314","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.19","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-fkz3C3tRE14ZIcwFekeH+OggiTv4k6AaC5bPHCz/Tlz+xYNjUruOYPEOgkyM+b5SnJ43M/2OhlO98SqAUbwg+w==","shasum":"d282e7e22e00ccb90fb0cc7f6bbc096d3bc74509","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.19.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+vu7CRA9TVsSAnZWagAA8N4P/jQeXDZAtcGuQ41QMybL\ne81syQqJTE2BiG2KZwsLlH2/uCUaSG9W8bBMfqXrvNlMCeO6yJ3cUF1i2f86\nnhVIkNftrbCmt7d25aZCr1u26IecN4l/uXkcY8j4HI/kna0FJWHheciPsb3x\n82aQpSpSe4WZti3J2WxCtW1LVZAliTsnIOIceSjCrvgNigNpBt0uymrdcCcj\nBFGiwbZ18TbfFqbClHJUSxHGK6Rc9ykbN/T4hwX/DJKvYdwVQMWNCYKxnMo8\n3zmmL6fpHNlJ8a9ZlmLVQG+K7JSIMHd+DBmoaWLhywSWtLI9yTWNgA02FvQQ\n41LDW4I8/6Y+dIsbLXfgP/yYkTmbAK+wHRIIQbzOaRSoRjwatqR0MuvWgYw5\nGCL9hAq5hmYR2AZOqHW3OKgQvoAJPg5SZejswXaUjepalcd/5ERwtTi+fOLb\njoYaZhV0PcRUnZL3d+o1NacB6C/KeYt9iu5+nxC6majGzivGXDdStLyzUzh1\neaIWMskuGTpd2JHByd9M3ww9CwM1NV0mnHp5kY2fq8ttPMN41DDH74g5kr02\nn1SY/bnq6oaOny31LPy571Gf0v7al1lwhOTNIE5pNM/c4AkdvA8y/3VZm5tc\nTs0LqLVujAO6kTD/BmB0YTvLR2rtj5hIHunZrofuYlRyg6lJYjSupxXFGhkk\nfzhJ\r\n=/i5s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAkuyMJJ/e6g45lzPhsVmtmNOmhldzKAuKdjvTE+rAaAIgS4RDWyFVb74lYwPF7ktPYtXnwgGLoe2gTH18zbyI/Mo="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.19_1593506746934_0.7200197466333753"},"_hasShrinkwrap":false},"3.3.0-dev.23":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.23","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.23+205f43d","@marblejs/testing":"^3.3.0-dev.23+205f43d","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"205f43db9c62aec8578c9061af04ff57ccc29d32","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.23","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-KTfWwyOKJvRucVVNgIuGcLzOkTjlfq5iG4MDpq9H4Tr/atLHfKfpGjhohSG0EqiIh7kt/h0ByF+CWzvQmS4xYA==","shasum":"b870d66ffeb0d29b32df6d596e60f1f91ecf3d13","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.23.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/tJ3CRA9TVsSAnZWagAAQG4P/3VF9JIpBjxlPxwXhsVy\n/fcgWpnUBeK6+OhoZnUN69ZXdeSxBF+zfDlHHh7Cc/Uk7oUfS1X1KMMDmQig\nK51bJQdJYB0HMO+6c9K1PX+oTR3VcrS7WwRZbzP796IXP4MoAtey8XCTbQK/\n10XsyklSlwtAsToxV3FakrOg7n0ptL886K+O8ixrbKkD+nDQE8HLofCvAVe/\nwv5Zh4WuB5NbicrpGSo29V25xd5Mt7dlB98SPxOGNanQ+xrpB4ItXMsSP41q\n5admbIytR7i0NxsO7oGQKsklre7zMjj9w0iBu68WkEv1Npnn+ud5+7LXS6cB\nfnFI6ruk6I2n4IRudxKRDigf8rkII2XvKFFx1AcBd5UsIuIlzICLd0co7AoA\nuKlWfhC70iZ90+Hddcok+avZYc5iYdYywbexp0Q5MANqIfo6YrkwF76fXkfu\ntFbjo6w57A3ZjE1zPjst+VScGmEvIYQW3z1+ilkqo7xumvktsW4sjXsrdzB/\nqIdgX//je07oM3ZSJG7kwXZ5iTis5DJCPmaG5ygSuyZjf+NhoFXTre+kigbA\nDKP0fwbWmfYxhi71N1+LsMhKdyzBh69xeAKNKPCqn72Hj7tjA8khtBWCMARF\nBnKQ7IZVI3K21+J+orgpYZrYV7eA4lNsCtRa9sd4Z5T60AG1Y6pafAhkW0wK\nPOeS\r\n=zepE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpDZ4V7TWUwJlljswXi4Y7JYOZPVLOw0KlviI0x8V6owIgEV69GDNowKHrtPdrDoASfNupIR0GQBUcVEglmbBr5mc="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.23_1593758327322_0.8116644825778341"},"_hasShrinkwrap":false},"3.3.0-dev.24":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.24","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.24+39461c3","@marblejs/testing":"^3.3.0-dev.24+39461c3","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"39461c3c859327113cd36dc9408b5757508a2e39","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.24","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-9+tVMvEcGJkFAp2KfBdXUEvuEQwcd0fY3GoIZdEdK5+xuw3EnpK82xdl1oduFBhKCW8Ri5QeHoWN4NRFHwMyDw==","shasum":"8f129671b9ee0e0d816313deefdc6e39583924d6","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.24.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/v6xCRA9TVsSAnZWagAACukP/iX5G1tsncvzaYFAummv\n9xvykXLoK3hFqSSUEiieTz7YXQkW1VjiHRGEcP5VOMIrANC+flMROI/AHuar\nWIHJolotxiO8OotslZcrg1J/S1eXNWRWI69ZUVFvJxTuGY31zlFxOkX51niv\nd0zqqonFjeTe/oBdpaX7OYhuOK/mz2jbQ3EO8UqkjQD2khwkGejpFilbZwL/\nX9Wq13qaWbEwdgZwdYzMs8vot43qUJOnU3ciIwaUI4bRLe0k5u3YsMUFhuSQ\niYsWA8p4L/TB9+Jd6+tpAgSDMiDMsUqdi8IyD9nqrDANbeuhElZ6+cAZxMrx\nBmACftLAEi0rcMAP+STGenVEW8cQdo9FU5kXD9p9AqZD0aqJNGOVpAbb+H9G\nJ7Ua2Xmt6HBAd3pyre6bdr9AVlY+li2nxJLWF8yZLnW5A0bnRRMqavLBhDNT\n2mJC8lG1Dy8yEs6eve3ueiTpyIS6+e5YS689nJpBjgoFwlb5ctVLpfoBMmee\nnt/PsCss7JCIUD95GaOS4oMl6nsc7ReoxLXH7N23Bt9f1YRwrTWJHA9w4jBL\ncb8Wr9jgGtH0e13NqYP7u5kLTSPWB4MCJ0Mi6Ud7UGOkAUhNp6JlXaFa7zAc\nSEfvnS6ydhQTfq4TxJAcHHwVjWrzWXuJIIozmtMwzmuezvMZODWeOHq0YGoc\nLvAW\r\n=XgkQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBYXReyTLkfFrOVc2b53uweowgbEht+mGlDgOLcHl/sPAiEAlP+02tunCMt3HBPu8IyGr8hnLzxRQdKYC/TJ9hWftfc="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.24_1593769649259_0.03135089072720443"},"_hasShrinkwrap":false},"3.3.0-dev.25":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.25","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.25+d7a49ee","@marblejs/testing":"^3.3.0-dev.25+d7a49ee","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"d7a49ee4adf2c597d971b6e15ea246492ebf001a","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.25","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-PlxOKqM5neLdUC/7gAm7GYgIojaILwaxqsPA8tiB2phnxwzU8Hu4yK7xAEhz7tOVRqs+kY7lLeh1I63JyYwbHg==","shasum":"0dbd85a2d3cd6f84f8b216b4da85961fefc1acd4","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.25.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/xPDCRA9TVsSAnZWagAAYLYP/R5twFImq69VDMwgUOzP\nvveRhA5XCpvPvFZH0ppu2Sys7cfA2FZIYglnTRHiM72jEDZMPhsvUuo7QJIb\n8Zu4SDFB9CPxevWEQUSdlir2GsNMPRopxPVn3Lr4kgc/L85LpFSRTp9l5m/T\nfLNlSp3YCwpcCTQa+gH72bb2cGNWp+J2qZQpqMrt2QDf5XsIL8Kmx8Ofrusn\nIyAWLL1ecW0CH4G2veplCh2SBbh4L98WW6NPZUa71CKN2stOBE2kqpRDOxBX\nPwB27n9sbw0HRMGQUhN1C5CoOsmk0Znp/UtJZXHWRvA2Gr4yqhAClkBI3Riu\nSY6n+woe/hNQJRpMoQjnBdnd1/ZXYmxm6eFGGG77CUWwIr1X8Bt1RWgzF+kU\nhknbDixYZnx1O6xUPm6JHwSu9k3jPX8cJh+W7h6taBjDzxZ8qhvXPw6HX88O\nfBMPSSFLW8vf721JmBroHucANrsc6Uie3lZzwjq9Fm/P/tNBRAQqw+jo1w8w\naekiVsPSV8rPrXgHdBjsxy/j9DWtZk5HNEoHgLisAeW0fS5EybDJpCejY+ZR\n87MIcknQL/RcoNpcSQJ/3XF7S14Fu2zPhFNX8q8dXpZwIPsv3yokDWVeKpxL\nNBMH8evjldql2zF2MV+4yANAERVRaq7aSt2+DlaUTuVkfEk/Jz0XT+EXDwZF\nGLeC\r\n=zi6p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZ37Da3cKqbCGQPaXyJAjkgpxHQ5YNKtxxYL30KVMwIAiB1Dwm55skqwMLBTfJGzmYwN8UsjJSqCzIA8+Y2M3lB8Q=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.25_1593775043572_0.21358516709373587"},"_hasShrinkwrap":false},"3.3.0-dev.26":{"name":"@marblejs/middleware-multipart","version":"3.3.0-dev.26","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0-dev.26+3de29e6","@marblejs/testing":"^3.3.0-dev.26+3de29e6","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"3de29e6a1fbd7fed22b4f8e61a209183cff00f4d","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.3.0-dev.26","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-0VImh/fAtt1HM8H3H8QMc6crnwAKTjd/c34MFqf8jY29ot0+AjC0YS3cC+PmIBgSQ08T8sttE8+zCJ46SFZADQ==","shasum":"d18fd463d005bca7c75983de8abdff369e85d881","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0-dev.26.tgz","fileCount":24,"unpackedSize":19800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/x1DCRA9TVsSAnZWagAAGVQP/j4pCWNgSmLHRjxNldy2\ngkKQGZvzgJwWufJuiNCdzfPgJKCTtNB0rT2jPOJxY9M4B2qrYulVug0Y09Vu\nwDR60lgHl9bPXq/ob/5ejMgdutDwyTCq/XqMbNtPYiSqfh/12AG3cFDENaHu\nAKOuQiBBQM/sv9uhUcr/JoM4KiiI7rNssxqFjzWLFMUhkorcUxizVVr98LmN\nqAMB8wKYhBvIBz7dVInSdxwq48mRct9g2VMjjGtY3Htmt5B0DRO9oXYtp72H\nIAaI9eVYONRinLTM8+XegLK3n6EsDgjdc6v9qCKrmMp1PDsIwaoCUDssV3xn\nVNPedwClrK9SDByqQJ1R/30BI4xDChnWHmRHx97plHT5YLZQFnpD29i1PIbA\nU/a4MpCcuOy0eyp2bjfQHBJ6xJrh83xK8pXD2rCyICgJJQ9nopM6M27Z44DC\nc5rsVLYo2+7ji9rufcIAWUbF5OByf6l8bPI0RZ42iJb6wEtLgHNqc3aTX405\nFo12V/gzM7kmAF/ivHr8hoeUNJYJJ4b0l17gr1Pumts4SWIlIv5R2txGWLb9\n2tGqPKDUS7ul7AyJEDHwjoGDZmRh0gNkOW+SXmwacRbAL5jcARh7fRhvW+ST\nDN4G9Ogwvls3t886SWWq+8YxduDWaRIjkwnraaU1gvQL9YWby2uanNg9vo4Z\nwqOS\r\n=Y1t8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGld+JSXmsLdExrjZvU66XdGl+OtfFxCPxU+xjc9Fc9KAiBcNIZ6DIvIQlKmxfoPoFWDYI1cTzTniZZBEtEyvXIunA=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0-dev.26_1593777475080_0.03795176886431206"},"_hasShrinkwrap":false},"3.3.0":{"name":"@marblejs/middleware-multipart","version":"3.3.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.3.0","@marblejs/testing":"^3.3.0","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"a400b5a1eb63f0d04496241da5d174dfb946fbce","_id":"@marblejs/middleware-multipart@3.3.0","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.21.0/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-okE+KXZl1Cyr22QUi0o67BHqWbHBMw6Qe6/JtamG74wCRuV3F7OIRJHSvPgpv7SuDBVCH5eVeUm3xi0kDIq7Dg==","shasum":"37150bc994b0990745dbb2583103e3a98b6d17b7","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.3.0.tgz","fileCount":24,"unpackedSize":19755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBBq/CRA9TVsSAnZWagAAOcYP/RQMhmdgHKdZOrPJ+Tt1\nWT7weemABXP8b+zNMapjcHfyn1nsm7MIYLWfVRRDL4lwcUOc/x1OqAdh+hZR\nrxwoyiD98rt2JlC3csdHEjGJSucycahFteU2jqp9tN8KBXFOOd6JjknpccBf\nA5BPAs6163kY3vKKs7mOoEfpYfX7qvp1GyddotxvTrO/wNkDfRzpBeBtJEKC\n+iqRemDkJ3BzvLNZ7cHzu2X0gBHSauqRJJBeNApLgK65oTxUfKYOfX6lt9cp\nkU3uHjmNVGvh61rwmuUlb8rSFJnJ+VzwiBEChfQ/ZXSuFsA4uoB0VWyuL9lW\nkYrNTQxZqm9Kk2pG8Nnwp3qzr6yvO+esMzmVkC7gJ2wYxmyTf4dV7kT59PAp\n2g4l8Qf96ezVPwFuOVZtYlf/rphFynZGZKW5tZLAD4I7kNwwgo5K/pTj4Zn/\nP6NjhYMLBo+jR0LAGDf3vmmVpzhqV2CDbpEHeQpiQFGn3TbEsFn3sLuN/xLw\nHfceX40Yl33Ya8XXih7nI9INRqcvmXzGF9Z4BhCSdTOIxBvcne9Z6qEHtGBl\nlhuDdyuG/JeSXJ8e/YuAdaRq+RFP5nwNSmKhxwZEB1pENl0DtTdUe/9aUeuG\n1bqZc9DynfxkoIvdOO7uQYmRKFjcH0Rd+lI0MRLeukn+HYMT1Izib6uHpsRj\njof5\r\n=19ZL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFDpe7sK6A18/Kt3rq7Oz15SYwWxrI4XsU2vyqAPWbKAiEAtxNfefP9DKuiulae5NZET7+s15wvjfXuM3Gi9wAqQm8="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.3.0_1594104511311_0.8552585116358828"},"_hasShrinkwrap":false},"3.4.0-dev.5":{"name":"@marblejs/middleware-multipart","version":"3.4.0-dev.5","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.0-dev.5+591e184","@marblejs/testing":"^3.4.0-dev.5+591e184","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"591e1841cbfb3ddb2e6149ac4791812952f9663c","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.4.0-dev.5","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-K/EOjeCI1dmFc1Pq4zCuDpcTdYzx+Zra3AplZaQXwXpoEhguPKl5LP84k1HokS8qY5bA4Q1tCG3oGUUOaH7/Qw==","shasum":"f11772977eff218638fdfa67680632889907556c","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.0-dev.5.tgz","fileCount":24,"unpackedSize":19797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKVJhCRA9TVsSAnZWagAA+A4QAJ/aKgNveUKWS1E7Q7TD\nNDN/uC55GvjPoZMUqbZKEzSWudr2afE2xDM2izptbQ1/zGCxqfUK+c6+pcK9\n2rF2hibq8ePC2UNwudUUJrr/B4EOqtCnBko4EPnLu/R8IoPISrhY+2MshbNS\nDo8xPHXBbTUOwh1vO4xLjjkmoLURgTBSbbkqElHtRZJlFMo2oXqBf7v16Hfm\nzVSo9jXvX5JYzp3yhRN9fJV2FLvVFUDYLynmE4WCk0JJbO6BshFmf0yIWF6j\nJu7Vh/B5I3jwz+/HmEYmAPm7+Iu/l/Dgov/43vmMVC/nHfVlWE5FXuNDHEd3\nIr/Wils3JGrbq4AUoOXc92th3DmtlXjZegbembIIqmDPxq3ZqWtPc9qR41Ch\n/VoBn/7L/zU/9OidPSaPSgvsiGK92W/A9G8peehDH0rtSUenDcr/Zn/0ts6S\n5yVFUx/1fVKFVzU4TOQmyWJnHqS7xVzvRCtpBPCvpaQ9x1QxrBDOS5QGRk3D\nK1o3UgZdwG9Jb3zQ9bxcaETjHGV01CwdD7bbx5R2C3+pvribh4aumKjEefJ/\nKHBWNKxxECIOeWBzdbR0uAMxb8Dd+6LpH11RC7u5pbYSypK7wfYYdzY35w++\nsCUyxl33vREafitfGFi87KxOmvAZsSZ0dtBjY2ZGC9iIuqLXGmlR2Rn1t7yn\nge24\r\n=J1u/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxyiaJdDsMxMzpB05NyCweFGGqTwsr2E1KhKuIpy3YOAIhAJZyhEde+K4vx9TPrzxuupduMDrewY3e52Ey6Yaa0ZuH"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.0-dev.5_1596543584950_0.11724542028669616"},"_hasShrinkwrap":false},"3.4.0-dev.6":{"name":"@marblejs/middleware-multipart","version":"3.4.0-dev.6","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.0-dev.6+777362f","@marblejs/testing":"^3.4.0-dev.6+777362f","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"777362f0bb83e44ef06fb3b685cbd1f5cc698bd7","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.4.0-dev.6","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-deuoDxbM7DaWTfoZK4I4VEjUAzMPpbkt+TnnQ8aHczJvw4L8vNH0wDPMFc7tddr/RHi0TBg7JsWi5xbrAwq3sQ==","shasum":"ec3b377a5db5320439cd0d710ed06aab9d56e3cd","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.0-dev.6.tgz","fileCount":24,"unpackedSize":19797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKlGXCRA9TVsSAnZWagAAicgP/3MqxtHcIw7QQYI6oYu9\nk1jEkkOHrHYOB/+ZhNuWarlin28PtTktpFIviO2zXF0sJ8HqTI20oN1MPYpu\n3d94U4LyVa1YvAhxAXGIwO7x14TEqdzrKACTY5fsGmg3Lg/z3lrYt06h1U+h\nWTj+gQM79j6Qb/zbQNSTIPWmlDylmmAf36dsWfcXC1//BSoQwNHNAA8WvrRZ\nHE/+VTUbTiAu3+reGW0R6wQH3jnZMOt83onF1gv+IIJN7K3rErnGbJUgRtSp\n+PqUTUdjcVK7poQZ2vVe9A2LcvnDLBSmssALsF4doxFj8N4dMygiEBD5psha\nFIep/y0h8Q9fkKv14OFiwF3nMG3tfYiiIYbJsD5urUuJLF6zji6D9gH3bF42\nSYuxRcEfD2m97QLK09ikXufEUvawCP49jr0s3415qPp6SV5XEzGVGVezOGBB\nOqyHi0zqa4rnAbTOE5KtmRGZU0B46h0YUpmXo4kQgshuvGrD65I8ixV7G5Hw\nZu+6E7NQ7UmQNO0e2FFadaFv2nq94zsVSWmt9Pizg0NP4uBiVfStoZJn9OEg\n1ka9TIrmoNYP5rZbwMbAVFYv2vDvebXyICpVo74cCzcL9GpFgkotFhqa6vAj\nyYqi/B2l3DSn/LzbocX9oxHKmpIMfyBDrqVibeAEk/CBVft0IRrZmJOC066+\npazv\r\n=jEWi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCPL5y04Q4azwykJ8uVccrSh6wW5+FztwAKlAnXD5eIgIhAOHYE4zOSsO10sMXvBk8xoDuVNYjTgz13FyJ5FGegOPX"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.0-dev.6_1596608918881_0.6634311296816633"},"_hasShrinkwrap":false},"3.4.0-dev.8":{"name":"@marblejs/middleware-multipart","version":"3.4.0-dev.8","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.0-dev.8+9939892","@marblejs/testing":"^3.4.0-dev.8+9939892","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"99398929fafbecb6b8da89142475e5e6a85faced","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.4.0-dev.8","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-iVlxRyQhqDslu10uxXuw3NY66rP2MJz1z4rhrBV6Bhr+Gc0/UUBfrqPoey64LlWYp185OX8dMTOpjkHQm31O9g==","shasum":"e2db7b395918727e75e617441865bf2d2724e601","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.0-dev.8.tgz","fileCount":24,"unpackedSize":19797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO7rICRA9TVsSAnZWagAAbmcP/iQrTRffyCkLo46Q5nnZ\ndvmZT/PGDbAi1EbonB/lRigR5OUUYy0HUq3t/z05PuK1MY1dnQWabLdAGD3d\ndVVmw7yZib1hGHDKrtWcVeM2lVk36IXDnS+SKScyz2Etas8XxaFKNZseA7y4\nC3S7l57jG/gdmPaVq2Ad4VwI1dcMs+NTJef3xQa7gVFehMGMlQGATC3TjCOy\nZ53c9njkFJ5tg/xcA/JeOuEYZr4H4is/V4pC5gcWE9MtavLA6iAMZt1FIBGv\n1wddCMukHPeIMXYJk7t0lCny5F4Z7On8PHmjFIqDUeGKU4VTixNtbHzwNJq7\nSX1qDOONMJ+gci279r35tpmWNGKhqbfef1mWIvxQJ5pqqek/6BjNLmo1TWnJ\nJiZGxzroUzi4672dKABkC7Vdn7E06ODU7L3Fvso+EKsrFfARnczMB4DBRXNQ\ngUIyYBGWtbbTiRApmFu1CLNWSeTX4nrGGlRGF1aby8w5IbpbXyPb8HDcVILH\nVPjBf8DS0r8RD/X2RrueUIDcXgciSWqF7QX7gUi+I6ersQ8DOPO5l32lmaUJ\nrahIHCyzOvRmD8Gea6TSYqyhbHbuUG1FKFbwMKr7j6qpXaivmLxAll/LreLG\nyfPjD5fem4IWmJQKE2kfCO6K/9oR46E3/FSHtBDsxHitW7G+KDI1rC7mm74R\n1CyD\r\n=DZZZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHNFOoYyYHoIxwgtdrmwBLBIrcUrad3eA5khLwjmOqeBAiEA6ruBYt7u7fJUa12vf0in1GmDe8x2LKX1dZr25k29lJ0="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.0-dev.8_1597749955154_0.8207462843790334"},"_hasShrinkwrap":false},"3.4.0":{"name":"@marblejs/middleware-multipart","version":"3.4.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.0","@marblejs/testing":"^3.4.0","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"5da9fab2f882c16a550d2f8f7f2d56d4796667d2","_id":"@marblejs/middleware-multipart@3.4.0","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.22.1/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-eEe61Uti5nY5OgCrzP1A5ERcnxWEPVsPn7eh78q/CPwGR9WTSam4KA6CVLFdE2MkVubcH4tnWMZsEZ5I3SURiw==","shasum":"82fc80cc50ef6192e8795ebc3c65e526cd9c5ec1","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.0.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUSj9CRA9TVsSAnZWagAAaRIQAIv9cw6K3pSezcff/i3Q\nCoQHhkSpi+R9k8UMeNSZEGqpgAlb49UbS4INPyW7Hh0mUTgGo36XRkdptKcB\nuFuDABgVDuj2uIYjoLvR3DB7iGnTYyJaPLuyHPzAQRvs4B1VxkYOU4iEqNY0\n2J+aibHFIIEJWlcoRuN7rkUdVoCCakVmChGSIzau/iXIfKy00HUyY2M29llw\nCue100KQMEsZmRPw3XZu8GSO6cOax4VBuDc+1j5VwWFR6oLlCAqhz7Pulz8E\nSGNhPFODhbMfvwgJKOrrjuM1+dz+88jCL2jwVG/ENMWtBIhEsVrX0dZIyzpW\nHIWTQBHA8kI/d5JxLneEwpp5Z6HpLVtEz4fFOP8AL+KZpTa3mymaZPpX4FY6\n7AtlSYWoTi/juWY6rmX5VGVMdQ+6eG3j1NZeaSBcnSc8Kt4RytxVK0U0+c4S\nSiZUVVKlLodarnTCcVM9s1ftRBKYWan9TnMS2McUK8VuN6ogD+gJKfUks59E\nydiddhv9ylnge9MgNo5gULPPmkALO1LNq0unkNsBX/XK09wi0GDNTWyAJVDt\nXLRZ3KE2j28tRDhR9IyW9sUk+axmM7OvRg9QvnugnbSYf1Flw202wdEi+Q9c\nXYyWNU3qLuI8NHjt4xcZF1PlXpHuybO4EY2Ip1Mnr2jfQbIj5uPZF6jhWll9\nEXvT\r\n=0Ch/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/YySh6IBLWhFURRr5n2gCHG25bSJGVZeCfvf3DosFCAiBNXhx30Hw8fexsC64AqqwO8xaxMHC5XTLacg6Ax288rQ=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.0_1599154428708_0.7592869995475346"},"_hasShrinkwrap":false},"3.4.1":{"name":"@marblejs/middleware-multipart","version":"3.4.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.1","@marblejs/testing":"^3.4.1","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"27a9c9cc6d03516ff0cd520457c6cdcfc1cee3bc","_id":"@marblejs/middleware-multipart@3.4.1","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.22.1/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-w+VhscWslxEc79VEPeeMEWuUzmIxNO0FLwl6n0x2vNwDnnkNU3J2lfXeDgJJd/+y6GX5Kv6rU8ed2DCc//VsFw==","shasum":"1bc08f831778eb7acc927dee9a8174934b3b4b79","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.1.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVOoaCRA9TVsSAnZWagAAQLQP/0IN0l5q358k+14pYVvc\nhErB8iv329vOyAy2Yd1QNK5Q0UpTjrCfAKSIWJBvfgRIHhU120/Y/I3qUZuM\ncQzeS0NtYROBq8UwhGCo+z4BeSRp39Ka6S7mwoslF0lPF1cBzL3D80+VI7+k\nZjP8ZbnCRHf5Ne+X1x+qK33euY/KcqaIgJoD5nY155iP3ktZe4TxghelOxum\nkXO2/UkjP8ID9QdBi4s4NistFq8XGEtgJhaEfRGmG72WpLL1dBgRJyOEd1VF\n2XHJNes5GvtWxwk1okyKPuh/SjdYonfXTS9x+xaFVxXgThw1aoi3nICB50l5\nSGwZqgVT1oqVxEOQcpnAoB5Rr5p22a6rFAMBRrRKgxibCeia5fFofHzRWjN0\n/OOdacWrL7PCWuWR+AggUgAWEiJ1PHuWiQEy5/AHPBoVnsgT40sLLWtTfHSn\nIY0t7q16WdpaCPBwmWHDyudW4rjV88Gs0ucT3b+Fnkjerz7EkmP88LA3c0pS\nczhUXWF6073svQiDbkG2eJPyJ3iwXxR1Qq4HRf3kchZblWUv4bBLJbyKKBVi\nS94JByO6zVBpDWovPqTnfR11D0Aqjrsm3JyqaE6PzagcN7vsPwLldtVZmC7g\nZG+6sJnErnidboMmbOW/NcxwiHARPvETa88F0gl1vGrhZ468mcQtLJQa/3Z5\net92\r\n=ipFz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0GcQQ5t8uNimMhqZFB0nB617zjV9O6p4JBVjzd5v+kAiB3/pLHFxTwi/eFhRb+8/1r5zsreVHnJwZs2SNg+vWFAA=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.1_1599400474241_0.7437585399509292"},"_hasShrinkwrap":false},"3.4.2-dev.3":{"name":"@marblejs/middleware-multipart","version":"3.4.2-dev.3","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.2-dev.3+97251ee","@marblejs/testing":"^3.4.2-dev.3+97251ee","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"97251ee419ec2e48b5bbd3f3bba1d61d009bcc62","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.4.2-dev.3","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-q8OcCqvZ8eaUfozSzFxqvQsy43blfcbPUGhT1wHl0d1DIQQ7tlqumeP/8N5xbb70XQ2RGE+lLyiLRC03vi1YXg==","shasum":"2545b53c3cc96b14f5151bbd7c7a05349f7089ee","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.2-dev.3.tgz","fileCount":24,"unpackedSize":19790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY2URCRA9TVsSAnZWagAAKTcQAJeO1WyPXULIiOsClGn7\nP/Sjcy26UW6UrvIv+Ux3cnv9h1ry2DgXMYuuzkU045UlBWzsICSpMyzoEzqv\nZ018U6R6fZQA6dzMkNYg50/ET3GAoOnlSoTvsz2WwIxkhqNEa+g95XyBzrDM\n1c1jguqI4AOt7zNqROjCARsikurCucIFSsxS0L9RfeWi+gcS/WTfH3DlDjsh\n4z+1hv5BHQgnyKlXQH6gWPNrexiCf+53dUhzzhb0hjjtV6prQ4/l+zrEHoXY\nP/FM1A0RUUZcku7wWLJacYcMM/R3zZeFUg2KeC5Y38U7VA66ZAnQr57/eD3k\nxn6PS4OUS4yTrd7v/cwulBIfvC7hyIOPMrGBTEZd0YfQRxhC5sfp5iUwCq1U\nrny5bk9VlhWxmqON5ndPBieB+/YTcEeVZeek8CaJ7Ks/KDqagzxGjXMmwmen\njQCbnxHYE8ee0Ti+H2I9ynJYNKopZMbf/uN5mnao7b/t2GYpf0LQhKmLEsWc\no2up7/U9y5u/E2mO/LmCiHxyp+Wz/kdKIfZk8tsQh9uTAs6EX2FNvhHC0nIU\np7T/EThk4Vj2VDEWWiPlFNzdqmgSj5J6E/lL04RvgLkQVeFoTcsyrTiHm0Zl\nct7xNzCKmlZ7VuUSMySf44iom3TeUCQROGLmCtPeXT7Z9k+S6NzS+iA+XlIr\npN5o\r\n=NmZi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAQFvnKCO08OGSl93baILtdsvsFD9cUZLDGWaD7a/8ayAiBX70E/ZQ0/31i048JlVUtRwCDmFOviRCTii+skIim0cw=="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.2-dev.3_1600349456339_0.320624996451899"},"_hasShrinkwrap":false},"3.4.2-dev.5":{"name":"@marblejs/middleware-multipart","version":"3.4.2-dev.5","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.2-dev.5+ea4a720","@marblejs/testing":"^3.4.2-dev.5+ea4a720","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"ea4a720178c0910a5a21e1798b35729602650741","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.4.2-dev.5","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-SRyNaAepBmyHgBsIBbmn88iO0EeapLq6VrKsZRVv2paDl/iCpdesuDcoeDmwHTDGpfnfwXbRBaFrg8d+muamkA==","shasum":"4dcf99db7662eb2fbdef442e308a91b8537b0a57","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.2-dev.5.tgz","fileCount":24,"unpackedSize":19790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY7U9CRA9TVsSAnZWagAAUF8P/21wj/sHAY+TesE6sKwn\nWI4W9A2S0Vj7TAy/wOADsYbmMmV22fL/i4jYXWnK1QaTes3lfvJj5XEu8IQu\nVRJm6xQ6rKLVdv6gkukzyUR/C8w+DgLrH5x2QhotkghL+9cDjdW5oV1pZ1Do\nczvXaDbSid1LkeGiv6pEgy5Q22BgmlwmK7PWjDRUYMR9zGEiq2EzU5UMmB6I\nzzh2VlRbHyq4bK6q7uD2SyYp+37GVBxku1yegWu3cGVli6svwXi5XzD3VQVB\nSMr/4HpZ2qckOBn4HI0wRZODeqLICjakGxr0rOZOtm12qiPaADOjdajdm9Ab\nFabMSGgd3Aa+cPYu+t4Xl1Dow3E+DjG8Hp1NaWYOPAq34WuCN5SnreLbja8Z\nPE3uEpZPp7MvXibde5hTFznanKgXJcEaOzmbvCeeU9rXxS1Ko5DSPCqJM9VB\nb+ZawoUV7QaHf/IHKxCD/tAEUje+Kef2Yn9qiVpdmJ8DY0WvFBNXyWT230V3\nzQxqwQVVpNuO+cT32jar4WMDVuxrOrBCdLQHIVjzrnlj6OzpOFhZeVz10Emf\nKayn2gnLM2lp5HWuKwyDQKPTc3l/L4JRh6PX2xt0uztnmr3FvMorYs69v53n\n7W2ezMKd347ecA1SY4VjAw39G47TbAgvYJQhH0yWFVSnFN3MIQXT3Qs0k/6G\nWJK3\r\n=f979\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhPrwEDy5w3WLZwo1p2lC39fDmPLcyVhjw1Gg7BaBnWAiEAkBdffYCKIcVWEvBfRuDLVabe16LEf9gBEKMfvMblL1M="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.2-dev.5_1600369980910_0.5100297801597191"},"_hasShrinkwrap":false},"3.4.2-dev.6":{"name":"@marblejs/middleware-multipart","version":"3.4.2-dev.6","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.2-dev.6+d5a0de0","@marblejs/testing":"^3.4.2-dev.6+d5a0de0","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"d5a0de07a43206b7b60a45cbae2af035e8e66fd4","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@3.4.2-dev.6","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-4Ok8mmLdRAAWrRI6Vmbow378RnQX8hCRvk1O7w2t6no6wLi9DFzuh4UeovCpVt4Pmz5L4wQ8+bow60SstStIMA==","shasum":"1f5924f14ebba490b1ecab1dc038edaad2f24947","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.2-dev.6.tgz","fileCount":24,"unpackedSize":19790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfY+F4CRA9TVsSAnZWagAAccwP+QF4Uit6DXWmdIaNT8rv\npz4rKDdt/0DO+Wey/diOy49XKEsyqMvYWKEZV6QPM+Pk2haQCzxYirkLQ4Lo\nxiVx6Ha/845Ap+dALKPk7iqHVpDk8uHCb4PAiJQERsqslFHHQpdJKtT6CRKh\n7rn+DzEEBlz/W8hIcADcFR6zki3CbKR8LcjirSBUpYB/fY8moSvZC+E6uJnW\nFwU9oGsQbw1wzvR0qEPyinh64qpnWZBIhoUJiqDSLV1Ebxa99UJdIz8xOM0n\nli2Iby1wLQU5elIVW/Qpk9X3LAJF5hBVE6+sypZcX6NVmXeHnpI+C49aE/54\nD1/pfPB5UOXcxRJQTJFGeZy7+dOzxTijtfbNMsp8QiOaEXov7FEv7Il25ZBT\neQPdVDBsbg9NDS3LNBMLkYuKYuaYpA1iHAzAKZDrsn08FZONXs+mH8rfzEYN\n8P61BFq+s4aBnfF6N4TQvuECgWtAI+kMX9ZhoPn+EhCtJCrxc0PEkwgTizhp\nvM+diLrZHnfxUNEuu0mX4YUtPAZm2WqHUT+zm1BXszuThn3UBt+HYTrOoFrJ\n5F79QHOnx/UxOg1O8DEf61acbemr47JE5ok7ygD3N7XpDjIRPwKCBvebMChd\nJopr0EbMcvF8I9eqevlettSxGejlfVZFR0JXcPjp3XIsrumF5dOcbM3/9xoJ\niKkU\r\n=OKKH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhRrJOj7W7e4dpataOAILPGy8jm4MDu9MmemeE9w/jpAIhALgSUcgJSP44sTvFzyPTkyaGqXeaGwjUCghQmw5z7Uez"}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.2-dev.6_1600381303819_0.06193674825536766"},"_hasShrinkwrap":false},"3.4.2":{"name":"@marblejs/middleware-multipart","version":"3.4.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.2","@marblejs/testing":"^3.4.2","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"3f1fea6b8a0be43c5b93dc551d6d5250bb6fd394","_id":"@marblejs/middleware-multipart@3.4.2","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-7Xu+JugQbn/CFDleXsGLRiDl4PDJxXHkhlRgwE6lwpH55oNG0r20snQg0pDkYBhAy8gUkZcxCgSL9+TOQen93g==","shasum":"5d1768264aa48d7e2a44790468715e8c25aa67cd","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.2.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZF5qCRA9TVsSAnZWagAA3/YP/3xwIYN9V1lOl8yVqoa0\nrd5Rbs/05+ewLYIPcBIoDYRFE7gz7zML29mB+585KsYvnH5HIQslszMsJKx7\nK53JdCpDIXeu951NRMHmTyk+RNstnPrlY8cmS/TEJ/f7gSCB17cq41RQLgn7\nA3AnLKfYKwhxfqfzvYdQjEm3PIPJTDo232jdXPeFbw6fKijJ2Di1egX4pYZh\nrg+TkDTKiw03MtSAnQT7kuwlqUD+C6NfSWk6hekmmbJO3p9jPgeAGVT0KdE8\nP2H3PqwQhbRJJmeRT9l+dkmUnEd2mkKP+Q+HHjw18yNzyYUqBwgOpOpiUJQF\npxTqo5tW+ZRzCsA0SdhQ3u3MTiYSsTjJE1QT3QxJ7EmhtT0FlLBoAeWu8Xda\nvcyWy7CJJFUB0USNHu4zoCxlSVSYIz1fdrTaq5Ht3VciIyB6PoFwNEpWs2F3\nR/mQmc+zix2LPTvPbgQwpxv1SC6++HJHBB0rh89I+OVWQUmP+m40morVXG4v\nZcCTAVT4bk5axKwgSbtLb6N+tvV4p6uMOd/Nc9ytWEC3I8N75dtly2RmCsSo\na2nhRsYzEaPqS5ahTwzL57dKRo2FB4hHDx44xK+/Dk6VHvHB5ZZTtgxQug3v\nerZmB/glT6obOwhKkGPYX7RFC/vNdqJobmHzUPWErEsYjK3aoMlQPxuLUE3h\nCVNb\r\n=8V1+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF19gZ7vBp4eWDP105FoC/zQNvcmX41fO3ZGyOA5tV/gIgDlM26DR7Z0wHJBuo98fokwj88ZGGb20a/mw16dWkayQ="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.2_1600413290132_0.06964710040557964"},"_hasShrinkwrap":false},"3.4.3":{"name":"@marblejs/middleware-multipart","version":"3.4.3","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.3","@marblejs/testing":"^3.4.3","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"5d336fb6d4c25f53967dda18b34cc232c5cd147c","_id":"@marblejs/middleware-multipart@3.4.3","_nodeVersion":"10.15.0","_npmVersion":"lerna/3.22.1/node@v10.15.0+x64 (darwin)","dist":{"integrity":"sha512-+UYQytALOImpdLkBCacbgeerA+BuGVI6qPOxZOx+ZKMQUzPUtKNr8OZqWafadktdWb51TSkGR+9Z5qPBA3ONug==","shasum":"bf0ea1fa242ff1775b68b1021fa96f141007c3b5","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.3.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfais/CRA9TVsSAnZWagAAoCsP/jleI0Os5LHTPQeeXASa\nCK2zI+hG4TzfluXtZUxf/O02nVLlPg+FI6YzsMvk8FdK3pEhpVr1ohArFrbL\nPOQSU5t+rd7ItAAEBj/URamVeGIVSOCY9V5/iATsboAd78q93vcorPAWCE0d\nYloRDU1k4UWER6eeh3B747Xlo/V13ApMkZnpx2uR/Nb78cp7d2m0jFI4AQy/\nxvIxHqsFBNCSdfrTOb8sV6iFwVc6b0DmYmVa915Hg0fKxWRl6YrMDDq2yIEN\nDua7NwS1/iHuUUT+TJyP8PQqsmf0F8KCS0UZvtX4fJ9GE0mgjMtfHNrTari7\nwPoFq6Q+HSHwxJhkymqgXV7uqSYQwvYk96H+Rykz7AE6jnSBktiBIilZqzxy\nTb9Gav5jrdfL/J137kpKsEt39amgw5Gi4g78cHlMjlVp1wyfnrdhP7pn9IOT\n3GWKDDXd83yE5GMZYJ7w62IIGpxrBLg2XZnQSeghQd2EqlLTOWMCs185PWCt\nMVm1IFVrff9y6tdXNzuJCRcZUCjvkhyPb1BEmgksuJdltGRbhkc2b36QApT3\nyUXzMelUMHnq1TLreWPjfvuuYQ0JF9QqbSpl5T8ea4VPb2bvdCOppYJN8tzr\n06ZZOpPLrHSbkbbFozt5epcI17MLrWSiKjcna9t5hGux8AknLLdb7E+LD7WU\nayqw\r\n=WADv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlW2zO5jbM5xgtxeXy+5a1oLkL85SmUqEn5kqbn+Nb0AiEA/MEw/lgwdKDuX9Vf6M8RBBCZbzOggFYVQLAauNo8PBI="}]},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.3_1600793406972_0.9532358569435866"},"_hasShrinkwrap":false},"3.4.4":{"name":"@marblejs/middleware-multipart","version":"3.4.4","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.4","@marblejs/testing":"^3.4.4","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"9fb47093c91343a4ea66540d9a005a84da0e8e2a","_id":"@marblejs/middleware-multipart@3.4.4","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-QwUZlpizFVCp1CSdtLlmn8QIXGABpAZWY+rvLfWDqDuZ14gOB4Jscazj3YhsnJxvKvutA4EWk4VD0IGWxIoY3g==","shasum":"b5c58d9ca6e097fc01e3baf916dc1b6de2d9c172","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.4.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrjidCRA9TVsSAnZWagAA0PwP/1y8/KvpyKO3bciK80zA\nqWaTa1DtT3hZbT0K7qAJirWMFwCCCc9/1IQZCyrSIyF1U6oeosMwa9am2XkB\neMVACSvpFdHxzOi4qRjfobyM9yoCsvdgzv/OSKojAL08Y3ckrWHMPQeCy4G/\nUr7sdlxc/JUIOkuuG0XWhQnkC1Ie2wVT+5dZVu354++JJZYYMyNotL+7G5N6\nX+1SKNYWAgh/JWS1sGiNEhsnjx3C7ZpZ7bb+y997YIl86DHH0l5fL2dg+yaF\nRAvQU2cpkXatg3NL8rs7iGvKibt2uhA38fOXMgUzLaQCE2sYLWGW4onyxnkC\nJZgqUVQS+LZVy9VAMCOntzBJ2EOWksV/JpLqFdGj9TsXKZt+wf7ge6wo1u3l\nMRdy3DJei6tcB+gy5HmCsJzEf6BfBFwnruGy62ezq7VYm3phJKB397t4hmJd\nRVf2jv4iRp1QxpdFdo7q+xhtxphMm/fuJzMaabEstEys1z23mZVceRKxxhAZ\nZeIpjR2mDNw2gudZKpHSPTdg1S8zfW7QfgFBZRZssXpZvTAAUmIS8efrFiai\nYo1X9xnOAxFmzjW3pqXE9AaUP1nPY4HdyDwdl54sV5VH1pCSNMHXA5uZnIAh\ngRrVBanezu2F/BGCaHbba7WTP8hbSFXlfSarwq97CrcaMQrL/Klc0871e7jq\nFsQX\r\n=ms3w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDm/SSsnnvOLaiKKkHCR522FztlVnAJywgmmKbNGO7oQIgWuCj5Ko0IxjxZYAbs6OE7dPfBgs6vQvVsmlIS0W5cCs="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.4_1605253277073_0.192633945240116"},"_hasShrinkwrap":false},"3.4.5":{"name":"@marblejs/middleware-multipart","version":"3.4.5","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.5","@marblejs/testing":"^3.4.5","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"bbad3bae55ea0125d119bd793a0026d9e077e9ff","_id":"@marblejs/middleware-multipart@3.4.5","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-BosJYOe7dAEj8MqrE9otBKmitlq6R4OVmuHU64cOZrpUVClFA33dTqlcS+J7j2eL89a1XiolprsRBnX23VCxZg==","shasum":"f202ac2eac0eb0cefb8d9c2ef326843421b4c57d","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.5.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftO78CRA9TVsSAnZWagAAXQ8P+QDHs5Lw8gkccrrws1B+\nRMwiEqLq3eBb61j73oMnN1upx5aXwPSc0x+c4ZVujlFwOUBc2hudHXUYkmtD\nyRlb00skzixqy5Y6Q/1NKCk0jVKPMAgUrltwqMJvdSS+BEoVm+oALFEUhLN9\nLuf9i6SnAsmaN9owZ3n9b1h4a9bkkiONTJzMZAO9Nnnw82FSP5lB2ufovz8f\nOrPjYpb5oa37NYzKDdLz8AOfwfrkRpjYw9h1PoMpYAJcYZ9gE3Twc+WBXHl6\naM+EBB7L8ghLhrEez2Qn/qBr05Rz3lbmVuZx7W5WqOo7RdjuDM/gHfYhgEq3\npt3EOuBStgUzRHpPeg2LZQlxyKU9JnSWTMoX+9vm9M1ERg6MkZooiBTbcL7b\ncaOiy4RGC0RZ+wCciVIaGIcdr4fJ1r+2MS4ygHDZ6Dw5GBjW+cSL+Dht0lyM\n4aABydOnwIuBetAt9WbajE5mQcgCdas5RB/qjwI7lHkCnor4vCml8jXWVgjF\nAqLgshGvA0JJs97ogbbgmW2b2SaLivVrG+Wk4sC6Egf41v5gp8+6pdXQ0dNw\nmdQ2NOvLVG7ohOqRT8bME+ktYVMMfT+CJLfF6JM53+7cCdBGD1W3B6oL8iQy\nAywy8tVAW4GY5/En7KuWhxNyGSNc4c14wtJaqGheb8ysQ9hJPGdzGSyZrhQ/\nfpor\r\n=ur/4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9G3JJM5O/afN7whDNC+rIGpi9DNx/K+xgj3qRmIprOQIgQtXmLye7ZWKelXl7dRUUh4WiRTxFjNFoiuv6V2XD0So="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.5_1605693180445_0.5233886101991636"},"_hasShrinkwrap":false},"3.4.6":{"name":"@marblejs/middleware-multipart","version":"3.4.6","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.6","@marblejs/testing":"^3.4.6","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"ede25ba5a10de60244ef508ab0a41d15e379caf5","_id":"@marblejs/middleware-multipart@3.4.6","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-zm8p/NlarCPLg7m3SwEg6dsh2v3Q0cYslAaeZNCaBlgGtFoyJEleD/5ZnziU+K7iLrJZzNNHv474GbGMRFMd6w==","shasum":"8f032b5ba6a8119e3ea6c8eea370ab45205c7f7a","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.6.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxk4JCRA9TVsSAnZWagAAc1IP/ihW65U0Sav9od11iPA/\n2orXoIpJhErOcJK7Wo8964i9wiwXjI9V7cbnCjYbrVHtn2huBlzDsv7E23cn\n3MtdOKJ8gGCMyUOxq8sctYt+V7eaJVNB4ACrCO81zJUclhOyP6tdEZCzNFYa\nCxSLn1+rami7WeuypZ0c2pdhv3enUBUJwK5EtHONwJCU1HKPBojom5y7/EtV\nlzTVP3jvn4d95HNILJ/b3bokaAvEup8b6QWu9oj2eXTuWhzuhAGYqiLyY1MM\nL/BCEAGXyF8tlfkgJMIVhriAS076xFlC6w3mE8PORZc6aqpnvsXiW9oorPlB\nMvIt0FCYECQMFwX3D5mfrHTSdpWVT7XSh9+xR1JbO0r1TbXkZgHlhmz1+lUk\nCwMVgyCj+fGtL3n9av9bWgyrzYWQ5H2uFQszq5y8xVkfYdhihuPt4yBokEkc\n92P0EnaClCK7S8nRr9zYpOd0rYhIWi1AWwsoDtxsrAOZtT3GcZIPCUpy8lwd\nDkgiD+XrIQNpJ+kTuJou1Dby6S6F3oTv0uutIY2G5qYH2TVdJkCCidS0SMDj\nWzjA3llOdylbErFmSeQ5D56jtSOd9e9hQoOfGKM5CUOr1GDETVQc+34csRaD\nVmM8rPsh3Qg6myTeWk+b4SgiJtJmLExU5ySGdXsDBnTck0AdPRutQDJRTxRd\nnLYu\r\n=ZRrk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwMArU5tuT4rJFL28Voy7Y9DmwleRiBxn8DwoXTnMWwAIhAOp3jzL120hwGyteWI9UNAOj+6f3i+cn/64b8R2zJ0lQ"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.6_1606831625169_0.3768979083367896"},"_hasShrinkwrap":false},"3.4.7":{"name":"@marblejs/middleware-multipart","version":"3.4.7","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.7","@marblejs/testing":"^3.4.7","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"1f72aaea61f0aabdcc3b986a99bcc5dc1f364b6e","_id":"@marblejs/middleware-multipart@3.4.7","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-tiNcJGEquHQI+VGpqHU6pkp077tSDiL2VQTvdWAyHgBTBpTnlHaENl+pbYci38HtgwDAVIPC4sJfxktym4jFkw==","shasum":"1430272e9f3e4c7d8b049a2e3cbe4c03ae308a3e","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.7.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfykwjCRA9TVsSAnZWagAAJvIQAKFPomzYJwyFPoriF5iu\nZVM1kDnX7Pk3z2FUjJchldcp/Z53uVSyji9o6SOpZE2grcMyymSI0qE4gxwb\nDnnjZvB14GGb3Eg5PosdyphoA/45V4A3fjVcM/W8WMrMrg0BffOvTBOB/nTA\nTYJnOaHsf/jYy292O6BCI2AkTmm7qRiCDmE/LwwkwIoz+CinlR0LFH4zVlAM\nJzB5fq0o8dEVMAzMDu/P4B9ehbPTz6JpCSFuGPucQli9bMX/hR9AjnL1ggN5\nV+pKKAkY2nAiMP8grj6wsJu/dsLkeDv3Rc+KfEvB28XfHq758M89ACM7qrqL\nSrT6Y+sDmq/rjvaeOR6R+dg2a0FMfuaSNFEPxdQu1q3rHR34qPLS9GgLNEGl\nCkg6jVdduBSwxtsNFhGJNFrnsUnYbC/Yt4XfdNqoq54jgHbMwKsiG0OoFZ4n\nWlJJOt0GXsbY3FqFDqhR5Iqjv1fGHX69xu35BbwZAREDWJHbKzPjfzWj6HBd\nSZnFeLuZuUdBDtL875uU4Rv+nQvOfrmU9DwSCXL5MWUgViDGqyH8FPqWb/pb\nxUS7+rW2iz4TdFPdbIMxOfpYpXlzymHr+lbxIvpGPugbTvO+TCTmTqooDQlX\ng3cWVLoX2UqGF7FHPNu3UgIosKC4zWi0aIbMWZvPgjs+WbP3oBu1vwTVn9h4\nLvn0\r\n=Hkn0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD42YbqEz3VQgX4ToBVlpLJYWE21QJ7Ce6o1uRlhrschQIgDfEiaNCafbhyjoixV3Ef40tB8+TmOcJjPSEN9StSVRU="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.7_1607093282362_0.5077759875504357"},"_hasShrinkwrap":false},"3.4.8":{"name":"@marblejs/middleware-multipart","version":"3.4.8","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.8","@marblejs/testing":"^3.4.8","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"f7e87f663b82ade350ab0d2083f017b8f9f367a9","_id":"@marblejs/middleware-multipart@3.4.8","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-urjsHDqCZHSM4ucV/p2qMSr/X76yZ1CvNXEOLGqq0dm8yDpXDirzGFl1rY2huXOWCCFkv/N0t6xhSmuS94ffWw==","shasum":"dbcf411ce3fa70d22a76e1be9a0c68159dc6be68","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.8.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9HP0CRA9TVsSAnZWagAAABUP/3F3VhkP75NGkooSCNjn\nCeXdsgfFRXc0n3/r5Nyku47a473fRGat77S6FsHFgipTbNq0noy2aVOJIxFS\nyHZGMzeI51+sAJTQuB4EDWr3KQW64unEvJRTDmLJHMLhO8WWmQOcsXue+hT8\nZ/Fo0oYJrsq46tMzt+ovBMMZcU/olOkMCMFdKgf2+oMZ3nkJ4ptVAFK9C+CM\nClu6OmIiooJ8Xu4dfFHV5F/k2qY9oxzQnclH8fOAVf2Aj+UL0K3b1P6m/Qru\nGHXrRpLkCA8S51p1kF3MX74fFzFu8KxJdqnTv2MLFbWbvMpUoWFWLl42HRiM\nBgv5mNi25sHt/XSTozCl9Vu5HNWggwhJCEgDajKo6fF6hbq0eCZ4vjViTnIh\nWVvtjHN4wmjGlzhRDyEcMcvd0X4Zk+R/kv6mAj40vql1apZKoiiLnFZyTyVI\nN3Hi9RCsm2GBgQMw24regWFoHGfBDdaxWvUPwSCETdfgBOTWklRZtXIb3f6M\nCfabV3iMPE8i5izKo7UQxoTp0K1BUS7/l9Go09jXfx8E+6DHCJkw6z+VYB+z\nP+gHGk41BM1yoPEib0szzF39LUHOiIs0LMvcsn1AjCNZYmv2jo88iOJTjbTq\nxqlAOauKDMlfeA9fd55O3Zb4R3Qiqh1HHzdRwhgaV52LZ3uGKUkBROnS9fXI\nbYjT\r\n=JmbF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDyuzfu2zRaGSp/nQvXPQlx2pV4m5r5ar9lgEl2zbwy/AiEAuvGSw7kxZb5B1Z/pDHsTPMvGOkeZ+0m35IrykOZB+8Y="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.8_1609855988331_0.7068034488943935"},"_hasShrinkwrap":false},"3.4.9":{"name":"@marblejs/middleware-multipart","version":"3.4.9","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.4.9","@marblejs/testing":"^3.4.9","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"bcdc101716ddf15c94f9189b53f9912b418ba143","_id":"@marblejs/middleware-multipart@3.4.9","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-bBRdaWoSOvE97p7NSjyXVZ36QDx8Ab49JhvM+tIR99HwJxHFBHc8lD8gws5rSIrd7nZvPIJr033MMXot/Kczpw==","shasum":"bcec4db655caf4bbecd8636363f78693fd92c557","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.4.9.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEWm9CRA9TVsSAnZWagAAPlAP/iRr4O85cJyr93nK9ZKz\nfIh50J7k78mxqUC7CFl5EB405+Zd8ymH72UtPAGeGHCP9oJSXSUQ3Qpnnd5P\nvKxnhO/M+PH6QY5javcRS+avHqDXer2G7Af2Z4d1gOnKPKdFOmAqx4ugRddJ\nY1ueIk4LKTZAM4Pd4ZI4NECLo5j/o+lwQ5WKvLo4MUo4HG22rTfi6dwaehZN\nmrlrDpPT1wkFqYhtrwqe6K1HxCuzrJAWRyeWcPlw0K8dzhGIhd7UdrAXNsu+\nA8NDiDS3Arn8lejtjNfuk9QV/PzS+12i0leOiScfYkxjE/2P0MhHCn+sSimn\nPYco3Cebq62yfhADnrdx1YCH1nuEe8rQ4Xnoty9nEhhzvk0SQ0xkyL80G7wS\nFv9hXEx8TRyr3Orgdy4tdHXUOdeCJkdpxOLIfcZHECAmhDGfIMkCQfoW/33l\n2D3ui0jmg8NpQngWRBJ8Qo9JqBpNqwRgcd4AWeZsTGUPbj7JgUHmsZ/dAgVd\nTblo1xjksTmowW7KJPj0z3sS/RVjnOA6697TTQYS8pDlJRgHDiNdaEvntLg8\n9Rq1ZUMJeS0FCoOUmauBX3O0CsyUkVFOTo8r6By8lGdtyoSBFzjH7r76IFQS\nj867fDrac5018zhg2Vxac+lD9r7XOT4ZP6oONxgufGIDxxXFLr3Cc7C3h5bd\nG9d4\r\n=2K4d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJ3GnK1HSnJ3TDEhH0o8OaPnHMxGzWuMwSgBcftTzFPAIgSTZPioqaLMr6GLzqXt9U7jaWPNruP6QkYT8tIH5tqCY="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.4.9_1611753917146_0.5292727830865238"},"_hasShrinkwrap":false},"3.5.0":{"name":"@marblejs/middleware-multipart","version":"3.5.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.5.0","@marblejs/testing":"^3.5.0","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"8946759f5ce66e4fde604b6ab9a5b534f2250e8e","_id":"@marblejs/middleware-multipart@3.5.0","_nodeVersion":"13.10.1","_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","dist":{"integrity":"sha512-M4we6MDUDxj4wu2OX91eYQXi+TDC18C/bdyWZk3/Xg+Nx4/zVObFC3UW4nnK0oWOKn2PO3CDKIFViAKqQwJnQw==","shasum":"e2e4a4b50d257f373f47a570d989f880eb252278","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.5.0.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmQpQCRA9TVsSAnZWagAAOUEP/3+qNLXMNW76dsqqydlx\n6Ce8lXFKdtuGtKCrkoSXV3cuGTm9MR2x0ZMu9K9qpu8e8ITZ1rFQNq1hGJnz\nD95w23kn2BJQLc3lhfXatq2M4QB+QBHxodyn9QixXRY9cbDCr7xmRbsAaMz1\n2IR/hCq86zM9ySwHALXTQggHEP4txz6Dsj4djO+/ohJm81nzaweWO0eKlsBF\n2GxIdJaexJRYUGq1TQcawCiZxKQEZjpWrU/N6BlYBsjzUxXbYmYmrp/O1a/a\nUQ5HynTjrt7uT1zwC1vEcj4JoNkFNEqwuKKnZ7y1cxf7lNbcMTyrhxhKeRiy\neOCryTDh5TyzepT9EREX6Pk2wTEmbwwmzUy+Xd1zUUdkP3cnpexDWi2RyI6x\n2jFNOzON4GBPC3EvYUNha//i5HagFgguMcuHIKT1ytNPQru+hxh3oHZd8Nti\ng3boK9GkGpoek3AUfkOxbLuIxj/iOvQvTaLXNjEdCRoVHh5ZiZgo97+m+pqI\nTFrO/fsbwKMmO8vGy3+BwFIdkxjCpdMC+d+uWmH9fYusD/C9vbBpHVBvh/QO\nIBvPCx5Mv2ZHh1bD3cfQX1AiMJZjIlB8g5lw4TCz431JaUK2AxHYcEIPsC0r\nFkwNkyrsjqKeTNp6Z8q5/Ujd5SpD9EHm1Tlf26vK/IO+P6U8w0SECTOYn849\nY9lh\r\n=1ceE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRlnY9S4MKjyM9Uh1N7ponjJS3OPD0Uo9kgs3fHd6G9AIhALdxDO0ejyjIL1xxoR5Ct31KcbpsLSmnSozn7obQH7vT"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.5.0_1620642383553_0.9431226398753634"},"_hasShrinkwrap":false},"4.0.0-next.0":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^4.0.0-next.0+a0c84b6","@marblejs/testing":"^4.0.0-next.0+a0c84b6","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"a0c84b62b20d1ac8d830058bf01fcf2b3a799a97","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.0","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-dGB6RV+38b9TAPf1Y95LlJnpSdwctiUgN9iL2a3CpM8e7zg9Lp691WH84wkWN3n9kDCB+ENImCt1xzNozsrf8w==","shasum":"c0492597cca398b7de468444a4f49ed271133710","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.0.tgz","fileCount":24,"unpackedSize":19793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyF0oCRA9TVsSAnZWagAAGgkP/Aka3Kc75M48dtYX+FQv\ne6RshKOh6YEY7bHTZqYiWRq6tW/aWkL3fb/8Fmwe5it2MrVdRL+6OtB8EyIi\nxxesVsx9w0/XPy8Rs/t5dpArTBqdJcayA6FVw4Wc3SAhcwxoSexbaMc1B1Mk\nRhkpy/uFYFNctFA38X4D94Kgz18a11oCTNG1mpOVsC8wECc2TIsv4MC2km5p\nTEvE7tvFlV99UAS4XrKusnZ4+kDTXtHHYG4NU8V7pd/KuZEOeZwnMWPwXbmB\nOHjiz28TdsvGkhwm5715B5vOS2/FaMuZ7O2gfp5+Rq7cqpty5/Xc7+W7+EY8\nYB58bWQHmjbLiz012Ua2Spcr/YdN8d+D3Hbp3b7Elie2Y9gfbGs5vVlDrh5V\nEI5tQeyweN5KygnHq1orRqN+NaWrXrF4OXYflhfDoOPmDnyGCHzQBlDuxo6s\nXDav5u33fpSe2KsYJ4dN7ESBB7/4EaSH+TNZiQzqLUctIBMW2a99M1Shu6tn\niglbXmoVtkP0Tw68DGSp7oEHp4xrMU4MxTPIu5DkpAOIEGEZvjwwzL5Rolov\nyj6jc8RvgerjHlcBu7J/SAZVo6AZ1/VvMHY+LCjw99DULQgYCMuGSECYg+h/\n1+nJ6Iy7cJMPxvOhSvlVcvTpMJ3fHi/+ftTndg1KHqdyFhrz6aKpAQh7aNX2\nN08T\r\n=Q6/z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/Fjx6I6G1VGgB6DPs2MdxlczImxPuf8pDfC/Ka9u6FQIhAPOD1jga0eoRnk1cszcbckiUSvlwAVzXfJpHOIvEfqCT"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.0_1623743784717_0.6615791941683862"},"_hasShrinkwrap":false},"4.0.0-next.2":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^4.0.0-next.2+af4c991","@marblejs/testing":"^4.0.0-next.2+af4c991","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"af4c991d6781402345cbbc56d331ba0ba9f07da8","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.2","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-f4in/dRFfxsoawfb0KWjcNTPXBiVe7rUk6h8bZkSnaL3HXVNiu44GIAuAslXh3Uh/81m5D/OiFZVc1h4f7k/cg==","shasum":"720204fb2be88ccbaeae1aed5b6244501f7ed911","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.2.tgz","fileCount":24,"unpackedSize":20099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyK8QCRA9TVsSAnZWagAA+SwP+QCtZ81H/YI3FVgIgLqZ\naQMmiPBXpJN4buXvbq7ymQyIxHCrwWINMIVHqUNqtqQba0lHCqMEeYdlAjVm\npn5n55eW4K++6qECe7522lEEJD9034LLnMQjwVGFBDEnRdSjVD5AAk3Fgt1r\nfM0te/46sqK4jiq3boH1qpvwwXHbtteoGvVWrhRFtGwd3C9+Q6yRwTMfI/lp\n5R6OJP00M8g8kw/6Q/JCB3+IxBDJj9bdpOpURqezkFbqEBpIq3+fIsoXTAHA\nqqhFZZI3b6QW4xDKoqb/SZGYoznCwD1zsf0mZyBJa/mrO626I2CB0pxoFCZe\nltDj5nT1klPamMLQyWwgynzIHVfbPvKsdQor2tHPOPQS3kHN0pC/YmHWlRkn\nMLiucmrYyIKPbmpi25jRW7cNF0fKKDOvqMaUzCjc6iIlWhOKaazpn5vL2Ov0\nG4nEaQ5IzVaFOiQ4sXrABi7NONaZfxlfKEEPNHdb0jDt6Q39lKZcEnc8Vp3q\nxwfhCweMh+EsE4EkEuIdmytHuE59AMQO3kba7vX8jccL9CYv7NK5TvBAPGUD\nVk1t8nlnLvQ2zpDA2923VgugRtLwY6mPOID7HsT5MaXPyGxwdIUpY5HcAwSu\nugBNeIuqsQpw+ir62mG6FUm1qznX+K/eULH5nZi9iSKa27sCB4L1bb9o5F0x\nrkxk\r\n=T2/T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9LSPUlBnOyMfh9NCC4n5Na+OjJgQ4sysZXmDHqwfJEgIgDOMRXGZFg7ebAIsoBJNKx0GFdVEQbd8QhRjTOMFbjvM="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.2_1623764752695_0.8890814805672931"},"_hasShrinkwrap":false},"4.0.0-next.8":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.8","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.8+802bec8","@marblejs/testing":"^4.0.0-next.8+802bec8","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"802bec80ba7862ca76b50275e0c49c11c74d6ae9","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.8","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-tNjewAOzkUBF5wMDrR0nYfx7F63y0gTaP7cIolLLzLwzZd+3XFfsdA0nF8C97HsozKHC7WDeHHOI+lmNlQwAfQ==","shasum":"05fe25ec2e88a4673bdf7c3d3f1bc82265c86c27","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.8.tgz","fileCount":24,"unpackedSize":20176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgybtqCRA9TVsSAnZWagAAdEUQAJBHYpVIRgMuhaY9fekA\nr2iQviDn4ZsjaqdfLZhfgdc69PN0D5b5YwwxWUT5exx+ZgLynDrU6Q3JQozN\nJxBk9kGCT8Qh8201/E9iGVOdAWJ6PJrwsJQYMmwmGp4pslFt9cd5TvcTvBjC\nKi8Q2LziOHHeHamYhy25nBAuTquoVMRLTIqWoz/jPJpmzGN9ez+VoR6ZWH1L\nx6emmgunCzws9eNTdVVVgkhBpLu/ZQZU6OVGR4h65fGVUicz5Wy5OWafK98W\ni+kmqPSf4ZjecrHY+9yC8o4JPwqeQFY21JrpBzgERQQZvcpx8XBS/7EdXIA9\njpNFW69VQ8YmOO6tcAdyu5WyY2UFGiihJ38R/qvgKCEOpES7ref2FGPsI/bM\n8gjItxg7H9owXbkjRvatPKJDTp4Woqhjd4F+L/GxwMnnYfsG4cZLHvT93oF4\nYqqdacrobX9tuDvDVbx6e7gG4xWEnFXTQBe0slOLeMC4R7zEKsiwwEWAlnxD\nwAKO6BXzYWfhyLGYUN32ItmUe/z7jcCJlSDLDrmqYNEPnf9m3Gxmjpz6HeDE\nQgbSY0Bv+YwgmQgtcVqJFfFFmj85ehHkJI8H8CV7tiPZ5kKj0dAJ6eweb4Ce\nsqVwIYtIuMlcXlfJBGVs/KllbzVh5wghKN06yF62Pbzc7G8CCHFXeNqZlwMu\nWmY1\r\n=UTN5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/RY6mehQIfQCrSZlkqWaZ6PHr85DqSqcZ9m+LDP82cAiA1fVeFW0pNAaTGwMZYff77WmdCWWN7pNE31ERg+U11cQ=="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.8_1623833450614_0.5273314934706912"},"_hasShrinkwrap":false},"4.0.0-next.9":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.9","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.9+ad28bd5","@marblejs/testing":"^4.0.0-next.9+ad28bd5","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"ad28bd5523e982484a497f8537a42a07c12208ce","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.9","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-3KZ4Usw1vwaH9uDXPX6B2At8k/8zt2O+jgkG2LKoQkSgB5sQE+yeDPQCacWnfolShM5XsmwA+pthphbIOFA2dA==","shasum":"68357713baa67ac45d437efd71778cdf7983827f","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.9.tgz","fileCount":24,"unpackedSize":20176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgycMcCRA9TVsSAnZWagAAlsEP/13wIzRpK1QcdZX1Qv2q\ndLOrA+yHRbYW/jQUK4d4EOPTtDGa55V0Hze9EsU7/QWAc3EEJw0Q04xjKLat\nowx818MxNWH4PJAXmCesCiyJRa6TzURPLSThfQAOpxdyYTTIE18OeuFGrUjm\n5zZ6LLfr03x6xTX5rCyxFy8EE/89diLvYbdaFaGz9IzkaDpM2aU/0OghWcq9\n1F2iw46N1Fo8IWQak/ustqx8Ck4NBJOH91DwC5fIun8vqTq0qVljuL6sNtXS\nzxAdckguI/zgaJFVFREyFcEB0qv3428M8W+Js67iJgTjLqwIaA85sMkshEbj\nuCt/dQhX6TucXaI9a/vM/6mKq/9y1KOaOGJkQRFVRZMYrSBPRD0WrRKED3Au\n/0k8G1hfOHkb0NfngsdJP4fJO2p786w/kSsnoT/r4Vltx5WdI+WOytv8pfpv\nsgI1+qOdL4dMYNGHE3PD2FxfyAig2KX18AjQYOByEKBVRfnRgxLclTra52rO\nxOURCGdgdeouDUwNFFAC55gF1LmbsQjngJ2ODxeWZoyMWYClFQZlnYjMcp2g\ngdX3APK5vuTXpWrgbczng1BODsLB3RMk5UgtwdcCYpVvPSqnR25jWvVlT7n4\n2WxqSwzclFRoOx/I4+OwspZdhXebBVDmjwmVvPxt5P6sZGF3zF2AT+v+1e+8\nlt2k\r\n=jNsG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMIujzkyqPFyLNwTqO1YjyzR7V8CLiyPE4WEUM6nQb7QIgZBx62+vzOC9a9Q7Brkw+CTFx+gmvPG0sZPkmfYF7bKk="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.9_1623835420731_0.9881879569065064"},"_hasShrinkwrap":false},"4.0.0-next.11":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.11","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.11+53f22cf","@marblejs/testing":"^4.0.0-next.11+53f22cf","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"53f22cf828af63e7f2821a43afe45e84906f7a8d","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.11","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-nw3TAB+C4jcVnKhmQrNL8W1oOa8cT//JrOOjkGxt9OTRtGWJxAUm+rAi2jtdm9lT3Pw2petx0zFkYg8RlZT5mA==","shasum":"d7a96536a23488051d76c5d28378fca7b4463cfb","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.11.tgz","fileCount":24,"unpackedSize":20179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyv9GCRA9TVsSAnZWagAA78IQAJL954n+0PXZxZ3JANig\n1Rf4zrBMzFR1u5vwZ+68UZRCgie05OW+cxZ0kNbjCv87ZWNwsRtpRHItLT7B\nDg3n592nfDY2TACitxyLk0xRhG6P64KuHw7N/oGkKaS+FgSf0jkfBAgwrbXS\nRJd2/D42+RobOtEmEH3rh2O9zOnyXkkSU7ugtaRNg+G9KMFOkNVhCwxnMwXd\nN0Aa4w6MM9iLs+ezCMAdzBrsCzJu/xXn3Fob7mJzAYfkXAyA3aIdKtcH4DVM\nwlWvhRSV2v29Db/koiCK80q5IZcdOgvUGq6lpCLvRWMj1hQl/eGHpXCAdWZn\nrmEionRnE4a1hgiq2wwj/qk5hM0u5uh3jmVGZ2GQJxMkg2W/3SpsEmVewkBB\nj9byr7+weyv1rTqf5wyxVJzbUuf4Lp7qJBKZ+KAgvvfHQ5Cxi5HHwRrDutUf\nRzd3noDn/rme4Rnfm9N6X9+1icxjOAQMQLQEHUXWlj1bWGkKjLMIaNppx2b9\nqLu51dNN7LZ+rlDOHOLgZnqTGJqkEpdtcTj3kEBluxIJYu9tS82me6epIFVa\nzZPtcsw5Wex2l3x7zf5+/fGRL8fAM5kE4LxU+VU6R5sNC1hewpJw80IZ8ny+\nOVyfWyHAZGmKTJHMZVCDN8TMK3MI2y86Z1zZc26xt05ok0g8EEK6ZhTLBynv\nJSsz\r\n=uBaW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5lNBO/6QJt71QSdB/Iwscyrx+p/sG6yOZVeiQREA+ZwIhAPfH0rOrppWjzXeyocLsJ6DYME6jeKwUf+2zzDt8JjlA"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.11_1623916357653_0.05165473471947313"},"_hasShrinkwrap":false},"4.0.0-next.13":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.13","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.13+f1f6d03","@marblejs/testing":"^4.0.0-next.13+f1f6d03","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"f1f6d035e313c0b973f2d20b5ba4725e875603ce","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.13","_nodeVersion":"14.17.0","_npmVersion":"lerna/3.22.1/node@v14.17.0+x64 (darwin)","_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"dist":{"integrity":"sha512-DnifpV5bUA7itgsIvioRXt8HyyP6BsVCslaBEKfN0XZVAxuW90z+Fmzx2e9m/74JAxfRzjdjWlf0Kgz2OV745A==","shasum":"eead858178ac55712c5a30a1d634ae1bdfaa869d","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.13.tgz","fileCount":24,"unpackedSize":20179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1ImMCRA9TVsSAnZWagAAW24QAJOxADSlAvV+mPG7egDv\nm/7yaw8r/aJJkrz2vW6p92kbYy5rzq9rGG+SpBw7s7x5t86VhmiBK7iAOjpO\ne2kl9dmgpeiupuq6WxT/WHa57nSCCu8dJlty7iKhCBbYVSAo1Nl6u2sjj79C\njpguPfxNH2xWUyFW8Mq0HzWKZo43C4KFc7cDx2V/ZNWoDr5j2P+RL8lCFmno\noMQQdsUMGlmw/sNMZ2RQvDyqKerQVjyi9KHmehMVvZYa3/F+OC3IFSknV3Bl\nREiRFN4EoYsa+7YI6TRXbZGQi2WFfTaofsX8Lvh0sjBlJA5aX3g6trZO+3Ty\nzWMMUcnZT4JaMFXoD05MXoSc6QLb9DLj4NgnRsGNy3N4hVHICSrpZGwfNPb6\nnQg1FhaSW+41iZuQ2m3hgd22NuIy4Tk+WYd3lndCpqO7pB3QlkRZZkE9wrnf\nWgdXF84JiGngtioije/jPgSXQP78WZAwHa83bvBPa33thlsDZpaqFeEe3Q2j\nAxbVeBgeT/eAaECJ3Ey5FxjUJCk241megdfeRP3mMf7fAEfqFWG9qWqIr21o\nK6PpqXYicoHAV+Ih/ex0lbX1/Oi2x0VCryHeJyWyVsZp3hgO1t4q3jxq7GEh\nT6SikEfF1iL0Kjb++Y15BCLrYBX4F5fVextVN2YFFr/orgEDEdpZ8+zotv8H\nfzsl\r\n=ewfE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbrBroq1ioxQqSTXAmZ9p97SY5oI+B3GjuydI0xlYNigIhANtWgfvuki7v80dfxIx8xdQq6gIIozmgN4YcG/SJ0z18"}]},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.13_1624541580300_0.7580376360415"},"_hasShrinkwrap":false},"4.0.0-next.14":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.14","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.14+17cbaea","@marblejs/testing":"^4.0.0-next.14+17cbaea","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"17cbaea1cea898453c8ae2b6770c850e25dde6d9","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.14","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-bfZeMbfYP8NJ0CByceHUkGxU0UOvodhck/vtRIetECtJ/9K4AdMjNE6W2JfZh/RIkxR+VptS26TIG/c7tUC/PQ==","shasum":"a2c5b65a5844522ed35faead01a145a2d68be3de","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.14.tgz","fileCount":24,"unpackedSize":20179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2xlaCRA9TVsSAnZWagAAmV0P+QG93B1/D5LW5/AYVbj2\nbW/k3UxKqn6xPUj9vXRY6eM4EbIpZyY78dnRWW6vIxH3xuAcsEAt2TIuqw/C\nuByc96xhkpiCadNfy00XVTKf0wHGgCbtyILWAF+R8CEn3p1j8B1XULSnJZ5j\nFup/A5V4PEO+M9tZpDnL2sCSa/ySQIqquLhtX6C1ZCij4oKpvdSWvvKkReQh\nyRL2FbFGh/kxezIRJItMHpjgj6iPMN9VWR0NhAVmSM6/iKZR4UA5lygRCFzy\nZblW9t8mXac6RqRBttIFdSN+MdNASob5BzLk68zK5jxGkdGQp3GeE1xM6Otb\ntA5SxgSW7hwp5k5h88NiBlB6T99k+MLbL1yvapG8UXQCbiq1AWNWwlGTMlOS\n52RyGvTPEeY/T0NQ7NEraL3HCsXzd99+V09jgIddxPAYyUOTqlNpyS4rkUqq\njbX8QlypVKLNRJadAc/X6krPyXg10RPfnjMqHta7TS4l8/cEVEWYMht+RHIY\noDfc/dS9d0mJCmfJ+7avCu6K4m6w2ooR2DKQq0DhRhpSt+tCRSWgoci2euBp\nIrbSK8/87SG63NihxMexm3DhfC76Q0kU5W9YU5fOCUmuFOyFPtC3cWVgI5+H\nE1m2HyEG5k9JCIwOs2+g17V7M5Uf0//OQrMsT9js1me+csF7Znp5250d6aFl\nOOkT\r\n=LVNc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHblokEldBHhMAFoIvpQa6ynaGhXMXEzCMdZr+TdX9zwAiEAp9UqfWQUR0P/4KlrTzeo3wnru9brcyIVa+FqDXR3Gn0="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.14_1624971610536_0.4454853000367638"},"_hasShrinkwrap":false},"4.0.0-next.15":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.15","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.15+505f894","@marblejs/testing":"^4.0.0-next.15+505f894","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"505f894e671aa441dcb596643c418fa8f6358c15","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$()),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    use(multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    })),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.15","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-rUcQDp9E73DFc9W+bWG1CdNnEJxcwnuLC5rFx2WeozS8y+rcMq+J0QYncRPJM33OO7ZuEFfQYEXKfBVontujKg==","shasum":"49fed452494b4c8cc2553197179adbb4a5987e13","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.15.tgz","fileCount":24,"unpackedSize":20179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3Xa7CRA9TVsSAnZWagAALsMP/21sX3mqJKtuIF4oWrpd\npjOcvcdUnLbHfeMVy1B0xJG9Fxgo5lQ6jriPIt6RDINEryglZDp/5O7S8iTx\nxsj+xnYCj9GaG4qHLVa4Yp2ZWuzVTkWL3xG+WZRQj2P60YSnh4bZHXsJ1EMa\nERjHFQ6lAvaBmHqCgOrPoAZGMhqnjXt54XYq6X+0NH4EZQcQpN+Ux2/i+egu\njmoi4Noi0C0S+k+acjwqRPAyeyHqffe+2XH2VTo7g6W49WzCuwmBZk2uBX4C\n/KSux9zRF2Wmb7JOuL3sjSGdn8IPQCyH+XvQ2p5mfyzPFk6m4sHVdi3grAMS\nuThMQ8OA6OWCvP63LA8A51Hv4b4zf+E9poJJg+1XJnhQ+alms+F7j76Zn7g5\nR1JoBDPuF8x2kPzEyxemrCLdNSfDTHbR6x3t0LjYdEcTuk6SfOjvBHtWC+Ns\nCmCAxP6OnZfxnw70dSwE65gQ2if+ich1NZyjAu8BMDl9yNeGj1Woay1BrAOV\n43GIXDqIJLnW4IxYqWK6tHmeY3YbnAMPw4rpyzQ466ciF7slj6z942PtNkVt\nRVb6SqM7cHnZfpRX4L0C2vOrf9hJz1IvqjBuXHSTNF/2+sPQXiBkqDLiV+hp\n+bH+uKDpT7NKoLADPRV7vQcS+dJwsybevhF3rn6zsjbN72yMLec5O00arrLO\nX+qt\r\n=Ln1M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAYtG5I9kfyqP2TdiyFOpVRbFVphpl7JL9xQuGhiuUFwIgU1wpGTtj2mFsS5ALA3lVs0jQWWXCN9bD/KVLnjdVT1c="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.15_1625126587055_0.37781281269153233"},"_hasShrinkwrap":false},"4.0.0-next.17":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.17","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.17+c9622e8","@marblejs/http":"^4.0.0-next.17+c9622e8","@marblejs/testing":"^4.0.0-next.17+c9622e8","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"c9622e86dfc624927178cd2a75524e630aeda419","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.17","_nodeVersion":"12.22.1","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","dist":{"integrity":"sha512-a3ZSUsGDFNfEXVE3d/NVVPzUVjFro/RgT4KVjjl5iZZnOVvJc0u9tk+3QvnUIXyezRkFu8UMJvBtox/JZFbz8A==","shasum":"7f0d09cab43bb44fbd66083304812d5f402c7b6a","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.17.tgz","fileCount":24,"unpackedSize":20338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7XO/CRA9TVsSAnZWagAAQPMP/0IeDB2uEwzUI8KSahHt\nPOpzgmUmq6lSNoDYA5SGbEnXQZJ2ti9foZm2EK0LuI4tivssJlBYq35PR0mm\nPjrbdm8Tl0Sj7SvtKCfm9wv2Aji/cRg9MNoENrkQITVpSxVaTAMqPrjZCwdN\nFX7Pgjz7pAMVsmf5mPqm6si7FkRwZuQZssx/jQIz367WzdlvLKGxPgyv7Nfo\na2ACjbHoybYgGtMPIC6fpaGGpeV0ap0bi3oDb+wPVkRLlidWZKDtEzAVCVFM\nYv8CuGGUhkuCY3uLEccAwOrOp+MjW2p+eCj+pYVomPz4Rts548u+HdmTP2O6\nGhyhNAJ03HmeRt8e+sNQX9Rbj7txeLA8IGasT64a5nOOqzq5WksEgE0+uTKF\n2toyj5h7EPwhwCGWsyWuccGU/BOQHU3G20Fh5H4DSoK9YQA3Mtsy83SrWSmH\nBi44ixBlnrI5QbZ57pgJucX3F4gQN5baWDfulEjLyNUaQrrHsWfXNd0RkIIb\nVpUCBVqSrMSVvm8oQmkrfzOy/5iwkXEvfkXgMSD/owNIVCj+UcfLO0R61y/X\nu6LNRYh8JbNcxmPEwChDy2bUxGy00TFYjGLigcLt4ChJ86NX8xS0us4Zw2UW\n6qiz+67/jNTgfOUR5SE8KcYxxnz+8/mkRrmwDI0sAoeRlpy+3UbUbW2ALicI\nX98F\r\n=+V3C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG11GtJ7Dubh3qGe+JHEuZ8POsjkG+R7Bb1sh2Ib0T7UAiEAjjy1eM7lN431DJ1HaH54nfZvobQW6S1gM46VPzj2D+Q="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.17_1626174399231_0.07689090326304227"},"_hasShrinkwrap":false},"3.5.1":{"name":"@marblejs/middleware-multipart","version":"3.5.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.5.1","@marblejs/testing":"^3.5.1","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"800cd7f5f256b7ded4498bdc809a8848d6fc34c6","_id":"@marblejs/middleware-multipart@3.5.1","_nodeVersion":"14.17.0","_npmVersion":"lerna/3.22.1/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-rTO1qqVMXf+/+qlSnyvNe8zJMAIZYKRE2JsptdBWJL/rt+cnmwuxV77E0KGjmuujA8MH4ZWY6oK+CwNdwfRtBQ==","shasum":"4e10429457e7442aaca8681018b73563efb27e23","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.5.1.tgz","fileCount":24,"unpackedSize":19748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEPtgCRA9TVsSAnZWagAAUfMP/RWFjrvRGeX3LPl1a+eJ\npk90SHsOHUedzTzL50LXfXXhabPv5DbKFX8UI7Y+kBM3KR3Rc+oHQ5+WqgW3\nvo1mJfVFKMNWklcAU8Dnwrh2Aq3vt+DjKwZf4W9tB0TtAb7iFcPncKf8rwoN\ni/s/0RSVAtlOgejXeZPAhOiip7rrnAWAsocyHSffOkkjwUkJwa20jV8ICMQM\niad/hOgHU0H9ErxUWpoPYkQcK58XU6IgrNAxqHSBdXug6gqbEEC0SeuFL0Ki\nyUwjClMpNFYI9oWQdQnobBInX0r9MXB49s7crDoKfHworQj9+SDnBGv5Aerf\nhLfjQVURa5uMAbcvmqa8p54S/Xo+A4FFj2iUdn3UqhE9Hq89ZoNFEFfDHfQI\nXBKr6yYi8/m44uDSf4XINAy4y7Ek6DzELn9f5CNVGMAFM2l77LSHFtzFEf/K\n3n6Ea/xWQcASNG+m49fgBV/RSFdKqg/WXLuQEjMFZzkxdazfg0p6RypnLO1a\nCB0yHQ4CLREvb/Y8ZV4u7NTHCewD9aLoFBUrN3R+8l7oPnWS8uUsfW0OJIZw\nMh1w+QVH9QqlnqOpqbNlM5iOdBqVKJmNOEXoonqUtx3/8AZG0kisf84w4VTq\nY2aw7GUvKt8WsdStJ2BiogdDSWqUy8hCWglwjDxx/gUVRjQZcoicSbZCgNY7\nP65M\r\n=r/Sr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0YT3+E4tnluatYFxYWXtJF9qXMtZN4xxXBCiSvKRazAiBe9272Cn7J8MOpKt6sZuYI+fgUyc8zC+WVpyrG56m4aQ=="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.5.1_1628502880110_0.41328735756562307"},"_hasShrinkwrap":false},"4.0.0-next.16":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.16","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.16+bd23088","@marblejs/http":"^4.0.0-next.16+bd23088","@marblejs/testing":"^4.0.0-next.16+bd23088","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"bd230889ea709e0123b79e26c78bd40ded78b4b6","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.16","_nodeVersion":"12.22.4","_npmVersion":"lerna/3.22.1/node@v12.22.4+x64 (linux)","dist":{"integrity":"sha512-K/7vR7zLQPRF+uud83RDStKU9z+OimvANoaCwx6Tk+niZzPjac2DOgBVBTj8LAcI7cET1d12P9mNdJ+to75Ugg==","shasum":"1cbd3771aa55beef388678d5e592aa305953dbe9","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.16.tgz","fileCount":24,"unpackedSize":20338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEQIECRA9TVsSAnZWagAAsHwP/AtqxltodR1ts/U7a9+c\nnGOOSW0dSZK9vpTdQkNgobr9c/i6Dg6tyWDFgYYh8hhzpH13yp3Pj9kqPnEj\nw1jL+7AWTMoxDOFJS/EDPz9fezWYbwRc6rv3q7wZMuNgPicmsOC+wNh6UGSQ\noRZfphY3piY4RJt2hUfkwg+c6CWgDxUclGhugTXKiCGIFtuvH05/xxEnpApz\n8qvFPxj7fET3B1zQCvU3C4obzFEIST7encZ7O8EYkgclXtFcZk79xIMuOTcl\nJD6mNekht81uplLEJrYO2RIo0pF16m1z5w3wdNgdFDcZdjl3nuoOKAhH1HmJ\nBXNaotxP/JnJO6or+GwcBu/JaMp2mFbKnMFQfgZ37kBbaXSAThetUEArFLmg\nlpLvjQyywUVkPoomnvwGls4vbZzOPZAjh886JlXUEJTSfjZj3MSI2Fs7fKHi\nY1kskQhatUYx4Z0SDEeZFCpKC/7vwec7PH+vllyE99he02WluRD0VfHDV7wr\nYjWyxT4TRBK4lyXrd9UgGmt/F1+k0uYlt+Uo5r4eIlEVWWq0HAW7c432d6PT\n0BYX4if+aeOqjRYJAjtKwvqP/2h78Xkr31xhLKiMe0aV8XAkuSoNv5u4TFzB\nV3ifEvXFAb/Pgyso31YxjGXRf/9N/r4c1uGhHMv5kl4LVpud5gFMEm3LvyoU\nth/b\r\n=vQeC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCP+PwnfDC52MkQgAUi7SjzPbPiK8Xa3LqE878Jds89VAIhAP1TC0Snnk10plMsFdrAVmHtXAmZxnqxpMTNlv+Zn8tJ"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.16_1628504580021_0.5119909602138486"},"_hasShrinkwrap":false},"4.0.0-next.19":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.19","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.19+173b213","@marblejs/http":"^4.0.0-next.19+173b213","@marblejs/testing":"^4.0.0-next.19+173b213","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"173b213bef69bf011dfb649aaf3254e7dd98e122","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.19","_nodeVersion":"12.22.4","_npmVersion":"lerna/3.22.1/node@v12.22.4+x64 (linux)","dist":{"integrity":"sha512-xKJ0++xm1ReCB/aVppcKVc1vDPz+CAf23PxSJPwJc6fJcBdVUInFGq/H0rHkz4WjIE9n+ewlYE2gfhqQSc0uug==","shasum":"47d2ac879e5ef1df63ed9ba53382e41e0e11d62d","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.19.tgz","fileCount":24,"unpackedSize":20338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE4H+CRA9TVsSAnZWagAANV0P/2RG1E45DhhxM5cvHyyS\nAwgRDcE3fMrwh+4EtH0J0R/sqtADPpjdY6cKcpWFE2WQePB5GaTBrqDPylfZ\nDJUwFEtHLU4eq5dEJgDXJjf+GsW0jJfU0FGQxHA/ZzMv7b7nEofkgSLfRet4\n3c2PSO5y1Ho+d6OCPBmqENiIfI0Np/RAkp9RohJmN5zItPA/V1eIsGC70OEA\n7MufXlTZTBDFA6V2DhMnpFxsEXwBilWLqyHFq0+ztRkTCgMhpik1vWYrp4id\nxLzPknuv4yxdZAO/SjReH40XAnnmkGyEVWkHADHxq8Nf3in5wNZS/vu8k9kT\nh69GQei1/iYDfExwnht/GrgIJi8AtitqNb7Me+Qfs7wAdyoWnx+Qe/9QUud9\nu/+LcA9sg4g4tLwC2Y58tg9M9ya+XxqaCcdvSETQtJ+ldP1LBoGPq+QUpDvC\nB9DnSjzfh14ZC/q/CLRryb1KEDO9HaixK8wtjEHaiBUKRT43fUhssAs/aN7e\nQYM4yomzOrn1xhxJAYYjFaWUfxFnzHJJHkulpk/tyZ4UnWP6up0Ig3qNG/+n\nQ6uXf8pHvDoNp9R/k8p3ftWN7AzhAEeCmDO716ObDQ1iFOxVK0O/xyvhy9Bd\nmLdQPwUsK6FXK7k8UfaJ6vb5j47fgKD1qb3zFimOm9bPlPxKaBepTnokiAVW\nXJhZ\r\n=laJB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENSnSsqgaWafmadM002P2/iPlKnJNJ7QTQrPS9yBx4EAiEAtfP+0qXzNiZ9mvb2fgJ/X/IU/N0jLBjwrLhrvkLXeC0="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.19_1628668414304_0.42420673804225184"},"_hasShrinkwrap":false},"4.0.0-next.20":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.20","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.20+2e3e72b","@marblejs/http":"^4.0.0-next.20+2e3e72b","@marblejs/testing":"^4.0.0-next.20+2e3e72b","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"2e3e72be19c494755cec044f2fa617e23dfb183b","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.20","_nodeVersion":"12.22.4","_npmVersion":"lerna/3.22.1/node@v12.22.4+x64 (linux)","dist":{"integrity":"sha512-mr+Z/EF/CSB3HiXSA9nCySPrWoOo/gc5E1HjZNXyCKOuITswthPQ+7Le21bCyG2GvrB7qmwsC9kYyXS/Z2LO2g==","shasum":"5287c6f9d1ae7f5b32bd56f02f26af48b270069c","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.20.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE4jYCRA9TVsSAnZWagAACcgP/3lvMwTqffAuRAaieCuw\nYVImlJqw50XXiDEVJX2JqkKOmYLMQx/cOZw8p/Dx+zHH4GR+eDmVkr6bRHUA\nvWv6de/A0Tt0TD2x/fuyhnhybpIo+R3pILBSkVcUX1RBij/UyXVuKdJ1mz7n\nEbMKcrO67DRA1oRomZJV7Zy4c0rV52FqZZb9jlnluBsEVAKriQVKxmO4Jc4C\n1ozny48KjonwaJtL6hJvB9zxqMpmNSdyv9T6hwuEGQ4Rj/HBHFXG9X8FGMID\nPnzWxq280QAdG0ihgQOwUhR+9Zzk7nzI6IIWAVnW8jCd5InuwwYelK7DwZu+\n54kcOvUCho9Ls8SK0cScFg33+zLy8C6wXIqW9WrYVOCj/uO7S1Qbr7zDW77t\nNU7p+7hkTKGeZhy0i8W5VNzPRTM1oxoE/IjIo5zwaSSgrfY7BMlzQOZka18h\nNKKtskukqqFmBTMZJA4YvMR/iyFBRqcy3Lc7jidRNgrbow9NAP5R+exTi+O1\ngEISgS93E6YT9CSoRAlHiEDF1fyGeoRQcf0LPyLAEU/x59HyUgIFmeXHJuYE\ndYR/SiSeaNJEPaa/hpqr3TaGUB4pJ3sVJnOvhlxduNAfzxzz8vwT5PWlqEFW\nTrLESm9kQNeCO4qE4LdvOqG/ensfaLt45NrpesUKC/nu0ILSXY7hsnhreZI9\n600k\r\n=WkBb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGzvplrpGp8juIXIql9lQEdVda4rySLi5/E0u3XuvgYwIhANcTlYGGkw5raIP4XCVr+32adK5VnVqwXmn7DbSisCvD"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.20_1628670168385_0.06836669833937825"},"_hasShrinkwrap":false},"4.0.0-next.21":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.21","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.21+f7df9f9","@marblejs/http":"^4.0.0-next.21+f7df9f9","@marblejs/testing":"^4.0.0-next.21+f7df9f9","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"f7df9f90e62abb2045ce0434b126ccd64e8045cc","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.21","_nodeVersion":"12.22.4","_npmVersion":"lerna/3.22.1/node@v12.22.4+x64 (linux)","dist":{"integrity":"sha512-xSsuyNtcw2VRVPskxMsdh/fxqcoPhOB4gDDBXb8rYF1Q2KoXfRk/zSjjIpwNMJftL5FvlhjIGMPcZnPggzSQEA==","shasum":"502bc86e907c5955168aa0174d171999b54f6178","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.21.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE6SICRA9TVsSAnZWagAAiMUP+wXj12v00yBrAsp5u/sH\ng48uFM8P6figVC9vS86IWVxKqBN3oZGYWTF8lMll5T+D9nUgdyNE3vM3vIjX\nN/WNrwTjMq7uZxV/2fPrLpGEYlYJerOZnEeb6pjCueeWsJobSYL0YNveqBHj\nTRG3E+z1S+qfGu7ifC4ob+wFx5Fkcbr3vt7hlBFFnvBkQjr9TK+rHcEHEGhP\na0RvUhxyv6PhmnKgxiM59KqAZQd0NyhqRcfBu/nBZx3u/4O/ppXnWIXcRPHA\ny+x+7VIR2Artn0omRrQLaV9CGOJUjj6Rc5yO+dKybj67PGwMi1QEKdjkNrdn\nYBeHYkI5xOwIMZu4oOYPRmDvmAz5A9DQVPojLjnOqSX/L8PD0TzOtv/cExAI\n+XG8Qf0b+RnpmJ8lBLvGfdvUj4Zb1Lw2BSsXC/Mw+5bg8lQ4OIWQ2NOrQ8AP\nVtdLCNtHOC8XnNDFxAiZB3obnZKGiq/xs30YCUy7Wqw+7XJ0qF2toT5MfEMh\nnIYT4PRlN/sT+XlB0iMg16aczLBArHHAup7xi7+kEwUqj0kZ9PaOZY6iq8VT\nqYSV1PrKDqkzJG2vpMru/oeccP/buxFUkJPj2nVqZ5TF0Ph2DcgwOSrultvi\nPYTwV3ESk6ac+rl87lrXRs+h8EhYue6DaI8bVGxqKL3k2R1MHWoFXpKBE/Rq\nh1vp\r\n=1S1i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHkZj2Q8UQm6okez5JbQDUGx7rFGMrHippcgDOfS81THAiBgMwy6/049XbuIKR/XkGMKgvlM02PMr0nB2JjCv1ACTA=="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.21_1628677255988_0.924850064478663"},"_hasShrinkwrap":false},"4.0.0-next.22":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.22","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.22+6a8265c","@marblejs/http":"^4.0.0-next.22+6a8265c","@marblejs/testing":"^4.0.0-next.22+6a8265c","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"6a8265c51b01ffe7082d5eb052ad678e38508dbd","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.22","_nodeVersion":"12.22.5","_npmVersion":"lerna/3.22.1/node@v12.22.5+x64 (linux)","dist":{"integrity":"sha512-BEzv7uNyznx5Nl54CwHVu5y9tjNasBKNDkVkuLOYTx7Zj3aiBNqLgRIKacUWCFW28cARNBKlLBAaaare+iYzaw==","shasum":"13e514063356dff7780ddb1a62509166979b8034","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.22.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHPmzCRA9TVsSAnZWagAA+SAP/A0yU3mPRzYqyEHxXBPh\nd4QTwcPEXXEW8G3V9Zw2J3YKmc2Loxo5RcG7ftWkBWuKvJOi8oeQvKjqkbFz\nZOotGWcYqVTyMEUZw4oNLMJYRNhlft9qbbozgdvLU/engs35vyyQA4wOHnlZ\nUrm19MuxenjV5D5tW9ncvYaIwL92xr235rXwqwZwApK+8O2doGK7YBMrRY7H\npKIeNitUIAqJFvMsYx2tJ3NEk4y56sP1JApgvy1M3DJK/LmGxrA9YCJ1Woxk\ndThQkJ3zMTThBAbVkagpOyzmYN8cjjCCDjOpb58I+LqTjSiNbhkVC+GJ3r1s\nmdb65BS6kIgeLPDd1gzTlu7NxXoa9WG9v2MiV1TZQCYVM63lGi8rvI6IYfvV\nAnvR0SDumTPTuSSFcOH6oniqTTlFS7YRlcJi0/ZCaUNy3EcwY14HIqpP6tpo\nyLZifwiCO3gQ4CctNkt2Q8QDgvRJ1o0spW+LGaXwYHgicD+Fiu1/EfMPn4Rt\n4ITjSb2MKo7nNFi6ii7l+trr2dsCFM4BcB8SRMxGJf+m/rFrj2lvbS129gs0\ngSVXg5DKFmi4zBJeS8CDTeaSGU7uqJnhPsss5CU50KLF8AhhuL+y/By3vqeG\n3XmhefwF94xxZdtgEPrMsgQleD3a/0BFPSSeR5Y5xTvnu1z6ZBJ0ag8p7UwP\ntXCW\r\n=vkBt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/94VVwR0/qgQ2GjA2t0LucbOuRux03a+TYecY9qYAFAiEA6qPfaW2DwFSw/L3uvZKmWgFvF8bKXv/3co8wcE51UKI="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.22_1629288883208_0.8810404803894201"},"_hasShrinkwrap":false},"4.0.0-next.25":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.25","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.25+9616e57","@marblejs/http":"^4.0.0-next.25+9616e57","@marblejs/testing":"^4.0.0-next.25+9616e57","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"9616e579a03e8f1d51cbedfb2ea0215448d93c53","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.25","_nodeVersion":"12.22.5","_npmVersion":"lerna/3.22.1/node@v12.22.5+x64 (linux)","dist":{"integrity":"sha512-+YKhiUZFQutvruRNIikdyLNa753NxCcr0joKKEX7fvJoHpbo1QQ9rmDalAuK9GNwjgbjW3KBVVEYCmxZpkqM+g==","shasum":"d59b5239d6ebdc964b3c434aa8a10c4b7bd8d7e9","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.25.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHib9CRA9TVsSAnZWagAA42cQAJW2WiFGN9aEOIaGM0ps\nvxiwXerriBr9xov3+BVpFns1aKHptdVmoyKTs5mDu/7CMvK75Vgw41mrJiL2\nG0lk0eBpqLR7kdjRsL1tyLB3RZ8d61VxZ2GJTOpXFg8Z+S8Zx4fBlmjJNgwp\nMx21/bXv12SAsD4I2HkPkp77VRD2lOP45IEIkliMG2OtTYrrVj955sHacZgg\nbcLKBtfHmZYbbof8vuY92IP5qf7YoK0TZs0uiPpFZljnSjV8GgoDkiw4OL7D\nKBCWWg1JiC7wkP6OowaztZOX380vJu/AYYRA/l2vDeEygTd57nw7l0YelH0p\nM//N1/nn32Vx0gXK8UX0inPw+sA8N2NXlUHn2sMEu+pafPuLHyIFfCgcRc+2\nTerkSZjPY78iSZaEHwRnA5mVgldqKbO2JvYhSB0wDmK7Iqxr7+CyG/cw338K\nIIhL1uXxMymF9suStM1i27VeCelp2jpRwejgX9bSJDrHq9M+kYNHZ5L+SK5v\nI8X7IEQuCSES2v0qhZL4oo39nVMJQ5e5YGmbcHoAZV3FVGw02LclZ70aGn1R\ndJhvXsZkUHrmm0RMGMS2Ojg6TytmcChAXZULfjoqEOvuoB3QOtfvXseaBMo/\nCC3eUme3LuY3IEc00F8oeKcU8YCzWzbQCXvBBxoKEUUYJgFztgU92tZmevgM\nQ7e0\r\n=YRrz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6rO7uqKRIof8Uhg8ODKrgemjdG67sExmQz/Rn/zUD6wIgeEAkhneVBD9bjamYGdq3lzPqZOWrp36Z1RCTUODmqyc="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.25_1629366012901_0.4746873429632996"},"_hasShrinkwrap":false},"4.0.0-next.26":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.26","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.26+6973ec5","@marblejs/http":"^4.0.0-next.26+6973ec5","@marblejs/testing":"^4.0.0-next.26+6973ec5","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"6973ec5f68400dfc73beb44224edebc637d9ee64","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.26","_nodeVersion":"12.22.5","_npmVersion":"lerna/3.22.1/node@v12.22.5+x64 (linux)","dist":{"integrity":"sha512-SKp4o3NOE61zFwqHqhd9s/Nf8YyWcIieP48EFwl4NUtpLYdXKJCfTttMUwSk1mIR/HYNCjxKRHSzwVzMHTwWgg==","shasum":"0b32302b3e90f08b3dde4e2a649b63577b0198b0","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.26.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJL0WCRA9TVsSAnZWagAA/zoP/3x3kzoLNED2d1DIKVUx\nPUJY7JYVh62CPp42jkA410TM4TfC7kC4jgnY60vtn3tuWr9kkHywnp9xTNv3\n68LvVHEpjYDI5pFkbSnVprAhVnZ1nqtnctNf9ImK+eaXfFSOw48jsMuQwO0m\n2cl5NX1icNzpxP6qa3JT2pw4eSUM6x+U0q3UzKGeN4eArK6DYxvQ9cYz1Srv\nGh/3IKzBKuf/ZEhOpGoIMBiJATzo51IZRDYjE9l+zaM0BgfxYadBGoDoDeaj\nRfutm3iZXOjaAzNYl9vDwFXxd/hqFaUgSgpdrlQpRyqZP8/CNgukupW0Wy84\navOu4k6wiESZrQRi0P9Jnrgkbv6F3lMFwkMnFR2IT0K5qcqQz10Dm4Z+Lv5B\nwYcY0T+LKUj73ZEoZJqsQP4wMQFb47qsWpAJax1ymQC9H1s4/KJN8M4dMopF\n7voxNYaQx/+QICARTWIfi1OiFv9PnjsHNlFrleYLUx7fP4XQ+A9ow6dqjUaL\nzFmzX+OcdBf1Sb+b3R7iWACkL/DzlO6LwdMrhg/efTP2096vFwcygfLi76yc\nGNLah540cLAKopYIoOUlMTDMrRceA9jLXUZ60FtnHnluywAqhu+tb5w+k9bq\nVoqXPJz/SY1RKMIbILk+DRVHoaV4u4G0EaLrcdhNy1TzmQ6uWGS3hyGpdZla\nmRM9\r\n=2ljo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDluC1iQY6o0npL6xtOn+9Z75XNMQR6BwLl+H8dhJQS9QIhANk6KXZh5Q8C+lfF+j0OKbBHs0jbrGPhiS2t+exN7tXQ"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.26_1629797654812_0.24420016744701045"},"_hasShrinkwrap":false},"4.0.0-next.27":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.27","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.27+9c3d587","@marblejs/http":"^4.0.0-next.27+9c3d587","@marblejs/testing":"^4.0.0-next.27+9c3d587","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"9c3d587957d50a28b5fbd1fa910969762027da4b","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.27","_nodeVersion":"12.22.5","_npmVersion":"lerna/3.22.1/node@v12.22.5+x64 (linux)","dist":{"integrity":"sha512-hDuZwvO5aRRdqlGEPsRLUKNqCG/jNB2JOiiv5QwCCL7CkBnFJ1iDdLnYXCThHDQLjbJf26E221TFSq2G4BMLWQ==","shasum":"17a417c52addc4e7b78a5cb574d2f514aef9ff5e","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.27.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJPn9CRA9TVsSAnZWagAALTYQAJKYv3XX0W6HEPrzIgcr\nc6CaXieeu3qYiWdKvRvk7P9k5NAb79A6694ZAIutzKQd2vOwdki7G91nl1RH\n3lqgAZdbn5OkI4yTLyVrhFcM9cqrkjoQVl+t7s727M3GvghNCOtPpGhDjuH5\nbXxSC04CVWi003/VXciNoTl3cvfZIGJ7nk3pFDYFbk72iF88dM734MMig50/\nhOZuXA+FvQrV9jsmT8ymZM3yajy8QyIRZdMtfbj+qwzfRWUkanAR1M5GKldM\n1diEC+BKW4A0Mrb7HV/faLxMwx8aX//0XZIEeKYb+Qsk11ZdsNrH40XiYtlq\ntlBnbCU3hoYr4srNvwGIgOkT8nu/rI4eHBqBoFK6ARyK9xuXqFpIZ1I6hG7L\nulsJZ0TA/GNqA+1vncgKH+neb5ULmgZwelsoBoWExNkPhUDtaAcgElHwqdXJ\npTXDJOyDRrEktnl+qzp62LeZqYTUESdKhS1BT/pCb5rdGWe6XnrQT8gedhCQ\nEvOElis42TpSQyONAXOwCW/4u+Xt1N8LekK2ioe2NvaBiRxUPotSESliCWSF\n8vdHkxvNsD2FNDL7OJOa7nhYTT4wm1IP8gdM4nxUt3gD8W8iwrWtgTqIq7RA\nnEC0vntzTeub7w0Kzqaf5XtuvHEGCnnJwhcxSd0xCoJaAezOrAM4XEnrkN3j\n5sKy\r\n=aXL7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8GtoywcsVNKkxnLxE52ww0Z6CXK01+7brLVY8ke+FJgIhAO2hYQ/nLYzyYc35s/9IQQsqA5KBQWRMmEyksCa1WHIN"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.27_1629813245395_0.3428802119446428"},"_hasShrinkwrap":false},"4.0.0-next.28":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.28","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.28+032dda4","@marblejs/http":"^4.0.0-next.28+032dda4","@marblejs/testing":"^4.0.0-next.28+032dda4","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"032dda41ecc4a3eb7819c12c2fff512ea0ba1feb","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.28","_nodeVersion":"12.22.5","_npmVersion":"lerna/3.22.1/node@v12.22.5+x64 (linux)","dist":{"integrity":"sha512-9iJhJrkHGCGprUocEPHCH7EY3sDUXqEpQUQIv6aigBeDn/tOEqtWOUuU08Ctv1GvDykfhqGjoYzQEPBsGCmZxQ==","shasum":"ee18d62b929b96d9f20127cd526ea429940042e2","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.28.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJeoDCRA9TVsSAnZWagAAU6EP/3Rcp02dfmcenS927Ltp\nXutJpJBrpjPnPB9rxZl9P17wihqCbAw9ynDz7GLw6zYyGFZEK8VEnE+OPVpc\noRN16h/y2wII1ev3uaKF5+cCusssXHcNQJRHK0dsPI2SIOkNwUD9qfCTltS7\nbKXZf58sMGdo75SwVzszPfhwrrj53hGAxF5wl36Waj1khb6j6ETFLfKqeEWm\n5FLH9vktFxYqN98+Z/uXtDbbk2IcCe+eucbJ+MWz/DMNl7HRjD+Mbrryy4Ih\n14Vyvvk+JsRHTTlTXAR6sgZr8p8JUtg1djwvvO8VW7JdfNiGJ3LBMq0GyVQB\n6TYgyE2Hm7Bw+ZhWmN+V7o6TdTqnYnVDzoJNYoPA/owUgzdW0juXu9vokQE1\nV50LcNh55LCQhBMsP2hyKS/8cY30D5ymTEdytzMKMmJJpO0jZnJRrUw/iVrn\nqBNaimBkSqDsEKKj4OcNBrPNA/4/Nz6E+LrkPlzfTjMf7U44w76RtgPxzHJB\nUJ+/WavRs/yu4tdKX0pVYFQeTeQQLAzr0wnHG5ArGPB00UMB5M4AY/TdlEf8\nv9Lvm4HlCIUkezSBwYPnRVoGBUbDHqW8EZjU+dyZ7VLhVlfrWkyjxLHc7eIH\nLUMlcstYN8lt1qdxYaelPb+dSjwWrgn9hqbMX+mgkX4GjmTA+Cganj56LP5I\n5zzT\r\n=HX/2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGixPxA4Cnc5+PAlrSJ4wYZqhuFbmbcS1OlCiCBzbK1vAiBwrD0eZh5CNF91UFqwTA5s0Jo1g6y5j7MZtBHcVgnBJw=="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.28_1629874691632_0.9125326711228618"},"_hasShrinkwrap":false},"4.0.0-next.32":{"name":"@marblejs/middleware-multipart","version":"4.0.0-next.32","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-next.32+60584e1","@marblejs/http":"^4.0.0-next.32+60584e1","@marblejs/testing":"^4.0.0-next.32+60584e1","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"60584e1c51350bfb96b98b1478720f629a745dbb","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-next.32","_nodeVersion":"12.22.5","_npmVersion":"lerna/3.22.1/node@v12.22.5+x64 (linux)","dist":{"integrity":"sha512-bfvxuiXuP8CFyaRwbw/H05sPFIREQtQGNtbUr43iIUr8FsP2J18X5zke56kUgYrxeoYcYq82tmVK6nvs8QRgFw==","shasum":"d65233abc007ed43d4606851f981f75c64fa45ca","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-next.32.tgz","fileCount":24,"unpackedSize":20344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ2pgCRA9TVsSAnZWagAAXdoQAJk952c1HJgElotPgEOP\nVnFGIjyW3FI/NQdqLdkoVKapzOngHoiMPOzqed9DMFqQKFFu9WnxGTiAuvT9\ngRMkI4BnSRtzQ0FIVNEBtbfp9gpm4e60j4eUvMdB24/uYAv0Gvl+I/ZcIAFT\n8NyliAkdZ945sLI4eHNBarP8LwyZGUNabA+nkbkcBsg8H9wCntO2gYNJZtId\ncZZ66hYjmQ1uARHH9ydUXZKJGpjqhx2mtuuJotPEUG51rGh6a9i2htrCDNaK\ni/t1a/l7rZv+ynPH14Gw43bE3F9S+jQlULVFC+qsU8sj9ihpDcSevHCuB6Tu\n/CjXZiYM8LUralR3O631OvlRAqWelts3ZC06xUJsLtrY87sfSTDmOXc7Lizr\ncl6iNRrfNWL322WzJ9C23ObUJRHQxY9KrxDHk1Vwf1PnQ6mI+4S0LMP/Yvpv\nnyupyGpZluaTC76rHbJhkL3gBrUZy79Oj7W6ZAxcBu95Dx3hIITeOQTVGd3l\nzHWn5PTsYfjCekPSNLMQxWB1HhhIcnruD5Tuo7QyADZZM8e2GivlPdjcd/CU\nBCpKmbQ+LahAffPT34SCn+8mzkvD0+p7MljIBpWocFhBjGpE8Xo9F4vmFss9\nM0OX6Lls7+Bb7CAihemrriorl+GpGLyNpa3uP2EDkAwYMGJzXVauV0wme+5/\nDN7F\r\n=lXMQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGoUa1GT4ems7by+qwIkYqHP/vr2w2+ycHdw2OSaDj19AiEAqWaqom8tWcpgePavg0hyiJ2PLFNHBoFCd9ZF3mZTZ5E="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-next.32_1629973088352_0.07042683887901147"},"_hasShrinkwrap":false},"4.0.0-rc.0":{"name":"@marblejs/middleware-multipart","version":"4.0.0-rc.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-rc.0","@marblejs/http":"^4.0.0-rc.0","@marblejs/testing":"^4.0.0-rc.0","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"208643c17d76a01d0a9cb304611d4474c4a3bff6","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-rc.0","_nodeVersion":"14.17.0","_npmVersion":"lerna/3.22.1/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-BesXQ11yM0EeIJ5/GLSAy+Pwf8GvqKjoHbE/8/BjazHIPoczZxF0IRLk6ec46KfcWREjWdMMcHdQ54mcXWB05Q==","shasum":"e7c291f748e228f6edd1aba0d1db0a97c7c2d63c","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-rc.0.tgz","fileCount":24,"unpackedSize":20300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ5vNCRA9TVsSAnZWagAAMSIP/iVBhUnvfB6asaoHBgRw\n5mgqtKN1Ibm0SNbGcc+vzRBcCLBkGL8EXSKk2bs04mBpXZrMkXYI8KkqAOXf\noEj3FXXd03Bp18qLWMiytXgOPg05epUJXwacs65+JRnErTqhMyDNviDv2khH\nkU9sR6hm9qo+BiSy2fRD6CWArz8kykWVF+ISUv7PoiXYMa5gMhB+YZydl8RE\nDPxRWcA68M9d/4/lUeaCk1fi81vOWMrX3doxnl20d9OnIINCtL06UfMEjK/U\nw8Sbp3Xn5cl3v/HnrjbAc7eOvdA6jFCasYhD4P/aF0ZtplpC2QJBfRQCuuE9\nac6qYnJSlIr/OE6LvSPN3tZ3CheSHc+tZOEIOfL1tYXXcOkdvxixm/6FUvPI\nNNDKm62xq6pzfDzAJ+6Kf3vGy+TTwZm7gqy52xJ0lsDk0HLEpKGJcFExC4zA\nWr183AwL01qv8ZvFw2SxpeBahCFRlt2Dm9jEkU6+QDUXBNGCj0YbHl7/8xPX\n9PmsZ4UIy0fbg01tBP1sDn3/1iBV01TXfNktxiOzSYEJfA3PrCa+RN6CH0Pl\nYnvkVXXioclwIKzqHRx6uophjXbPFKXVjMpqXsDdKlhDjd5KyZtQlPX2hjvj\nS/w7YaXYYb07iTs2hr0bB42okK0HS949q/hab8IvYReLvJrEsgI/ir7+avO4\nUE1r\r\n=kPx4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNcmg/yDGRr2WltyXmHc2rNExLFxkYU5LhGnzxEC8UBQIhAJL0XCydF8LU4lXZcPAS0vSO7SBCu8Is9xL+dY0BzcBb"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-rc.0_1629985741747_0.830620786654735"},"_hasShrinkwrap":false},"4.0.0-rc.1":{"name":"@marblejs/middleware-multipart","version":"4.0.0-rc.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","@marblejs/http":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-rc.1","@marblejs/http":"^4.0.0-rc.1","@marblejs/testing":"^4.0.0-rc.1","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"b94d738f1ee4cc9c3cf434575f6b5c219613c6cd","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-rc.1","_nodeVersion":"14.17.0","_npmVersion":"lerna/3.22.1/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-cpCWpx1M6nkyq4GQGg9B9lnWOqEz9R7pgMYi2PDDtxqRQgybEG371FChL8HQh3Bk5ae7c+B+a0W08pH/8dB1OA==","shasum":"72530b769aaeb34f8b079841124e561ed4611c95","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-rc.1.tgz","fileCount":24,"unpackedSize":20300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ51aCRA9TVsSAnZWagAA7ZsP/3NWyJPg82qAeiPVzFkU\nC2u08D4wQalhRFEaaAtHMqXiGAJPiB5sqLfA4pRDwxH0Vb0sY1/qDZB9gbX1\n2sFmTPPJIrzPzBO/ZskasSaxziPFOEN5Gm36Hii8xLyQhoh9zfJMjmmyDmJV\ntIGEKTWwFDmOAcPWHLf8V8JlAlPvOMc0Vs9GJ3scu+U+WmHSvsyRQ+MkTi+n\nIjyQtFHOhSxsNMLZWfYwBxdB3xBM893laVAnG/cc47Aa9xMRKNzLU3wtxYw4\n3hSueApgmT17gXtynwPpONWs8rtP4SdTkvYsXyCH4h2ql6W3CC+oklq2tkHu\nzcef62suMGQ3PX2fBIR/8+lNWhT9G9pgfVkLXPAMrwxqqn+vc0+1xp90G9o7\nPFy0BiEi/yosftTQss5S5mv/cGXXtR/+5oK5fajWHoW37OraJNir4rOuyo2M\n7Lch9yowExCNA6CA8dRJ2Z4DaFMJlzdH/5+H8DwdKj39YCAqFNvvlu73fAsr\nVpCGeSlRWrnF06LC7lpDhpnGU1QOkhfLAJGbBthRUdu5YQmglbnt4WnX3UpG\nxjJ5xGGxj+ypmoIBcK2359IHlxZnfIxJCk7mOpgObILCBtES1UwYx0H4D8Yt\nU4t31fFmhfW4UcOpmMG84HLWeBAH3SbL4Am/woX53uAHlAalseKy5v8WgM4z\nG9g2\r\n=ttlw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqhIJ0g37FqMs1/mLnOnLypY/P+oarZECgWmhqZAlALAiB5q8D80Z7s62X4ysgIF3E8auUyp7kaA2sFr8lohAZ0Gg=="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-rc.1_1629986138356_0.025216048499611343"},"_hasShrinkwrap":false},"4.0.0-rc.2":{"name":"@marblejs/middleware-multipart","version":"4.0.0-rc.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^4.0.0-rc.1","@marblejs/http":"^4.0.0-rc.1","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-rc.2","@marblejs/http":"^4.0.0-rc.2","@marblejs/testing":"^4.0.0-rc.2","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"086fe663a428304060a4d32872814bc329bee649","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-rc.2","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-yjnZRsiQENijTsl3d57lqUQv72iRMAMI0sXyZ9rqtw5paL1GTpBMLU3a4tXKwHokAZBshqyGUq3b8bXnWVGwyA==","shasum":"1f54a5217793ef99e68e5f1f580d376e068ab66b","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-rc.2.tgz","fileCount":24,"unpackedSize":20650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMN8jCRA9TVsSAnZWagAA9RgP/0J+eGorCirJBIIXg8lB\nQnB/5H8Xz/Uv/Tl9ObaPkxt3hFnRxVCKCjSqHaMeIlp5AuglshuYyX8Yuwkm\nrRZKlbl2npmTFchTK4u71QQkGt/uTAg2zoRPrmrGv6hLQl8qWqDNjsvEIWFu\nZkJJT4tY5jZBRkR4D5dJc/71IheTeHmubjcCdhIV4XO6uCKfrn6qwQL6T97Z\nzqkuHNF3vf+B8lCuwJqHbI/fPCYpqr33gsKnopoBcU4D5XwtmpS5R1OGOwUN\niGbPTICFVi+lYSIj7N4360rNvj2NOiTdXhaEcleHb3vPI86+IheGdB1H6WV0\nviLtCv3KEnZ+P+4F0sbEoB8v26pWQLxirW85xu4n0s+Zvvjx5MICbCqHwfTI\nAT6GHOtsV+3FT27jFmSrAZAJmsZgcQSFY2CoSXaFOSWklG+7bCNOpQRIsHLm\nu3RykbiadTqNVv6ic5mdbrR7eDDL6tyXR0e5PKuW0iuAYAg463QPF3WuGZb/\naHeeFr5N40F7GBLa0KdIw0rlV/3NEhkfB9B37LgXrhibpYhVL9pk56+JOWlh\n8n+4/UzIuwbxHi1zYQdvprqq+ShUYI9cruwfdCGJaF7mffqEDYbVpjZ8LH8g\nfAyAcMU3gM3n25Ah68Da05JVnkRM08u2u6RdW7BchrK+Scbg24sLDqVOvxin\nXL1T\r\n=xshY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPi/d2BRhmFsDQgTybg4Bjh72bJT7Sa5K1Z5CoCveZ+wIgL8Pb61XphCXHHzWP8qJZNFYkq2B/OcZwpZ3YfRdu+GY="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-rc.2_1630592803517_0.4281434534537023"},"_hasShrinkwrap":false},"4.0.0-rc.3":{"name":"@marblejs/middleware-multipart","version":"4.0.0-rc.3","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^4.0.0-rc.1","@marblejs/http":"^4.0.0-rc.1","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0-rc.3","@marblejs/http":"^4.0.0-rc.3","@marblejs/testing":"^4.0.0-rc.3","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"22ba0ffda1e118822ccad389edd416126732d210","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md","_id":"@marblejs/middleware-multipart@4.0.0-rc.3","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-/17DmzihAaEnc5AvQZYPCjSIlgMVPFmSn4rmsUYjuoGL5MwjbMMmZc69+0bpAGeR4l4EjhwkqCiGgXENt/7JOQ==","shasum":"5a94586354e2fd1997613f32037d9639ec420444","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0-rc.3.tgz","fileCount":24,"unpackedSize":20650,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEjPirJd1OrLN+kw2KemfgFj9bEDb6dqHKIf6D5JJQkWAiEAv3X+zsHNQZN9vn1R5HldsIG5xK7Gh6XUv1S8tJh3pC8="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0-rc.3_1632218073355_0.7800424807013673"},"_hasShrinkwrap":false},"4.0.0":{"name":"@marblejs/middleware-multipart","version":"4.0.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^4.0.0","@marblejs/http":"^4.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.0","@marblejs/http":"^4.0.0","@marblejs/testing":"^4.0.0","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"9b31236a0ba449baef646d9b041a292736aa6680","_id":"@marblejs/middleware-multipart@4.0.0","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-vU9I8k90AlwbbajiL5YzuaDAoBlPc9LPd2A/Bw3JAuDfm2iXtx3YLQD4ZzId++Vt5vzcogrM7lYZvtTnwC9mPg==","shasum":"4a3f8810d4beb257e59ced459c4cf04f2a348220","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.0.tgz","fileCount":24,"unpackedSize":20620,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGHK8olq5LLO2QPRoIwfeWhsiuljjg8XR2L4TKNEvoSqAiADtn6Yz0DHcwHX26BFn+gCsm/+8P6rlXJnHfWE9qm0Cg=="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.0_1633936036545_0.22816058503433712"},"_hasShrinkwrap":false},"3.5.2":{"name":"@marblejs/middleware-multipart","version":"3.5.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ../../jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^3.0.0","fp-ts":"^2.4.2","rxjs":"^6.5.3"},"devDependencies":{"@marblejs/core":"^3.5.2","@marblejs/testing":"^3.5.2","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"30583afd0178232cda67435c4fc8a652e14e5682","_id":"@marblejs/middleware-multipart@3.5.2","_nodeVersion":"14.17.0","_npmVersion":"lerna/3.22.1/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-dlkFHxlMDgA1yJKAEz6S9wFvZz4sMVU3AKl3PJULEblS5So9FLpil73kTcSo7eRtZ0mt/m5xn208VrnhvYCVFA==","shasum":"c485b05b2debe0dc691a587173236d2d00f826a4","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-3.5.2.tgz","fileCount":24,"unpackedSize":19748,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3Tcrsoq8eJh9BfocxMcoER09B0O492k6vhvSWRIuIcAIhAKCq+Hh2iBzDjXZoci+tv3lGOH0xnRMZ0HChu9F2Ew96"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_3.5.2_1634638454137_0.854638042662794"},"_hasShrinkwrap":false},"4.0.1":{"name":"@marblejs/middleware-multipart","version":"4.0.1","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@types/busboy":"^0.2.3","busboy":"~0.3.1"},"peerDependencies":{"@marblejs/core":"^4.0.0","@marblejs/http":"^4.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.1","@marblejs/http":"^4.0.1","@marblejs/testing":"^4.0.1","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"47d4163d2ebf92dcc89d6eb328cd9b8b31b0312b","_id":"@marblejs/middleware-multipart@4.0.1","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-KW434Bo+mG9lm9wF5CeSaZmBmN6sn2ButYBF6F/wCaUcfdGJ0rGyGMlHQ1Pv3EjaN4z1jKaQbPGANjJqsl62Fg==","shasum":"ea9dd01de14e3a680a01baa8babb87e4487fdaf9","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.1.tgz","fileCount":24,"unpackedSize":20620,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhQL/cvfhOqc/xeOWUYz7uDNcw2znSCk0oxZ1pEoLZmQIhALtPEAk0w3gB68hSXNuFWXdDbfTSyKb2j9wBGYA5uf6f"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.1_1634641483764_0.24279651498646593"},"_hasShrinkwrap":false},"4.0.2":{"name":"@marblejs/middleware-multipart","version":"4.0.2","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@fastify/busboy":"^1.0.0"},"peerDependencies":{"@marblejs/core":"^4.0.0","@marblejs/http":"^4.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.2","@marblejs/http":"^4.0.2","@marblejs/testing":"^4.0.2","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"b50c5d672081f06148f757970492c6296cbaff1d","_id":"@marblejs/middleware-multipart@4.0.2","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-hbmKuAOda9U8NIUdBrM4l3uTdBqVthpUL72FmLL34SvQFkz/NPutK1F0d18lgqXWz8NPVs4U2rrK3EVzpmf5vQ==","shasum":"1a21234ac4f39b235e0e0148844fef2158e1de38","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.2.tgz","fileCount":24,"unpackedSize":20614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsIY2CRA9TVsSAnZWagAAmaIP/1qzxllTXHz+HsHhMex/\n3JXnsmjA8Pvyt99e7RrJC2psZC1bt3uPHP+EsxS45K34x4iTT14GQKD0SRSS\nWQ6+5oqmJVZyNKUP7zAPFG/xCdQmCFTVkb03Xhej60GK6FnFhOIVvkLlkQlO\nkZBiHVFd6Xi0/lgrf4Y7OfN6fv4YeCWVmSWN6xhbu1naibV41wu4ZGU6KX66\nYnBldM95WRp3jILQY445bbxR5JC1PHfUYc4Ts19H/M8Y1NZSe7lyCWsx9nEQ\neBcZjaMUM5yXBFmoaiy+4y8RKNZXuGfohwL9RuKZWN1aFZfsedZ/DybiNdJ/\n3mk8R9FKiOfKuijxSZGWjYkWzA9iVp8/nMDXYhrql4VwFKAOyJ+zLRUFhUWQ\nWkkXAfgOQHTdLioiVt8/5YpyC/kI+I3bvxF+9MDP1nlwGW3KPNTX/XxKgZBN\nYgCEF9x9nENnKiveSgcZiQrRptRvE0s1pAioKdzlMz28GWe8/9BozNA0y+d7\nlcYymtMpvmPJ+Oz/SeOoxJ9NccsDiExmLJgDuQ7TuuQHyOBMSPAJYWSs6Hxn\nb+dVVV9k5NNY81Gw/TwtHirIlzXVD9fjK9e9NNBiK67iHSMgM6EN71QmPURK\n/ZHrUlDfgnqmEmpheTXlmaasc3E7rudqvVsz0rQLRcVQwIXl2mGfgaL2psr6\njVBD\r\n=JUGf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5fYYIgM8YacaD3FUwrCs4LBvk4moM9cCi7gcBxd0lpQIgfIUXzW85zd7gUx2Mee3gKL7pXL0vFeJTy7T1DkPzPJY="}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.2_1638958645881_0.42546469437586576"},"_hasShrinkwrap":false},"4.0.3":{"name":"@marblejs/middleware-multipart","version":"4.0.3","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@fastify/busboy":"^1.0.0"},"peerDependencies":{"@marblejs/core":"^4.0.0","@marblejs/http":"^4.0.0","fp-ts":"^2.4.2","rxjs":"^7.1.0"},"devDependencies":{"@marblejs/core":"^4.0.3","@marblejs/http":"^4.0.3","@marblejs/testing":"^4.0.3","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"51ece4f0a040be891edc9b8d2c120a671bd3a4db","_id":"@marblejs/middleware-multipart@4.0.3","_nodeVersion":"14.18.3","_npmVersion":"lerna/4.0.0/node@v14.18.3+x64 (darwin)","dist":{"integrity":"sha512-bSrHA4n5vnZ1TPojyzasrmHOZDZAE+mh9AmFT+9aV7JIZc7hvLU5FX7JJimlYkDhLRE2+1nj1p8VvEfEQLsOnw==","shasum":"46cade6030bfd3ab3a5f83cbd98aeab6f436cdbd","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.0.3.tgz","fileCount":24,"unpackedSize":20614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8pjECRA9TVsSAnZWagAA84MP/ArIFIhiXWInCEw9jl54\nOJPr2K6v50yNeBwNET8khHEsTQLRn0JVJu9e6oviFzUESt+rjQrbil/BQsDi\niRbAfz/uvE8yxv/vTHUdjBaok1j5XytqC8W6K6HKV4H13i+hvO23+K8AZ4Zq\nbVHfTviQnJ2sEe/67K5PySa32YOz5LnS6FUH/fLZzrp+Uq4zhmS3HpMNhQDf\nbpv3lKnzBNnGT4bCNquauvZZhEUN7xWszANb9mpR4z5cCsKFrJTxJBkb7aCD\nt+aXrMst8f0fvlJanommR85CcWGWSM5JoarX/yx5Ljg49PZkr93DnqUrWD+C\n2kXEj3Dtuk6fM0GUIvgKMHBaFjEJapSN4XUGI0u0vT23vpt+1VIFhefP8NcY\nFupR717UsilZHNQ7iF9sV4J8Xpedbnn3WHPVOh/VM85qM4pt9wUwAucHbNNP\nsWCKSFiYeuZRdJuZdYu1n6ip+GjmOgTpSLhrm2+ZCwC4cCrqk4d8pKkuqzlh\nN9z0zRRTQpxfUr72bXv5k5XCkOZT1ia/zl287RJJhU5h7OhE97eZwyicgIpe\nRCObdfSwsapPjWTeM80yu+aQLox9nr1EAvzFpsFWNubPeiWBhWsoDK1EXhz2\nX/ftYq+ZTLEs2j4ZDKhPj5UXT8Ta00iVu8LqNWdNJAaILjRO6ErlUynFIBLz\nq+X0\r\n=g9LZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdr3klJtVRaU26BymTm0sHwDBxgVAdQTVaRuUk+CIujAIhAIMCpZHp0x53mF5+e7F2ExISBkBXl2Wuvo3HKGjdo1AP"}]},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.0.3_1643288772275_0.8811087124214279"},"_hasShrinkwrap":false},"4.1.0":{"name":"@marblejs/middleware-multipart","version":"4.1.0","description":"A multipart/form-data middleware for Marble.js","main":"dist/index.js","types":"./dist/index.d.ts","scripts":{"start":"yarn watch","watch":"tsc -w","build":"tsc","test":"jest --config ./jest.config.js","clean":"rimraf dist"},"keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"engines":{"node":">= 8.0.0","yarn":">= 1.7.0","npm":">= 5.0.0"},"author":{"name":"marblejs"},"license":"MIT","bugs":{"url":"https://github.com/marblejs/marble/issues"},"homepage":"https://github.com/marblejs/marble#readme","dependencies":{"@fastify/busboy":"^1.0.0"},"peerDependencies":{"@marblejs/core":"^4.0.0","@marblejs/http":"^4.0.0","fp-ts":"^2.13.1","rxjs":"^7.5.7"},"devDependencies":{"@marblejs/core":"^4.1.0","@marblejs/http":"^4.1.0","@marblejs/testing":"^4.1.0","@types/form-data":"^2.5.0","form-data":"^3.0.0"},"publishConfig":{"access":"public"},"gitHead":"ba213fd0af85d65784fa4865ca7dacb16cbee303","_id":"@marblejs/middleware-multipart@4.1.0","_nodeVersion":"14.18.3","_npmVersion":"lerna/4.0.0/node@v14.18.3+x64 (darwin)","dist":{"integrity":"sha512-AFnaLBMaSOggbOuHj5i/yOs94IkAfWtAbr6k8adYLl2+z2YbDHAwyuLPQPM7PUtq4qhZDUKzJeBT3wyq6e96jQ==","shasum":"7dfa4c0e1add84d3eed3fe9ec949bbb8e9848a22","tarball":"https://registry.npmjs.org/@marblejs/middleware-multipart/-/middleware-multipart-4.1.0.tgz","fileCount":24,"unpackedSize":20639,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCB/hMi3xqpfH51Poj3K3NmyYFJ+YQtdp7mjbXcweqIhwIgCGc1KDRypoXyL/eRz4E2QlZnOjnQKbQ3YmFAT3wOsLU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkBb9uACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqwug/+NbNNLowObjon+9Bv7j8aNkHjkUa4RxuZ6Tkd9pytjKZyuwyz\r\nMWefQTx35wsNO6dV4wQMBwUj28X4KflLQvfaoyYWiKwJwOYPLtVn9n+8WhCB\r\nzhTD4GwNwrfxqtEgJY/8UZBwdbCylnhimsucLrBhZIUWcUefJ9UeK/xjk+V3\r\nmLRP0lz/rdDlM5G9K2WnARZg1BHbkyTbbpkC6TUdEcFje1JZ+BYRCaW48G0f\r\nIX7w1y0lPmDeBr8ITCUOPUo1pypoLdFsXz4/kxmvmLtr9bdL2xUnJWzvREJ3\r\nznL1GOQYO2vf3w5ofoC5Bbs8XMtj5vSuCLBeO2ZJZUzz9RZGfEiq6qTxsM8b\r\nog0kykw9cvAYSz5178wiyEcTrdepHOuk1+fJDM9uvqTAEz97rbjeXB5JS8Xe\r\noKC5XcF2SqWe0mQB4HL5K9lRhSMNU8wfk7IXa1gzzsNHtvxmiSDooGmsuOjz\r\npIeTXXv7rJ3FpoVwZe+K+dgXnjoika7w70of1Y7NEfxcED8IeA2ybnAEOBbZ\r\nLdwrE2kNA0qfcphRYtHBVMRNmhVDoBoV+rfx3Entgnc2KRpMmOVKm15NZcKb\r\nyc8b+JDJAKnvmZAsEUMV2fepkDtiFwy/WYEJKCS35I6JXUrmw7ufPv0xArTi\r\nmZ5xQ7W37099bv0Iep+bMqyF55AeDKYlU6U=\r\n=eFbU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jflakus","email":"hello@jflakus.com"},"directories":{},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware-multipart_4.1.0_1678098285980_0.9168667548715757"},"_hasShrinkwrap":false}},"time":{"created":"2019-06-25T06:38:29.881Z","2.3.0":"2019-06-25T06:38:30.057Z","modified":"2023-03-06T10:24:46.306Z","2.3.1":"2019-06-25T11:06:12.018Z","2.3.0-dev.21":"2019-07-03T12:13:28.555Z","2.3.0-dev.22":"2019-07-03T12:48:41.824Z","2.3.0-dev.23":"2019-07-03T13:41:52.231Z","2.4.0-dev.35":"2019-07-17T14:34:19.241Z","2.4.0-dev.36":"2019-07-18T06:29:05.626Z","2.4.0-dev.37":"2019-07-18T12:36:15.830Z","2.4.0-dev.42":"2019-07-19T06:43:10.663Z","2.4.0-dev.44":"2019-07-25T11:45:05.207Z","2.4.0-dev.45":"2019-07-25T21:11:42.466Z","2.4.0-dev.48":"2019-08-05T16:15:51.201Z","2.4.0-dev.51":"2019-08-28T13:10:44.255Z","3.0.0-next.63":"2019-10-12T22:25:25.930Z","3.0.0-next.64":"2019-10-12T22:40:06.068Z","3.0.0-next.66":"2019-10-13T21:11:58.853Z","3.0.0-next.68":"2019-10-13T21:39:06.622Z","3.0.0-next.69":"2019-10-15T19:18:08.034Z","3.0.0-next.70":"2019-10-23T10:41:04.693Z","3.0.0-next.71":"2019-10-29T19:24:55.323Z","3.0.0-next.72":"2019-10-30T15:02:43.284Z","3.0.0-next.73":"2019-11-04T12:15:12.341Z","3.0.0-next.74":"2019-11-07T10:30:54.542Z","3.0.0-next.75":"2019-11-11T21:02:57.024Z","3.0.0-next.76":"2019-11-20T20:22:15.962Z","3.0.0-next.77":"2019-11-26T09:30:48.627Z","3.0.0-next.78":"2019-11-26T14:53:36.342Z","3.0.0-next.80":"2019-12-04T19:42:22.360Z","3.0.0-next.81":"2019-12-06T09:03:51.475Z","3.0.0-next.82":"2019-12-11T22:15:14.822Z","3.0.0-next.83":"2019-12-13T13:14:52.435Z","3.0.0-next.84":"2019-12-16T18:01:36.791Z","3.0.0-next.87":"2019-12-25T17:39:28.720Z","3.0.0-next.88":"2019-12-30T16:51:33.757Z","3.0.0-next.89":"2019-12-31T16:22:35.469Z","3.0.0-next.90":"2020-01-02T10:43:47.314Z","3.0.0-next.91":"2020-01-03T13:33:40.144Z","3.0.0-next.92":"2020-01-06T21:50:28.695Z","3.0.0-next.94":"2020-01-09T07:16:54.825Z","3.0.0-next.96":"2020-01-09T10:15:13.518Z","3.0.0-next.97":"2020-01-09T11:13:13.362Z","3.0.0-next.98":"2020-01-09T13:30:39.719Z","3.0.0-next.101":"2020-01-14T12:15:07.392Z","3.0.0-next.105":"2020-01-16T21:10:15.959Z","3.0.0-next.106":"2020-01-17T14:37:35.785Z","3.0.0-rc.0":"2020-01-19T16:32:32.392Z","3.0.0-rc.1":"2020-01-20T08:17:59.976Z","3.0.0-rc.2":"2020-01-23T22:22:42.145Z","3.0.0-rc.3":"2020-01-24T20:36:32.938Z","3.0.0-rc.4":"2020-01-28T12:19:00.078Z","3.0.0-rc.5":"2020-02-05T18:27:34.411Z","3.0.0":"2020-02-29T20:45:49.527Z","3.0.1":"2020-03-06T13:16:19.586Z","3.0.2":"2020-03-19T10:03:13.384Z","3.1.0":"2020-04-29T19:18:20.976Z","3.1.1":"2020-05-03T17:20:31.820Z","3.1.2":"2020-05-27T16:33:03.768Z","3.2.0":"2020-06-08T15:24:11.915Z","3.2.1":"2020-06-14T20:05:49.828Z","3.3.0-dev.13":"2020-06-22T22:02:52.545Z","3.3.0-dev.14":"2020-06-23T07:14:06.080Z","3.3.0-dev.16":"2020-06-25T06:36:01.808Z","3.3.0-dev.17":"2020-06-25T10:29:28.547Z","3.3.0-dev.18":"2020-06-30T06:33:22.682Z","3.3.0-dev.19":"2020-06-30T08:45:47.059Z","3.3.0-dev.23":"2020-07-03T06:38:47.453Z","3.3.0-dev.24":"2020-07-03T09:47:29.377Z","3.3.0-dev.25":"2020-07-03T11:17:23.716Z","3.3.0-dev.26":"2020-07-03T11:57:55.213Z","3.3.0":"2020-07-07T06:48:31.485Z","3.4.0-dev.5":"2020-08-04T12:19:45.082Z","3.4.0-dev.6":"2020-08-05T06:28:39.057Z","3.4.0-dev.8":"2020-08-18T11:25:55.347Z","3.4.0":"2020-09-03T17:33:48.818Z","3.4.1":"2020-09-06T13:54:34.378Z","3.4.2-dev.3":"2020-09-17T13:30:56.741Z","3.4.2-dev.5":"2020-09-17T19:13:01.079Z","3.4.2-dev.6":"2020-09-17T22:21:44.435Z","3.4.2":"2020-09-18T07:14:50.274Z","3.4.3":"2020-09-22T16:50:07.145Z","3.4.4":"2020-11-13T07:41:17.217Z","3.4.5":"2020-11-18T09:53:00.587Z","3.4.6":"2020-12-01T14:07:05.348Z","3.4.7":"2020-12-04T14:48:02.566Z","3.4.8":"2021-01-05T14:13:08.459Z","3.4.9":"2021-01-27T13:25:17.316Z","3.5.0":"2021-05-10T10:26:23.781Z","4.0.0-next.0":"2021-06-15T07:56:24.833Z","4.0.0-next.2":"2021-06-15T13:45:52.808Z","4.0.0-next.8":"2021-06-16T08:50:50.769Z","4.0.0-next.9":"2021-06-16T09:23:40.913Z","4.0.0-next.11":"2021-06-17T07:52:37.809Z","4.0.0-next.13":"2021-06-24T13:33:00.423Z","4.0.0-next.14":"2021-06-29T13:00:10.657Z","4.0.0-next.15":"2021-07-01T08:03:07.177Z","4.0.0-next.17":"2021-07-13T11:06:39.373Z","3.5.1":"2021-08-09T09:54:40.243Z","4.0.0-next.16":"2021-08-09T10:23:00.164Z","4.0.0-next.19":"2021-08-11T07:53:34.463Z","4.0.0-next.20":"2021-08-11T08:22:48.520Z","4.0.0-next.21":"2021-08-11T10:20:56.119Z","4.0.0-next.22":"2021-08-18T12:14:43.356Z","4.0.0-next.25":"2021-08-19T09:40:13.106Z","4.0.0-next.26":"2021-08-24T09:34:14.959Z","4.0.0-next.27":"2021-08-24T13:54:05.577Z","4.0.0-next.28":"2021-08-25T06:58:11.803Z","4.0.0-next.32":"2021-08-26T10:18:08.521Z","4.0.0-rc.0":"2021-08-26T13:49:01.892Z","4.0.0-rc.1":"2021-08-26T13:55:38.503Z","4.0.0-rc.2":"2021-09-02T14:26:43.670Z","4.0.0-rc.3":"2021-09-21T09:54:33.473Z","4.0.0":"2021-10-11T07:07:16.689Z","3.5.2":"2021-10-19T10:14:14.248Z","4.0.1":"2021-10-19T11:04:43.918Z","4.0.2":"2021-12-08T10:17:26.021Z","4.0.3":"2022-01-27T13:06:12.447Z","4.1.0":"2023-03-06T10:24:46.140Z"},"maintainers":[{"name":"jflakus","email":"hello@jflakus.com"}],"description":"A multipart/form-data middleware for Marble.js","homepage":"https://github.com/marblejs/marble#readme","keywords":["marble.js","multipart","middleware","http","rxjs"],"repository":{"type":"git","url":"git+https://github.com/marblejs/marble.git"},"author":{"name":"marblejs"},"bugs":{"url":"https://github.com/marblejs/marble/issues"},"license":"MIT","readme":"<p align=\"center\">\n  <a href=\"https://marblejs.com\">\n    <img src=\"https://github.com/marblejs/marble/blob/master/assets/img/logo.png?raw=true\" width=\"200\" alt=\"Marble.js logo\"/>\n  </a>\n</p>\n\n# @marblejs/middleware-multipart\n\nA **multipart/form-data** middleware for [Marble.js](https://github.com/marblejs/marble) based on [busboy](https://github.com/mscdex/busboy) library.\n\n## Installation\n\n```\n$ npm i @marblejs/middleware-multipart\n```\nRequires `@marblejs/core` and `@marblejs/http` to be installed.\n\n## Documentation\n\nFor the latest updates, documentation, change log, and release information visit [docs.marblejs.com](https://docs.marblejs.com) and follow [@marble_js](https://twitter.com/marble_js) on Twitter.\n\n## Usage\n\n---\n\n**WARNING**: Make sure that you always handle the files that a user uploads. Never add it as a global middleware since a malicious user could upload files to a route that you didn't anticipate. Only use this it on routes where you are handling the uploaded files.\n\n---\n\nBy default middleware parses all incoming files and stores them in-memory.\n\n*Keep in mind that the middleware will parse only `POST` and `PATCH` request with multipart content-type.*\n\n```typescript\nimport { multipart$ } from '@marblejs/middleware-multipart';\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$(),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nYou can intercept incoming files and stream them to the different place, eg. to OS filesystem:\n\n```typescript\nimport { multipart$, StreamHandler } from '@marblejs/middleware-multipart';\n\nconst stream: StreamHandler = ({ file, fieldname }) => {\n  const destination = // ...\n  return of({ destination });\n};\n\nconst effect$ = r.pipe(\n  r.matchPath('/'),\n  r.matchType('POST'),\n  r.useEffect(req$ => req$.pipe(\n    multipart$({\n      stream,\n      maxFileCount: 1,\n      files: ['image_1'],\n    }),\n    map(req => ({ body: {\n      files: req.files['image_1'],  // file information\n      body: req.body,             // all incoming body fields\n    }}))\n  )));\n```\n\nEach file contains the following information:\n\n| key           | description |\n| ------------- | ----------- |\n| `fieldname`   | Field name specified in the form |\n| `filename`    | Name of the file on the user's computer |\n| `encoding`    | Encoding type of the file |\n| `mimetype`    | Mime type of the file |\n| `size`        | Size of the file in bytes |\n| `destination` | The place in which the file has been saved (*if not in-memory*) |\n| `buffer`      | A `Buffer` of the entire file |\n\nYou can define the following middleware options:\n\n| key             | description |\n| --------------- | ----------- |\n| `maxFileCount`  | The total count of files that can be sent |\n| `maxFieldCount` | The total count of fields that can be sent |\n| `maxFileSize`   | The max possible file size in bytes |\n| `files`         | An array of acceptable field names |\n| `stream`        | A handler which you can use to stream incoming files to different location |\n\nLicense: MIT\n","readmeFilename":"README.md"}