then-busboy
Advanced tools
Comparing version 4.4.0 to 5.0.0-beta.1
@@ -18,3 +18,3 @@ "use strict"; | ||
var _File = require("./File"); | ||
var _isFile = _interopRequireDefault(require("./util/isFile")); | ||
@@ -27,3 +27,3 @@ let _Symbol$iterator; | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
@@ -102,4 +102,4 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
if (!(newField instanceof _Field.default) && !(0, _File.isFile)(field)) { | ||
newField = new _Field.default(_objectSpread({}, field, { | ||
if (!(newField instanceof _Field.default) && !(0, _isFile.default)(field)) { | ||
newField = new _Field.default(_objectSpread(_objectSpread({}, field), {}, { | ||
value: newField | ||
@@ -139,4 +139,4 @@ })); | ||
if ((0, _File.isFile)(field)) { | ||
fd.set(name, field.stream, field.filename); | ||
if ((0, _isFile.default)(field)) { | ||
fd.set(name, field.stream(), field.filename); | ||
} else { | ||
@@ -150,2 +150,3 @@ fd.set(name, field.value); | ||
// TODO: Allow to apply fields as scalars | ||
this.__entries = _entries.slice(); | ||
@@ -171,3 +172,3 @@ } | ||
get fields() { | ||
return this.filter(field => (0, _File.isFile)(field) === false); | ||
return this.filter(field => (0, _isFile.default)(field) === false); | ||
} | ||
@@ -182,3 +183,3 @@ /** | ||
get files() { | ||
return this.filter(field => (0, _File.isFile)(field)); | ||
return this.filter(field => (0, _isFile.default)(field)); | ||
} | ||
@@ -185,0 +186,0 @@ |
123
lib/File.js
@@ -8,5 +8,5 @@ "use strict"; | ||
var _path = _interopRequireDefault(require("path")); | ||
var _path = require("path"); | ||
var _fs = _interopRequireDefault(require("fs")); | ||
var _fs = require("fs"); | ||
@@ -21,24 +21,6 @@ var _invariant = _interopRequireDefault(require("@octetstream/invariant")); | ||
let _Symbol$toStringTag; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
_Symbol$toStringTag = Symbol.toStringTag; | ||
class File { | ||
/** | ||
* Check if given values is a File | ||
* | ||
* @param {any} val | ||
* | ||
* @return {boolean} | ||
* | ||
* @api public | ||
*/ | ||
static isFile(value) { | ||
return value instanceof File; | ||
} | ||
/** | ||
* File class. | ||
@@ -52,45 +34,11 @@ * | ||
*/ | ||
constructor(options) { | ||
_defineProperty(this, "read", () => new Promise((resolve, reject) => { | ||
const data = []; | ||
const onReadable = () => { | ||
const ch = this.contents.read(); | ||
if (ch != null) { | ||
data.push(ch); | ||
} | ||
}; | ||
const onEnd = () => resolve(Buffer.concat(data)); | ||
this.contents.on("error", reject).on("readable", onReadable).on("end", onEnd); | ||
})); | ||
_defineProperty(this, "write", path => new Promise((resolve, reject) => { | ||
if (path && !(0, _isString.default)(path)) { | ||
return reject(new TypeError("Path must be a string.")); | ||
} // Prevent writing file to its source | ||
if (this.path === path) { | ||
return resolve(); | ||
} | ||
this.contents.on("error", reject).on("end", resolve).pipe(_fs.default.createWriteStream(path || this.path)); | ||
})); | ||
(0, _invariant.default)(!(0, _isPlainObject.default)(options), TypeError, "File options should be a plain object. Received", (0, _getType.default)(options)); | ||
const { | ||
contents, | ||
filename, | ||
path, | ||
enc, | ||
mime | ||
} = options; | ||
(0, _invariant.default)(!contents, "File contents required."); | ||
(0, _invariant.default)(!(contents instanceof _fs.default.ReadStream), TypeError, "Contents should be a ReadStream stream. Received %s", (0, _getType.default)(contents)); | ||
(0, _invariant.default)(!filename, "Filename required."); | ||
(0, _invariant.default)(!(0, _isString.default)(filename), TypeError, "Filename should be a string. Received %s", (0, _getType.default)(filename)); | ||
(0, _invariant.default)(!path, "Filename required."); | ||
(0, _invariant.default)(!(0, _isString.default)(path), TypeError, "Filename should be a string. Received %s", (0, _getType.default)(path)); | ||
(0, _invariant.default)(!enc, "File encoding required."); | ||
@@ -100,16 +48,11 @@ (0, _invariant.default)(!(0, _isString.default)(enc), TypeError, "File encoding should be a string. Received %s", (0, _getType.default)(enc)); | ||
(0, _invariant.default)(!(0, _isString.default)(mime), TypeError, "File mime type should be a string. Received %s", (0, _getType.default)(mime)); | ||
const ext = _path.default.extname(filename); | ||
const base = _path.default.basename(filename, ext); | ||
this.__contents = contents; | ||
this.__stream = contents; | ||
this.__filename = _path.default.basename(filename); | ||
this.__basename = base; | ||
this.__extname = ext; | ||
this.__mime = mime; | ||
this.__enc = enc; // this.__path = join(tmpdir(), `${nanoid()}_${this.filename}`) | ||
this.__path = filename; | ||
const ext = (0, _path.extname)(path); | ||
const base = (0, _path.basename)(path, ext); | ||
this.__stream = (0, _fs.createReadStream)(path); | ||
this.filename = (0, _path.basename)(path); | ||
this.basename = base; | ||
this.extname = ext; | ||
this.mime = mime; | ||
this.enc = enc; | ||
this.path = path; | ||
this.toJSON = this.toJSON.bind(this); | ||
@@ -119,41 +62,7 @@ this.inspect = this.inspect.bind(this); | ||
get contents() { | ||
return this.__contents; | ||
} | ||
get stream() { | ||
stream() { | ||
return this.__stream; | ||
} | ||
get filename() { | ||
return this.__filename; | ||
} | ||
get basename() { | ||
return this.__basename; | ||
} | ||
get extname() { | ||
return this.__extname; | ||
} | ||
get enc() { | ||
return this.__enc; | ||
} | ||
get mime() { | ||
return this.__mime; | ||
} | ||
get path() { | ||
return this.__path; | ||
} | ||
/** | ||
* Read file contents from a stream | ||
* | ||
* @return {Promise<Buffer>} | ||
*/ | ||
get [_Symbol$toStringTag]() { | ||
get [Symbol.toStringTag]() { | ||
return `File: ${this.filename}`; | ||
@@ -160,0 +69,0 @@ } |
@@ -30,5 +30,5 @@ "use strict"; | ||
try { | ||
value = restoreTypes ? (0, _restoreType.default)(value) : value; | ||
const path = (0, _getFieldPath.default)(fieldname); | ||
value = restoreTypes ? (0, _restoreType.default)(value) : value; | ||
cb(null, [path, new _Field.default({ | ||
const field = new _Field.default({ | ||
fieldname, | ||
@@ -40,3 +40,4 @@ value, | ||
mime | ||
})]); | ||
}); | ||
cb(null, [path, field]); | ||
} catch (err) { | ||
@@ -43,0 +44,0 @@ cb(err); |
@@ -8,9 +8,9 @@ "use strict"; | ||
var _os = _interopRequireDefault(require("os")); | ||
var _fs = require("fs"); | ||
var _fs = _interopRequireDefault(require("fs")); | ||
var _path = require("path"); | ||
var _path = _interopRequireDefault(require("path")); | ||
var _os = require("os"); | ||
var _nanoid = _interopRequireDefault(require("nanoid")); | ||
var _nanoid = require("nanoid"); | ||
@@ -35,12 +35,11 @@ var _File = _interopRequireDefault(require("../File")); | ||
const fieldPath = (0, _getFieldPath.default)(fieldname); | ||
filename = _path.default.join(_os.default.tmpdir(), `${(0, _nanoid.default)()}__${filename}`); | ||
const originalFilename = (0, _path.basename)(filename); | ||
filename = (0, _path.join)((0, _os.tmpdir)(), `${(0, _nanoid.nanoid)()}__${filename}`); | ||
function onEnd() { | ||
const contents = _fs.default.createReadStream(filename); | ||
const file = new _File.default({ | ||
filename, | ||
contents, | ||
enc, | ||
mime | ||
originalFilename, | ||
path: filename, | ||
mime, | ||
enc | ||
}); | ||
@@ -52,3 +51,3 @@ cb(null, [fieldPath, file]); | ||
stream.once("error", cb).once("end", onEnd).once("limit", onLimit).pipe(_fs.default.createWriteStream(filename)); | ||
stream.once("error", cb).once("end", onEnd).once("limit", onLimit).pipe((0, _fs.createWriteStream)(filename)); | ||
} catch (err) { | ||
@@ -55,0 +54,0 @@ return cb(err); |
@@ -47,7 +47,6 @@ "use strict"; | ||
restoreTypes: true | ||
/** | ||
* @api private | ||
*/ | ||
}; | ||
/** | ||
* @api private | ||
*/ | ||
@@ -54,0 +53,0 @@ const exec = ({ |
@@ -8,7 +8,9 @@ "use strict"; | ||
var _File = require("../File"); | ||
var _isFile = _interopRequireDefault(require("./isFile")); | ||
const normalizeFields = entries => entries.map(([path, field]) => [path, (0, _File.isFile)(field) ? field : field.value]); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const normalizeFields = entries => entries.map(([path, field]) => [path, (0, _isFile.default)(field) ? field : field.value]); | ||
var _default = normalizeFields; | ||
exports.default = _default; |
14
main.js
@@ -36,2 +36,8 @@ "use strict"; | ||
}); | ||
Object.defineProperty(exports, "isFile", { | ||
enumerable: true, | ||
get: function () { | ||
return _isFile.default; | ||
} | ||
}); | ||
Object.defineProperty(exports, "parse", { | ||
@@ -61,8 +67,2 @@ enumerable: true, | ||
}); | ||
Object.defineProperty(exports, "isFile", { | ||
enumerable: true, | ||
get: function () { | ||
return _File.isFile; | ||
} | ||
}); | ||
@@ -79,2 +79,4 @@ var _RequestEntityTooLargeError = _interopRequireDefault(require("./lib/error/RequestEntityTooLargeError")); | ||
var _isFile = _interopRequireDefault(require("./lib/util/isFile")); | ||
var _parse = _interopRequireDefault(require("./lib/parse")); | ||
@@ -81,0 +83,0 @@ |
{ | ||
"name": "then-busboy", | ||
"description": "Promise-based wrapper around Busboy. Processes multipart/form-data content and returns it as a single object.", | ||
"version": "4.4.0", | ||
"author": "Nick K. <nick.kruchinin@gmail.com>", | ||
"version": "5.0.0-beta.1", | ||
"author": "Nick K. <io@octetstream.me>", | ||
"license": "MIT", | ||
@@ -10,3 +10,3 @@ "repository": "octet-stream/then-busboy", | ||
"engines": { | ||
"node": ">=8 < 9 || >= 10 < 11 || >= 12" | ||
"node": ">= 10 < 11 || >= 12 < 13 || >= 14" | ||
}, | ||
@@ -62,31 +62,31 @@ "keywords": [ | ||
"busboy": "0.3.1", | ||
"formdata-node": "1.8.0", | ||
"formdata-node": "2.1.4", | ||
"lodash.merge": "4.6.2", | ||
"nanoid": "2.0.3", | ||
"nanoid": "3.1.9", | ||
"object-deep-from-entries": "0.3.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "7.5.5", | ||
"@babel/core": "7.5.5", | ||
"@babel/plugin-proposal-class-properties": "7.5.5", | ||
"@babel/plugin-proposal-decorators": "7.4.4", | ||
"@babel/plugin-proposal-export-default-from": "7.5.2", | ||
"@babel/plugin-proposal-object-rest-spread": "7.5.5", | ||
"@babel/plugin-transform-modules-commonjs": "7.5.0", | ||
"@octetstream/eslint-config": "3.1.0", | ||
"ava": "2.2.0", | ||
"babel-plugin-module-resolver": "3.2.0", | ||
"codecov": "3.5.0", | ||
"eslint": "6.1.0", | ||
"eslint-import-resolver-babel-module": "5.1.0", | ||
"eslint-plugin-ava": "7.1.0", | ||
"husky": "3.0.3", | ||
"lint-staged": "9.2.1", | ||
"nyc": "14.1.1", | ||
"@babel/cli": "7.10.1", | ||
"@babel/core": "7.10.2", | ||
"@babel/plugin-proposal-class-properties": "7.10.1", | ||
"@babel/plugin-proposal-decorators": "7.10.1", | ||
"@babel/plugin-proposal-export-default-from": "7.10.1", | ||
"@babel/plugin-proposal-object-rest-spread": "7.10.1", | ||
"@babel/plugin-transform-modules-commonjs": "7.10.1", | ||
"@octetstream/eslint-config": "4.0.0", | ||
"ava": "3.8.2", | ||
"babel-plugin-module-resolver": "4.0.0", | ||
"codecov": "3.7.0", | ||
"eslint": "7.1.0", | ||
"eslint-import-resolver-babel-module": "5.1.2", | ||
"eslint-plugin-ava": "10.3.0", | ||
"husky": "4.2.5", | ||
"lint-staged": "10.2.8", | ||
"nyc": "15.1.0", | ||
"promise-fs": "2.1.1", | ||
"proxyquire": "2.1.2", | ||
"rimraf": "2.6.3", | ||
"sinon": "7.4.1", | ||
"proxyquire": "2.1.3", | ||
"rimraf": "3.0.2", | ||
"sinon": "9.0.2", | ||
"supertest": "4.0.2" | ||
} | ||
} |
@@ -87,3 +87,3 @@ # then-busboy | ||
// Cleanup files | ||
return Promise.all(Array.from(body.files().values()).map(unlinkFile)) | ||
return Promise.all(Array.from(body.files.values()).map(unlinkFile)) | ||
.catch(err => err.code !== "ENOENT" && Promise.reject(err)) | ||
@@ -90,0 +90,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
59
65037
1502
2
+ Added@babel/runtime@7.9.6(transitive)
+ Addedformdata-node@2.1.4(transitive)
+ Addedmime-db@1.44.0(transitive)
+ Addedmime-types@2.1.27(transitive)
+ Addednanoid@3.1.9(transitive)
- Removed@babel/runtime-corejs3@7.4.5(transitive)
- Removed@octetstream/promisify@2.0.2(transitive)
- Removedcore-js-pure@3.40.0(transitive)
- Removedformdata-node@1.8.0(transitive)
- Removedmime-db@1.40.0(transitive)
- Removedmime-types@2.1.24(transitive)
- Removednanoid@2.0.3(transitive)
- Removedpromise-fs@2.1.1(transitive)
Updatedformdata-node@2.1.4
Updatednanoid@3.1.9