Socket
Socket
Sign inDemoInstall

formdata-node

Package Overview
Dependencies
Maintainers
1
Versions
76
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

formdata-node - npm Package Compare versions

Comparing version 2.2.2 to 2.3.0

590

lib/FormData.js

@@ -1,64 +0,41 @@

"use strict";
const {Readable} = require("stream")
const {inspect} = require("util")
const {basename} = require("path")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
const mimes = require("mime-types")
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const getStreamIterator = require("./util/getStreamIterator.js")
const getLength = require("./util/getLength.js")
const isObject = require("./util/isObject.js")
const isStream = require("./util/isStream.js")
const boundary = require("./util/boundary.js")
// const readOnly = require("./util/readOnly.js")
const isBlob = require("./util/isBlob.js")
const toFile = require("./util/toFile.js")
var _initializerDefineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerDefineProperty"));
const {isBuffer} = Buffer
const {isArray} = Array
const {freeze} = Object
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
/**
* @const DEFAULT_CONTENT_TYPE
*
* @type {"application/octet-stream"}
*/
const DEFAULT_CONTENT_TYPE = "application/octet-stream"
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
/**
* @const DASHES
*
* @type{"--"}
*/
const DASHES = "-".repeat(2)
var _initializerWarningHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerWarningHelper"));
/**
* @const CARRIAGE
*
* @type {"\r\n"}
*/
const CARRIAGE = "\r\n"
var _stream = _interopRequireDefault(require("stream"));
var _util = _interopRequireDefault(require("util"));
var _path = _interopRequireDefault(require("path"));
var _mimeTypes = _interopRequireDefault(require("mime-types"));
var _getStreamIterator = _interopRequireDefault(require("./util/getStreamIterator"));
var _getLength = _interopRequireDefault(require("./util/getLength"));
var _isObject = _interopRequireDefault(require("./util/isObject"));
var _isStream = _interopRequireDefault(require("./util/isStream"));
var _boundary = _interopRequireDefault(require("./util/boundary"));
var _readOnly = _interopRequireDefault(require("./util/readOnly"));
var _isBlob = _interopRequireDefault(require("./util/isBlob"));
var _toFile = _interopRequireDefault(require("./util/toFile"));
let _Symbol$toStringTag, _Symbol$iterator, _Symbol$asyncIterator, _inspect$custom;
var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _temp;
const {
isBuffer
} = Buffer;
const {
isArray
} = Array;
const {
freeze
} = Object;
const {
Readable
} = _stream.default;
const {
inspect
} = _util.default;
const {
basename
} = _path.default;
/**

@@ -75,60 +52,4 @@ * @typedef {Object} FieldOptions

*/
let FormData = (_class = (_temp = (_Symbol$toStringTag = Symbol.toStringTag, _Symbol$iterator = Symbol.iterator, _Symbol$asyncIterator = Symbol.asyncIterator, _inspect$custom = inspect.custom, class FormData {
class FormData {
/**
* Generates a new boundary string once FormData instance constructed
*
* @type {string}
*
* @public
* @property
* @readonly
*/
/**
* Returns headers for multipart/form-data
*
* @type {{"Content-Type": string}}
*
* @public
* @property
* @readonly
*/
/**
* @type {string}
*
* @private
* @property
* @readonly
*/
/**
* @type {string}
*
* @private
* @readonly
*/
/**
* @type {string}
*
* @private
* @readonly
*/
/**
* @type {string}
*
* @private
* @readonly
*/
/**
* @type {Map<string, {append: boolean, values: Array<{value: any, filename: string}>}>}
*
* @private
*/
/**
* Refers to the internal Readable stream

@@ -143,4 +64,5 @@ *

get stream() {
return Readable.from(this.__read());
return Readable.from(this.__read())
}
/**

@@ -151,7 +73,6 @@ * Returns a string representation of the FormData

*/
get [Symbol.toStringTag]() {
return "FormData"
}
get [_Symbol$toStringTag]() {
return "FormData";
}
/**

@@ -163,18 +84,61 @@ * @param {Array<{name: string, value: any, filename?: string, options?: FieldOptions}>} [fields] – an optional FormData initial fields.

*/
constructor(fields = null) {
/**
* Generates a new boundary string once FormData instance constructed
*
* @type {string}
*
* @public
* @property
* @readonly
*/
this.boundary = `NodeJSFormDataStreamBoundary${boundary()}`
/**
* Returns headers for multipart/form-data
*
* @type {{"Content-Type": string}}
*
* @public
* @property
* @readonly
*/
this.headers = freeze({
"Content-Type": `multipart/form-data; boundary=${this.boundary}`
})
constructor(fields = null) {
(0, _initializerDefineProperty2.default)(this, "boundary", _descriptor, this);
(0, _initializerDefineProperty2.default)(this, "headers", _descriptor2, this);
(0, _initializerDefineProperty2.default)(this, "__carriage", _descriptor3, this);
(0, _initializerDefineProperty2.default)(this, "__dashes", _descriptor4, this);
(0, _initializerDefineProperty2.default)(this, "__footer", _descriptor5, this);
(0, _initializerDefineProperty2.default)(this, "__defaultContentType", _descriptor6, this);
(0, _initializerDefineProperty2.default)(this, "__content", _descriptor7, this);
(0, _defineProperty2.default)(this, "inspect", this[inspect.custom]);
/**
* @type {Map<string, {append: boolean, values: Array<{value: any, filename: string}>}>}
*
* @private
* @readonly
* @property
*/
this.__content = new Map()
/**
* @type {string}
*
* @private
* @readonly
* @property
*/
this.__footer = `${DASHES}${this.boundary}${DASHES}`
+ `${CARRIAGE.repeat(2)}`
/**
* Alias of the FormData#[util.inspect.custom]()
*
* @return {string}
*
* @public
* @method
*/
this.inspect = this[inspect.custom]
if (isArray(fields)) {
this.__appendFromInitialFields(fields);
this.__appendFromInitialFields(fields)
}
}
/**

@@ -190,7 +154,6 @@ * Returns a mime type by field's filename

*/
__getMime(filename) {
return _mimeTypes.default.lookup(filename) || this.__defaultContentType;
return mimes.lookup(filename) || DEFAULT_CONTENT_TYPE
}
/**

@@ -207,16 +170,16 @@ * Returns a headers for given field's data

*/
__getHeader(name, filename) {
let header = ""
header += `${DASHES}${this.boundary}${CARRIAGE}`
header += `Content-Disposition: form-data; name="${name}"`
__getHeader(name, filename) {
let header = "";
header += `${this.__dashes}${this.boundary}${this.__carriage}`;
header += `Content-Disposition: form-data; name="${name}"`;
if (filename) {
header += `; filename="${filename}"${this.__carriage}`;
header += `Content-Type: ${this.__getMime(filename)}`;
header += `; filename="${filename}"${CARRIAGE}`
header += `Content-Type: ${this.__getMime(filename)}`
}
return `${header}${this.__carriage.repeat(2)}`;
return `${header}${CARRIAGE.repeat(2)}`
}
/**

@@ -232,32 +195,26 @@ * Get each field from internal Map

*/
async *__getField() {
for (const [name, {
values
}] of this.__content) {
for (const {
value,
filename
} of values) {
async* __getField() {
for (const [name, {values}] of this.__content) {
for (const {value, filename} of values) {
// Set field's header
yield this.__getHeader(name, filename);
yield this.__getHeader(name, filename)
if ((0, _isBlob.default)(value)) {
yield* (0, _getStreamIterator.default)(value.stream());
} else if ((0, _isStream.default)(value)) {
if (isBlob(value)) {
yield* getStreamIterator(value.stream())
} else if (isStream(value)) {
// Read the stream content
yield* (0, _getStreamIterator.default)(value);
yield* getStreamIterator(value)
} else {
yield value;
} // Add trailing carriage
yield value
}
yield this.__carriage;
// Add trailing carriage
yield CARRIAGE
}
} // Add a footer when all fields ended
}
// Add a footer when all fields ended
yield this.__footer
}
yield this.__footer;
}
/**

@@ -271,9 +228,8 @@ * Read values from internal storage and push it to the internal stream

*/
async *__read() {
async* __read() {
for await (const ch of this.__getField()) {
yield isBuffer(ch) ? ch : Buffer.from(String(ch));
yield isBuffer(ch) ? ch : Buffer.from(String(ch))
}
}
/**

@@ -289,11 +245,10 @@ * Append initial fields

*/
__appendFromInitialFields(fields) {
for (const field of fields) {
if ((0, _isObject.default)(field) && !isArray(field)) {
this.append(field.name, field.value, field.filename, field.options);
if (isObject(field) && !isArray(field)) {
this.append(field.name, field.value, field.filename, field.options)
}
}
}
/**

@@ -322,83 +277,82 @@ * Appends a new value onto an existing key inside a FormData object,

*/
__setField(name, value, filename, options, append, argsLength) {
const fieldName = String(name);
const methodName = append ? "append" : "set";
const fieldName = String(name)
const methodName = append ? "append" : "set"
if ((0, _isObject.default)(filename)) {
[options, filename] = [filename, undefined];
} // FormData required at least 2 arguments to be set.
if (isObject(filename)) {
[options, filename] = [filename, undefined]
}
// FormData required at least 2 arguments to be set.
if (argsLength < 2) {
throw new TypeError(
`Failed to execute '${methodName}' on 'FormData': ` +
`2 arguments required, but only ${argsLength} present.`
)
}
if (argsLength < 2) {
throw new TypeError(`Failed to execute '${methodName}' on 'FormData': ` + `2 arguments required, but only ${argsLength} present.`);
} // FormData requires the second argument to be some kind of binary data
// FormData requires the second argument to be some kind of binary data
// when a filename has been set.
if (filename && !(isBlob(value) || isStream(value) || isBuffer(value))) {
throw new TypeError(
`Failed to execute '${methodName}' on 'FormData': ` +
"parameter 2 is not one of the following types: ",
"ReadableStream | ReadStream | Readable | Buffer | File | Blob"
)
}
if (filename && !((0, _isBlob.default)(value) || (0, _isStream.default)(value) || isBuffer(value))) {
throw new TypeError(`Failed to execute '${methodName}' on 'FormData': ` + "parameter 2 is not one of the following types: ", "ReadableStream | ReadStream | Readable | Buffer | File | Blob");
} // Get a filename for Buffer, Blob, File, ReadableStream and Readable values
// Get a filename for Buffer, Blob, File, ReadableStream and Readable values
if (isBuffer(value) && filename) {
filename = basename(filename);
} else if ((0, _isBlob.default)(value)) {
filename = basename(value.name || filename || (value.constructor.name === "Blob" ? "blob" : String(value.name)));
} else if ((0, _isStream.default)(value) && (value.path || filename)) {
filename = basename(filename)
} else if (isBlob(value)) {
filename = basename(
value.name
|| filename
|| (value.constructor.name === "Blob" ? "blob" : String(value.name))
)
} else if (isStream(value) && (value.path || filename)) {
// Readable stream which created from fs.createReadStream
// have a "path" property. So, we can get a "filename"
// from the stream itself.
filename = basename(value.path || filename);
} // Normalize field content
filename = basename(value.path || filename)
}
if ((0, _isStream.default)(value)) {
// Normalize field content
if (isStream(value)) {
if (options.size != null) {
value = (0, _toFile.default)(value, filename || name || options.filename, options);
value = toFile(value, filename || name || options.filename, options)
}
} else if ((0, _isBlob.default)(value) || isBuffer(value)) {
value = (0, _toFile.default)(value, filename || name || options.filename, options);
} else if (isBlob(value) || isBuffer(value)) {
value = toFile(value, filename || name || options.filename, options)
} else {
value = String(value);
value = String(value)
}
const field = this.__content.get(fieldName); // Set a new field if given name is not exists
const field = this.__content.get(fieldName)
// Set a new field if given name is not exists
if (!field) {
return void this.__content.set(fieldName, {
append,
values: [{
value,
filename
}]
});
} // Replace a value of the existing field if "set" called
append, values: [{value, filename}]
})
}
// Replace a value of the existing field if "set" called
if (!append) {
return void this.__content.set(fieldName, {
append,
values: [{
value,
filename
}]
});
} // Do nothing if the field has been created from .set()
append, values: [{value, filename}]
})
}
// Do nothing if the field has been created from .set()
if (!field.append) {
return undefined;
} // Append a new value to the existing field
return undefined
}
// Append a new value to the existing field
field.values.push({value, filename})
field.values.push({
value,
filename
});
this.__content.set(fieldName, field)
}
this.__content.set(fieldName, field);
}
/**

@@ -414,29 +368,26 @@ * Returns computed length of the FormData content.

*/
async getComputedLength() {
let length = 0
const carriageLength = Buffer.from(CARRIAGE).length
async getComputedLength() {
let length = 0;
const carriageLength = Buffer.from(this.__carriage).length;
for (const [name, {values}] of this.__content) {
for (const {value, filename} of values) {
length += Buffer.from(this.__getHeader(name, filename)).length
for (const [name, {
values
}] of this.__content) {
for (const {
value,
filename
} of values) {
length += Buffer.from(this.__getHeader(name, filename)).length;
const valueLength = await (0, _getLength.default)(value); // Return `undefined` if can't tell field's length
const valueLength = await getLength(value)
// Return `undefined` if can't tell field's length
// (it's probably a stream with unknown length)
if (valueLength == null) {
return undefined;
return undefined
}
length += Number(valueLength) + carriageLength;
length += Number(valueLength) + carriageLength
}
}
return length + Buffer.from(this.__footer).length;
return length + Buffer.from(this.__footer).length
}
/**

@@ -464,7 +415,8 @@ * Appends a new value onto an existing key inside a FormData object,

*/
append(name, value, filename = undefined, options = {}) {
return this.__setField(name, value, filename, options, true, arguments.length);
return this.__setField(
name, value, filename, options, true, arguments.length
)
}
/**

@@ -492,7 +444,8 @@ * Set a new value for an existing key inside FormData,

*/
set(name, value, filename = undefined, options = {}) {
return this.__setField(name, value, filename, options, false, arguments.length);
return this.__setField(
name, value, filename, options, false, arguments.length
)
}
/**

@@ -508,7 +461,6 @@ * Check if a field with the given name exists inside FormData.

*/
has(name) {
return this.__content.has(name);
return this.__content.has(name)
}
/**

@@ -522,13 +474,12 @@ * Returns the first value associated with the given name.

*/
get(name) {
const field = this.__content.get(String(name));
const field = this.__content.get(String(name))
if (!field) {
return undefined;
return undefined
}
return field.values[0].value;
return field.values[0].value
}
/**

@@ -542,11 +493,8 @@ * Returns all the values associated with

*/
getAll(name) {
const field = this.__content.get(String(name));
const field = this.__content.get(String(name))
return field ? Array.from(field.values, ({
value
}) => value) : [];
return field ? Array.from(field.values, ({value}) => value) : []
}
/**

@@ -559,49 +507,45 @@ * Deletes a key and its value(s) from a FormData object.

*/
delete(name) {
this.__content.delete(String(name));
this.__content.delete(String(name))
}
/**
* @return {IterableIterator<string>}
*/
*keys() {
* keys() {
for (const key of this.__content.keys()) {
yield key;
yield key
}
}
/**
* @return {IterableIterator<[string, any]>}
*/
*entries() {
* entries() {
for (const name of this.keys()) {
const values = this.getAll(name); // Yield each value of a field, like browser-side FormData does.
const values = this.getAll(name)
// Yield each value of a field, like browser-side FormData does.
for (const value of values) {
yield [name, value];
yield [name, value]
}
}
}
/**
* @return {IterableIterator<any>}
*/
*values() {
* values() {
for (const [, values] of this) {
yield values;
yield values
}
}
/**
* @return {IterableIterator<[string, any]>}
*/
[Symbol.iterator]() {
return this.entries()
}
[_Symbol$iterator]() {
return this.entries();
}
/**

@@ -621,9 +565,8 @@ * Executes a given callback for each field of the FormData instance

*/
forEach(fn, ctx = null) {
for (const [name, value] of this) {
fn.call(ctx, value, name, this);
fn.call(ctx, value, name, this)
}
}
/**

@@ -639,17 +582,6 @@ * This method allows to read a content from internal stream

*/
[_Symbol$asyncIterator]() {
return this.stream[Symbol.asyncIterator]();
[Symbol.asyncIterator]() {
return this.stream[Symbol.asyncIterator]()
}
/**
* Alias of the FormData#[util.inspect.custom]()
*
* @return {string}
*
* @public
* @method
*/
/**

@@ -664,4 +596,5 @@ * Returns a string representation of the FormData

toString() {
return "[object FormData]";
return "[object FormData]"
}
/**

@@ -673,63 +606,8 @@ * @type {string}

*/
[_inspect$custom]() {
return "FormData";
[inspect.custom]() {
return "FormData"
}
}
}), _temp), (_descriptor = (0, _applyDecoratedDescriptor2.default)(_class.prototype, "boundary", [_readOnly.default], {
configurable: true,
enumerable: true,
writable: true,
initializer: function () {
return `NodeJSFormDataStreamBoundary${(0, _boundary.default)()}`;
}
}), _descriptor2 = (0, _applyDecoratedDescriptor2.default)(_class.prototype, "headers", [_readOnly.default], {
configurable: true,
enumerable: true,
writable: true,
initializer: function () {
return freeze({
"Content-Type": `multipart/form-data; boundary=${this.boundary}`
});
}
}), _descriptor3 = (0, _applyDecoratedDescriptor2.default)(_class.prototype, "__carriage", [_readOnly.default], {
configurable: true,
enumerable: true,
writable: true,
initializer: function () {
return "\r\n";
}
}), _descriptor4 = (0, _applyDecoratedDescriptor2.default)(_class.prototype, "__dashes", [_readOnly.default], {
configurable: true,
enumerable: true,
writable: true,
initializer: function () {
return "-".repeat(2);
}
}), _descriptor5 = (0, _applyDecoratedDescriptor2.default)(_class.prototype, "__footer", [_readOnly.default], {
configurable: true,
enumerable: true,
writable: true,
initializer: function () {
return `${this.__dashes}${this.boundary}${this.__dashes}` + `${this.__carriage.repeat(2)}`;
}
}), _descriptor6 = (0, _applyDecoratedDescriptor2.default)(_class.prototype, "__defaultContentType", [_readOnly.default], {
configurable: true,
enumerable: true,
writable: true,
initializer: function () {
return "application/octet-stream";
}
}), _descriptor7 = (0, _applyDecoratedDescriptor2.default)(_class.prototype, "__content", [_readOnly.default], {
configurable: true,
enumerable: true,
writable: true,
initializer: function () {
return new Map();
}
})), _class);
var _default = FormData;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = FormData
module.exports.default = FormData

@@ -1,12 +0,3 @@

"use strict";
const {randomBytes} = require("crypto")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _crypto = _interopRequireDefault(require("crypto"));
/**

@@ -17,7 +8,4 @@ * @api private

*/
const boundary = () => _crypto.default.randomBytes(16).toString("hex");
const boundary = () => randomBytes(16).toString("hex")
var _default = boundary;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = boundary

@@ -1,81 +0,62 @@

"use strict";
const {Readable} = require("stream")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
const mime = require("mime-types")
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const getStreamIterator = require("./getStreamIterator")
const isBlob = require("./isBlob")
var _stream = _interopRequireDefault(require("stream"));
const {isBuffer} = Buffer
var _mimeTypes = _interopRequireDefault(require("mime-types"));
var _getStreamIterator = _interopRequireDefault(require("./getStreamIterator"));
var _isBlob = _interopRequireDefault(require("./isBlob"));
const {
isBuffer
} = Buffer;
const {
Readable
} = _stream.default;
/**
* @api private
*/
class File {
constructor(content, name, options = {}) {
this.name = name;
this.type = options.type || _mimeTypes.default.lookup(name) || "";
this.size = options.size || 0;
this.lastModified = options.lastModified || Date.now();
this.__content = content;
this.name = name
this.type = options.type || mime.lookup(name) || ""
this.size = options.size || 0
this.lastModified = options.lastModified || Date.now()
this.__content = content
}
stream() {
const content = this.__content;
const content = this.__content
if ((0, _isBlob.default)(content)) {
return content.stream();
if (isBlob(content)) {
return content.stream()
}
if (isBuffer(content)) {
const readable = new Readable({
read() {}
const readable = new Readable({read() { }})
});
readable.push(content);
readable.push(null);
return readable;
readable.push(content)
readable.push(null)
return readable
}
return content;
return content
}
async arrayBuffer() {
const iterable = (0, _getStreamIterator.default)(this.stream());
const chunks = [];
const iterable = getStreamIterator(this.stream())
const chunks = []
for await (const chunk of iterable) {
chunks.push(chunk);
chunks.push(chunk)
}
return Buffer.concat(chunks).buffer;
return Buffer.concat(chunks).buffer
}
toString() {
return "[object File]";
return "[object File]"
}
get [Symbol.toStringTag]() {
return "File";
return "File"
}
}
var _default = File;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = File

@@ -1,24 +0,10 @@

"use strict";
const {promises: fs} = require("fs")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
const isReadStream = require("./isReadStream")
const isStream = require("./isStream")
const isBlob = require("./isBlob")
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const {isBuffer} = Buffer
const {stat} = fs
var _fs = _interopRequireDefault(require("fs"));
var _isReadStream = _interopRequireDefault(require("./isReadStream"));
var _isStream = _interopRequireDefault(require("./isStream"));
var _isBlob = _interopRequireDefault(require("./isBlob"));
const {
isBuffer
} = Buffer;
const {
stat
} = _fs.default.promises;
/**

@@ -33,28 +19,22 @@ * Get lenght of given value (in bytes)

*/
async function getLength(value) {
if ((0, _isStream.default)(value)) {
if (!(0, _isReadStream.default)(value)) {
return undefined;
if (isStream(value)) {
if (!isReadStream(value)) {
return undefined
}
return stat(value.path).then(({
size
}) => size);
return stat(value.path).then(({size}) => size)
}
if (isBuffer(value)) {
return value.length;
return value.length
}
if ((0, _isBlob.default)(value)) {
return value.size;
if (isBlob(value)) {
return value.size
}
return Buffer.from(String(value)).length;
return Buffer.from(String(value)).length
}
var _default = getLength;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = getLength

@@ -1,14 +0,4 @@

"use strict";
const readableStreamIterator = require("./readableStreamIterator")
const isWHATWGReadable = require("./isWHATWGReadable")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _readableStreamIterator = _interopRequireDefault(require("./readableStreamIterator"));
var _isWHATWGReadable = _interopRequireDefault(require("./isWHATWGReadable"));
/**

@@ -24,12 +14,9 @@ * Returns stream iterator for given stream-like object

function getStreamIterator(value) {
if ((0, _isWHATWGReadable.default)(value)) {
return (0, _readableStreamIterator.default)(value.getReader());
if (isWHATWGReadable(value)) {
return readableStreamIterator(value.getReader())
}
return value;
return value
}
var _default = getStreamIterator;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = getStreamIterator

@@ -1,8 +0,12 @@

"use strict";
const basicTypes = [
"null",
"number",
"object",
"array",
"string",
"function",
"undefined",
"boolean"
]
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const basicTypes = ["null", "number", "object", "array", "string", "function", "undefined", "boolean"];
/**

@@ -17,16 +21,12 @@ * Get a string with type name of the given value

*/
function getType(val) {
const type = Object.prototype.toString.call(val).slice(8, -1);
const type = Object.prototype.toString.call(val).slice(8, -1)
if (basicTypes.includes(type.toLowerCase())) {
return type.toLowerCase();
return type.toLowerCase()
}
return type;
return type
}
var _default = getType;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = getType

@@ -1,17 +0,7 @@

"use strict";
const isFunction = require("./isFunction")
const isString = require("./isString")
const isObject = require("./isObject")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
const names = ["Blob", "File"]
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isFunction = _interopRequireDefault(require("./isFunction"));
var _isString = _interopRequireDefault(require("./isString"));
var _isObject = _interopRequireDefault(require("./isObject"));
const names = ["Blob", "File"];
/**

@@ -26,8 +16,12 @@ * Check if given valie is Blob or File -like object

*/
const isBlob = value => (
isObject(value)
&& isString(value.type)
&& isFunction(value.arrayBuffer)
&& isFunction(value.stream)
&& isFunction(value.constructor)
&& names.includes(value[Symbol.toStringTag] || value.constructor.name)
&& "size" in value
)
const isBlob = value => (0, _isObject.default)(value) && (0, _isString.default)(value.type) && (0, _isFunction.default)(value.arrayBuffer) && (0, _isFunction.default)(value.stream) && (0, _isFunction.default)(value.constructor) && names.includes(value[Symbol.toStringTag] || value.constructor.name) && "size" in value;
var _default = isBlob;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isBlob

@@ -1,16 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/**
* @api private
*/
const isFunction = value => typeof value === "function";
const isFunction = value => typeof value === "function"
var _default = isFunction;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isFunction

@@ -1,16 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/**
* @api private
*/
const isObject = value => typeof value === "object" && value !== null;
const isObject = value => typeof value === "object" && value !== null
var _default = isObject;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isObject

@@ -1,20 +0,8 @@

"use strict";
const {Readable} = require("stream")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _stream = _interopRequireDefault(require("stream"));
/**
* @api private
*/
const isReadable = val => val instanceof _stream.default.Readable;
const isReadable = val => val instanceof Readable
var _default = isReadable;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isReadable

@@ -1,20 +0,8 @@

"use strict";
const {ReadStream} = require("fs")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fs = _interopRequireDefault(require("fs"));
/**
* @api private
*/
const isReadStream = value => value instanceof _fs.default.ReadStream;
const isReadStream = value => value instanceof ReadStream
var _default = isReadStream;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isReadStream

@@ -1,16 +0,5 @@

"use strict";
const isWHATWGReadable = require("./isWHATWGReadable")
const isReadStream = require("./isReadStream")
const isReadable = require("./isReadable")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isWHATWGReadable = _interopRequireDefault(require("./isWHATWGReadable"));
var _isReadStream = _interopRequireDefault(require("./isReadStream"));
var _isReadable = _interopRequireDefault(require("./isReadable"));
/**

@@ -25,7 +14,6 @@ * Checks if given value is ONLY fs.ReadStream OR stream.Readable instance

*/
const isStream = value => (0, _isWHATWGReadable.default)(value) || (0, _isReadStream.default)(value) || (0, _isReadable.default)(value);
const isStream = value => (
isWHATWGReadable(value) || isReadStream(value) || isReadable(value)
)
var _default = isStream;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isStream

@@ -1,16 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/**
* @api private
*/
const isString = value => typeof value === "string";
const isString = value => typeof value === "string"
var _default = isString;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isString

@@ -1,14 +0,4 @@

"use strict";
const isFunction = require("./isFunction")
const isObject = require("./isObject")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isFunction = _interopRequireDefault(require("./isFunction"));
var _isObject = _interopRequireDefault(require("./isObject"));
/**

@@ -23,7 +13,12 @@ * Check if given value is ReadableStream

*/
const isWHATWGReadable = value => (0, _isObject.default)(value) && (0, _isFunction.default)(value.cancel) && (0, _isFunction.default)(value.getReader) && (0, _isFunction.default)(value.pipeTo) && (0, _isFunction.default)(value.pipeThrough) && (0, _isFunction.default)(value.constructor) && value.constructor.name === "ReadableStream";
const isWHATWGReadable = value => (
isObject(value)
&& isFunction(value.cancel)
&& isFunction(value.getReader)
&& isFunction(value.pipeTo)
&& isFunction(value.pipeThrough)
&& isFunction(value.constructor)
&& value.constructor.name === "ReadableStream"
)
var _default = isWHATWGReadable;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = isWHATWGReadable

@@ -1,8 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/**

@@ -17,18 +10,12 @@ * Reads a content from given ReadableStream

while (true) {
const {
done,
value
} = await reader.read();
const {done, value} = await reader.read()
if (done) {
return value;
return value
}
yield value;
yield value
}
}
var _default = readableStreamIterator;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = readableStreamIterator

@@ -1,16 +0,5 @@

"use strict";
const readOnly = (target, key, descriptor) => ({
...descriptor, writable: false, configurable: false
})
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const readOnly = (target, key, descriptor) => ({ ...descriptor,
writable: false,
configurable: false
});
var _default = readOnly;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = readOnly

@@ -1,40 +0,27 @@

"use strict";
const isBlob = require("./isBlob")
const File = require("./File")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
const {isBuffer} = Buffer
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isBlob = _interopRequireDefault(require("./isBlob"));
var _File = _interopRequireDefault(require("./File"));
const {
isBuffer
} = Buffer;
/**
* @api private
*/
function toFile(value, name, options = {}) {
if (value.constructor.name === "File") {
return value;
return value
}
if (isBuffer(value)) {
options.size = value.length;
} else if ((0, _isBlob.default)(value)) {
options.type = value.type || options.type;
options.size = value.size == null ? options.size : value.size;
options.lastModified = value.lastModified == null ? options.lastModified : value.lastModified;
options.size = value.length
} else if (isBlob(value)) {
options.type = value.type || options.type
options.size = value.size == null ? options.size : value.size
options.lastModified = value.lastModified == null
? options.lastModified
: value.lastModified
}
return new _File.default(value, name, options);
return new File(value, name, options)
}
var _default = toFile;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = toFile
{
"name": "formdata-node",
"version": "2.2.2",
"version": "2.3.0",
"description": "FormData implementation for Node.js. Built over Readable stream and async generators.",

@@ -23,59 +23,33 @@ "repository": "octet-stream/form-data",

"scripts": {
"eslint": "eslint src/**/*.mjs",
"eslint": "eslint lib/**/*.js test/**/*.js ava.config.cjs polyfill.js",
"staged": "lint-staged",
"make:test": "babel src -s -d .",
"prepare": "npm run prepare:mjs && npm run prepare:js",
"prepare:mjs": "BABEL_ESM=1 babel src -d . --keep-file-extension",
"prepare:js": "babel src -d .",
"watch": "babel src -w -d .",
"p": "npm run prepare",
"w": "npm run watch",
"cleanup": "rimraf lib test polyfill.mjs polyfill.js *.map",
"test": "ava",
"test:types": "tsd",
"coverage": "npm run cleanup && npm run make:test && nyc npm run test",
"report": "npm run cleanup && npm run make:test && nyc npm run test && nyc report -r=html",
"ci": "npm run make:test && nyc npm run test && nyc report -r=json"
"coverage": "nyc npm run test",
"report": "nyc npm run test && nyc report -r=html",
"ci": "nyc npm run test && nyc report -r=json"
},
"nyc": {
"extension": [
".mjs"
],
"exclude": [
"test/**",
".babelrc.js"
]
},
"devDependencies": {
"@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-transform-modules-commonjs": "7.10.1",
"@babel/plugin-transform-runtime": "7.10.1",
"@octetstream/eslint-config": "4.0.0",
"@types/node": "14.0.11",
"ava": "3.8.2",
"babel-plugin-add-module-exports": "1.0.2",
"codecov": "3.7.1",
"eslint": "7.2.0",
"ava": "3.12.1",
"codecov": "3.7.2",
"eslint": "7.7.0",
"eslint-plugin-ava": "10.3.0",
"fetch-blob": "1.0.6",
"husky": "4.2.5",
"lint-staged": "10.2.9",
"lint-staged": "10.2.13",
"lodash.isplainobject": "4.0.6",
"nyc": "15.1.0",
"object-deep-from-entries": "^0.3.0",
"object-deep-from-entries": "0.3.0",
"proxyquire": "2.1.3",
"rimraf": "3.0.2",
"sinon": "9.0.2",
"sinon": "9.0.3",
"supertest": "4.0.2",
"then-busboy": "4.4.0",
"tsd": "0.11.0",
"tsd": "0.13.1",
"web-streams-polyfill": "2.1.1"
},
"dependencies": {
"@babel/runtime": "7.10.2",
"mime-types": "2.1.27"
}
}

@@ -1,16 +0,5 @@

"use strict";
const FormData = require(".")
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
global.FormData = FormData
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _FormData = _interopRequireDefault(require("./lib/FormData"));
global.FormData = _FormData.default;
var _default = _FormData.default;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;
module.exports = FormData
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