New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

then-busboy

Package Overview
Dependencies
Maintainers
1
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

then-busboy - npm Package Compare versions

Comparing version 4.4.0 to 5.0.0-beta.1

lib/util/isFile.js

17

lib/Body.js

@@ -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 @@

@@ -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;

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc