formdata-node
Advanced tools
Comparing version 0.3.1 to 0.3.2
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _asyncGenerator2 = require("babel-runtime/helpers/asyncGenerator"); | ||
var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator")); | ||
var _asyncGenerator3 = _interopRequireDefault(_asyncGenerator2); | ||
var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator")); | ||
var _asyncIterator2 = require("babel-runtime/helpers/asyncIterator"); | ||
var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator")); | ||
var _asyncIterator3 = _interopRequireDefault(_asyncIterator2); | ||
var _asyncGeneratorDelegate2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncGeneratorDelegate")); | ||
var _asyncGeneratorDelegate2 = require("babel-runtime/helpers/asyncGeneratorDelegate"); | ||
var _map = _interopRequireDefault(require("@babel/runtime/core-js/map")); | ||
var _asyncGeneratorDelegate3 = _interopRequireDefault(_asyncGeneratorDelegate2); | ||
var _symbol = _interopRequireDefault(require("@babel/runtime/core-js/symbol")); | ||
var _map = require("babel-runtime/core-js/map"); | ||
var _iterator = _interopRequireDefault(require("@babel/runtime/core-js/symbol/iterator")); | ||
var _map2 = _interopRequireDefault(_map); | ||
var _symbol = require("babel-runtime/core-js/symbol"); | ||
var _symbol2 = _interopRequireDefault(_symbol); | ||
var _iterator = require("babel-runtime/core-js/symbol/iterator"); | ||
var _iterator2 = _interopRequireDefault(_iterator); | ||
var _class, _temp, _initialiseProps; | ||
var _stream = require("stream"); | ||
@@ -37,54 +28,27 @@ | ||
var _invariant = require("@octetstream/invariant"); | ||
var _invariant = _interopRequireDefault(require("@octetstream/invariant")); | ||
var _invariant2 = _interopRequireDefault(_invariant); | ||
var _mimeTypes = _interopRequireDefault(require("mime-types")); | ||
var _mimeTypes = require("mime-types"); | ||
var _bind = _interopRequireDefault(require("./util/bind")); | ||
var _mimeTypes2 = _interopRequireDefault(_mimeTypes); | ||
var _concat = _interopRequireDefault(require("./util/concat")); | ||
var _bind = require("./util/bind"); | ||
var _nextTick = _interopRequireDefault(require("./util/nextTick")); | ||
var _bind2 = _interopRequireDefault(_bind); | ||
var _boundary = _interopRequireDefault(require("./util/boundary")); | ||
var _concat = require("./util/concat"); | ||
var _getType = _interopRequireDefault(require("./util/getType")); | ||
var _concat2 = _interopRequireDefault(_concat); | ||
var _isString = _interopRequireDefault(require("./util/isString")); | ||
var _nextTick = require("./util/nextTick"); | ||
var _isObject = _interopRequireDefault(require("./util/isObject")); | ||
var _nextTick2 = _interopRequireDefault(_nextTick); | ||
var _isBuffer = _interopRequireDefault(require("./util/isBuffer")); | ||
var _boundary = require("./util/boundary"); | ||
var _isReadable = _interopRequireDefault(require("./util/isReadable")); | ||
var _boundary2 = _interopRequireDefault(_boundary); | ||
var _StreamIterator = _interopRequireDefault(require("./util/StreamIterator")); | ||
var _getType = require("./util/getType"); | ||
var _getType2 = _interopRequireDefault(_getType); | ||
var _isString = require("./util/isString"); | ||
var _isString2 = _interopRequireDefault(_isString); | ||
var _isObject = require("./util/isObject"); | ||
var _isObject2 = _interopRequireDefault(_isObject); | ||
var _isBuffer = require("./util/isBuffer"); | ||
var _isBuffer2 = _interopRequireDefault(_isBuffer); | ||
var _isReadable = require("./util/isReadable"); | ||
var _isReadable2 = _interopRequireDefault(_isReadable); | ||
var _StreamIterator = require("./util/StreamIterator"); | ||
var _StreamIterator2 = _interopRequireDefault(_StreamIterator); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const isArray = Array.isArray; | ||
/** | ||
@@ -98,3 +62,7 @@ * FormData implementation for Node.js environments. | ||
*/ | ||
let FormData = (_temp = _class = class FormData { | ||
var _Symbol$iterator = _iterator.default; | ||
var _Symbol$asyncIterator = _symbol.default.asyncIterator; | ||
class FormData { | ||
/** | ||
@@ -109,19 +77,15 @@ * @param {array} fields – an optional FormData initial fields. | ||
(0, _bind2.default)([_iterator2.default, _symbol2.default.asyncIterator, "toString", "toJSON", "inspect", "keys", "values", "entries"], this); | ||
(0, _bind.default)([_iterator.default, _symbol.default.asyncIterator, "toString", "toJSON", "inspect", "keys", "values", "entries"], this); | ||
this.__carriage = "\r\n"; | ||
this.__defaultContentType = "application/octet-steam"; | ||
this.__dashes = "--"; | ||
this.__boundary = (0, _concat2.default)("NodeJSFormDataStream", (0, _boundary2.default)()); | ||
this.__contents = new _map2.default(); | ||
this.__boundary = (0, _concat.default)("NodeJSFormDataStream", (0, _boundary.default)()); | ||
this.__contents = new _map.default(); | ||
this.__entries = this.__contents.entries(); | ||
this.__curr = this.__getField(); | ||
const read = this.__read; | ||
this.__stream = new _stream.Readable({ | ||
read | ||
}); | ||
this.__stream = new _stream.Readable({ read }); | ||
if (isArray(fields)) { | ||
@@ -131,3 +95,2 @@ this.__appendFromInitialFields(fields); | ||
} | ||
/** | ||
@@ -143,6 +106,7 @@ * Check if given value is instance of FormData | ||
*/ | ||
static isFormData(value) { | ||
return value instanceof FormData; | ||
} | ||
/** | ||
@@ -165,6 +129,4 @@ * @private | ||
head.push(this.__carriage.repeat(2)); | ||
return (0, _concat2.default)(...head); | ||
return (0, _concat.default)(...head); | ||
} | ||
/** | ||
@@ -183,5 +145,5 @@ * @private | ||
return _asyncGenerator3.default.wrap(function* () { | ||
return (0, _wrapAsyncGenerator2.default)(function* () { | ||
while (true) { | ||
yield _asyncGenerator3.default.await((0, _nextTick2.default)()); | ||
yield (0, _awaitAsyncGenerator2.default)((0, _nextTick.default)()); | ||
@@ -192,21 +154,21 @@ const curr = _this.__entries.next(); | ||
yield _this.__getFooter(); | ||
return; | ||
} | ||
const [name, { values, filename }] = curr.value; | ||
const [name, { | ||
values, | ||
filename | ||
}] = curr.value; // Get field header | ||
// Get field header | ||
yield _this.__getHeader(name, filename); | ||
yield _this.__getHeader(name, filename); // Get the field body | ||
// Get the field body | ||
for (const value of values) { | ||
if ((0, _isReadable2.default)(value)) { | ||
yield* (0, _asyncGeneratorDelegate3.default)((0, _asyncIterator3.default)(new _StreamIterator2.default(value)), _asyncGenerator3.default.await); // Read the stream contents | ||
if ((0, _isReadable.default)(value)) { | ||
yield* (0, _asyncGeneratorDelegate2.default)((0, _asyncIterator2.default)(new _StreamIterator.default(value)), _awaitAsyncGenerator2.default); // Read the stream contents | ||
} else { | ||
yield value; | ||
} | ||
} | ||
} // Add trailing carriage | ||
// Add trailing carriage | ||
yield _this.__carriage; | ||
@@ -216,3 +178,2 @@ } | ||
} | ||
/** | ||
@@ -228,13 +189,2 @@ * Read values from internal storage and push it to the internal stream | ||
/** | ||
* Append initial fields | ||
* | ||
* @param {array} fields | ||
* | ||
* @return {void} | ||
* | ||
* @private | ||
*/ | ||
/** | ||
* Appends a new value onto an existing key inside a FormData object, | ||
@@ -259,10 +209,8 @@ * or adds the key if it does not already exist. | ||
__setField(name, value, filename, append = false) { | ||
(0, _invariant2.default)(!(0, _isString2.default)(name), TypeError, "Field name should be a string. Received %s", (0, _getType2.default)(name)); | ||
(0, _invariant.default)(!(0, _isString.default)(name), TypeError, "Field name should be a string. Received %s", (0, _getType.default)(name)); | ||
(0, _invariant.default)(filename && !(0, _isString.default)(filename), TypeError, "Filename should be a string (if passed). Received %s", (0, _getType.default)(filename)); // Getting a filename for Buffer and Readable values | ||
(0, _invariant2.default)(filename && !(0, _isString2.default)(filename), TypeError, "Filename should be a string (if passed). Received %s", (0, _getType2.default)(filename)); | ||
// Try to get a filename for Buffer and Readable values | ||
if ((0, _isBuffer2.default)(value) && filename) { | ||
if ((0, _isBuffer.default)(value) && filename) { | ||
filename = (0, _path.basename)(filename); | ||
} else if ((0, _isReadable2.default)(value) && (value.path || filename)) { | ||
} else if ((0, _isReadable.default)(value) && (value.path || filename)) { | ||
// Readable stream which created from fs.createReadStream | ||
@@ -279,20 +227,28 @@ // have a "path" property. So, we can get a "filename" | ||
const field = this.__contents.get(name); | ||
const field = this.__contents.get(name); // Set a new field if given name is not exists | ||
// Set a new field | ||
if (!field) { | ||
return void this.__contents.set(name, { append, filename, values: [value] }); | ||
} | ||
return void this.__contents.set(name, { | ||
append, | ||
filename, | ||
values: [value] | ||
}); | ||
} // Replace a value of the existing field if "set" called | ||
// Replace a value of the existing field if "set" called | ||
if (!append) { | ||
return void this.__contents.set(name, { append, filename, values: [value] }); | ||
} | ||
return void this.__contents.set(name, { | ||
append, | ||
filename, | ||
values: [value] | ||
}); | ||
} // Do nothing if the field has been created from .set() | ||
// Do nothing if the field has been created from .set() | ||
if (!field.append) { | ||
return; | ||
} | ||
} // Append a new value to the existing field | ||
// Append a new value to the existing field | ||
field.values.push(value); | ||
@@ -302,3 +258,2 @@ | ||
} | ||
/** | ||
@@ -311,6 +266,7 @@ * Returns boundary string | ||
*/ | ||
get boundary() { | ||
return this.__boundary; | ||
} | ||
/** | ||
@@ -323,6 +279,7 @@ * Returns the internal stream | ||
*/ | ||
get stream() { | ||
return this.__stream; | ||
} | ||
/** | ||
@@ -349,84 +306,2 @@ * Appends a new value onto an existing key inside a FormData object, | ||
/** | ||
* Set a new value for an existing key inside FormData, | ||
* or add the new field if it does not already exist. | ||
* | ||
* @param {string} name – The name of the field whose data | ||
* is contained in value | ||
* | ||
* @param {any} value – The field value. You can pass any primitive type | ||
* (including null and undefined), Buffer or Readable stream. | ||
* Note that Arrays and Object will be converted to string | ||
* by using String function. | ||
* | ||
* @param {string} [filename = undefined] A filename of given field. | ||
* Can be added only for Buffer and Readable | ||
* | ||
* @return {void} | ||
* | ||
* @public | ||
*/ | ||
/** | ||
* Check if a field with the given name exists inside FormData. | ||
* | ||
* @param {string} name – A name of the field you want to test for. | ||
* | ||
* @return {boolean} | ||
* | ||
* @public | ||
*/ | ||
/** | ||
* Returns the first value associated with the given name. | ||
* Buffer and Readable values will be returned as-is. | ||
* | ||
* @param {string} name – A name of the value you want to retrieve. | ||
* | ||
* @public | ||
*/ | ||
/** | ||
* Returns all the values associated with | ||
* a given key from within a FormData object. | ||
* | ||
* @param {string} name – A name of the value you want to retrieve. | ||
* | ||
* @public | ||
*/ | ||
/** | ||
* Deletes a key and its value(s) from a FormData object. | ||
* | ||
* @param {string} name – The name of the key you want to delete. | ||
* | ||
* @public | ||
*/ | ||
/** | ||
* An alias of FormData#stream.pipe | ||
*/ | ||
/** | ||
* Executes a given callback for each field of the FormData instance | ||
* | ||
* @param {function} fn – Function to execute for each element, | ||
* taking three arguments: | ||
* + {any} value – A value(s) of the current field. | ||
* + {string} – Name of the current field. | ||
* + {FormData} fd – The FormData instance that forEach | ||
* is being applied to | ||
* | ||
* @param {any} [ctx = null] | ||
* | ||
* @public | ||
*/ | ||
toString() { | ||
@@ -453,3 +328,2 @@ return `[object ${this.constructor.name}]`; | ||
const values = this.getAll(name); | ||
yield [name, values.length === 1 ? values[0] : values]; | ||
@@ -460,11 +334,25 @@ } | ||
*values() { | ||
for (const [, values] of this.entries()) { | ||
for (const [, values] of this) { | ||
yield values; | ||
} | ||
} | ||
/** | ||
* Executes a given callback for each field of the FormData instance | ||
* | ||
* @param {function} fn – Function to execute for each element, | ||
* taking three arguments: | ||
* + {any} value – A value(s) of the current field. | ||
* + {string} – Name of the current field. | ||
* + {FormData} fd – The FormData instance that forEach | ||
* is being applied to | ||
* | ||
* @param {any} [ctx = null] | ||
* | ||
* @public | ||
*/ | ||
[_iterator2.default]() { | ||
[_Symbol$iterator]() { | ||
return this.entries(); | ||
} | ||
/** | ||
@@ -478,80 +366,135 @@ * This method allows to read a content from internal stream | ||
*/ | ||
[_symbol2.default.asyncIterator]() { | ||
return new _StreamIterator2.default(this.__stream); | ||
[_Symbol$asyncIterator]() { | ||
return new _StreamIterator.default(this.__stream); | ||
} | ||
}, _initialiseProps = function () { | ||
this.__getMime = filename => _mimeTypes2.default.lookup(filename) || this.__defaultContentType; | ||
this.__getFooter = () => (0, _concat2.default)(this.__dashes, this.__boundary, this.__dashes, this.__carriage.repeat(2)); | ||
} | ||
this.__read = () => { | ||
const onFulfilled = curr => { | ||
if (curr.done) { | ||
return this.__stream.push(null); | ||
} | ||
var _initialiseProps = function () { | ||
Object.defineProperty(this, "__getMime", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: filename => _mimeTypes.default.lookup(filename) || this.__defaultContentType | ||
}); | ||
Object.defineProperty(this, "__getFooter", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: () => (0, _concat.default)(this.__dashes, this.__boundary, this.__dashes, this.__carriage.repeat(2)) | ||
}); | ||
Object.defineProperty(this, "__read", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: () => { | ||
const onFulfilled = curr => { | ||
if (curr.done) { | ||
return this.__stream.push(null); | ||
} | ||
const chunk = curr.value; | ||
const chunk = curr.value; | ||
this.__stream.push((0, _isBuffer2.default)(chunk) ? chunk : Buffer.from(String(chunk))); | ||
}; | ||
this.__stream.push((0, _isBuffer.default)(chunk) ? chunk : Buffer.from(String(chunk))); | ||
}; | ||
const onRejected = err => this.__stream.emit("error", err); | ||
const onRejected = err => this.__stream.emit("error", err); | ||
this.__curr.next().then(onFulfilled, onRejected); | ||
}; | ||
this.__curr.next().then(onFulfilled, onRejected); | ||
} | ||
}); | ||
Object.defineProperty(this, "__appendFromInitialFields", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: fields => { | ||
for (let field of fields) { | ||
// If the "field" is object, get its properties and reassign them as array | ||
if ((0, _isObject.default)(field)) { | ||
field = [field.name, field.value, field.filename]; | ||
} | ||
this.__appendFromInitialFields = fields => { | ||
for (let field of fields) { | ||
// If the "field" is object, get its properties and reassign them as array | ||
if ((0, _isObject2.default)(field)) { | ||
field = [field.name, field.value, field.filename]; | ||
this.append(...field); | ||
} | ||
this.append(...field); | ||
} | ||
}; | ||
}); | ||
Object.defineProperty(this, "append", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: (name, value, filename) => this.__setField(name, value, filename, 1) | ||
}); | ||
Object.defineProperty(this, "set", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: (name, value, filename) => this.__setField(name, value, filename) | ||
}); | ||
Object.defineProperty(this, "has", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: name => this.__contents.has(name) | ||
}); | ||
Object.defineProperty(this, "get", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: name => { | ||
const field = this.__contents.get(name); // I should add this behaviour somehow | ||
this.append = (name, value, filename) => this.__setField(name, value, filename, 1); | ||
this.set = (name, value, filename) => this.__setField(name, value, filename); | ||
if (!field) { | ||
return void 0; | ||
} | ||
this.has = name => this.__contents.has(name); | ||
this.get = name => { | ||
const field = this.__contents.get(name); | ||
// I should add this behaviour somehow | ||
if (!field) { | ||
return void 0; | ||
const [value] = field.values; | ||
return (0, _isBuffer.default)(value) || (0, _isReadable.default)(value) ? value : String(value); | ||
} | ||
}); | ||
Object.defineProperty(this, "getAll", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: name => { | ||
const res = []; | ||
const [value] = field.values; | ||
const field = this.__contents.get(name); | ||
return (0, _isBuffer2.default)(value) || (0, _isReadable2.default)(value) ? value : String(value); | ||
}; | ||
if (field) { | ||
for (const value of field.values) { | ||
res.push((0, _isBuffer.default)(value) || (0, _isReadable.default)(value) ? value : String(value)); | ||
} | ||
} | ||
this.getAll = name => { | ||
const res = []; | ||
const field = this.__contents.get(name); | ||
if (field) { | ||
for (const value of field.values) { | ||
res.push((0, _isBuffer2.default)(value) || (0, _isReadable2.default)(value) ? value : String(value)); | ||
return res; | ||
} | ||
}); | ||
Object.defineProperty(this, "delete", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: name => void this.__contents.delete(name) | ||
}); | ||
Object.defineProperty(this, "pipe", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: (dest, options) => this.__stream.pipe(dest, options) | ||
}); | ||
Object.defineProperty(this, "forEach", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: (fn, ctx = null) => { | ||
for (const [name, value] of this) { | ||
fn.call(ctx, value, name, this); | ||
} | ||
} | ||
}); | ||
}; | ||
return res; | ||
}; | ||
this.delete = name => void this.__contents.delete(name); | ||
this.pipe = (dest, options) => this.__stream.pipe(dest, options); | ||
this.forEach = (fn, ctx = null) => { | ||
for (const [name, value] of this) { | ||
fn.call(ctx, value, name, this); | ||
} | ||
}; | ||
}, _temp); | ||
exports.default = FormData; | ||
var _default = FormData; | ||
exports.default = _default; |
@@ -6,2 +6,4 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
function bind(names, ctx) { | ||
@@ -17,2 +19,3 @@ for (const name of names) { | ||
exports.default = bind; | ||
var _default = bind; | ||
exports.default = _default; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _generate = require("nanoid/generate"); | ||
var _generate = _interopRequireDefault(require("nanoid/generate")); | ||
var _generate2 = _interopRequireDefault(_generate); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const alpha = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; | ||
@@ -17,4 +16,5 @@ | ||
const boundary = size => (0, _generate2.default)(alpha, size && isNumber(size) ? size : 22); | ||
const boundary = size => (0, _generate.default)(alpha, size && isNumber(size) ? size : 22); | ||
exports.default = boundary; | ||
var _default = boundary; | ||
exports.default = _default; |
@@ -1,5 +0,2 @@ | ||
"use strict"; | ||
const isArray = Array.isArray; | ||
/** | ||
@@ -14,2 +11,3 @@ * Concap multiple strings into the one | ||
*/ | ||
function concat(...strings) { | ||
@@ -16,0 +14,0 @@ if (isArray(strings[0])) { |
@@ -6,4 +6,4 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
const basicTypes = ["null", "number", "object", "array", "string", "function", "undefined", "boolean"]; | ||
/** | ||
@@ -18,2 +18,3 @@ * Get a string with type name of the given value | ||
*/ | ||
function getType(val) { | ||
@@ -29,2 +30,3 @@ const type = Object.prototype.toString.call(val).slice(8, -1); | ||
exports.default = getType; | ||
var _default = getType; | ||
exports.default = _default; |
@@ -1,5 +0,3 @@ | ||
"use strict"; | ||
const isBuffer = val => val instanceof Buffer; | ||
module.exports = isBuffer; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _getType = require("./getType"); | ||
var _getType = _interopRequireDefault(require("./getType")); | ||
var _getType2 = _interopRequireDefault(_getType); | ||
const isObject = val => (0, _getType.default)(val) === "object"; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const isObject = val => (0, _getType2.default)(val) === "object"; | ||
exports.default = isObject; | ||
var _default = isObject; | ||
exports.default = _default; |
@@ -1,7 +0,7 @@ | ||
"use strict"; | ||
const { | ||
Readable | ||
} = require("stream"); | ||
const { Readable } = require("stream"); | ||
const isreadable = val => val instanceof Readable; | ||
module.exports = isreadable; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _getType = require("./getType"); | ||
var _getType = _interopRequireDefault(require("./getType")); | ||
var _getType2 = _interopRequireDefault(_getType); | ||
const isString = val => (0, _getType.default)(val) === "string"; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const isString = val => (0, _getType2.default)(val) === "string"; | ||
exports.default = isString; | ||
var _default = isString; | ||
exports.default = _default; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _promise = require("babel-runtime/core-js/promise"); | ||
var _promise = _interopRequireDefault(require("@babel/runtime/core-js/promise")); | ||
var _promise2 = _interopRequireDefault(_promise); | ||
const nextTick = () => new _promise.default(resolve => process.nextTick(resolve)); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const nextTick = () => new _promise2.default(resolve => process.nextTick(resolve)); | ||
exports.default = nextTick; | ||
var _default = nextTick; | ||
exports.default = _default; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _symbol = require("babel-runtime/core-js/symbol"); | ||
var _symbol = _interopRequireDefault(require("@babel/runtime/core-js/symbol")); | ||
var _symbol2 = _interopRequireDefault(_symbol); | ||
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); | ||
var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator"); | ||
var _promise = _interopRequireDefault(require("@babel/runtime/core-js/promise")); | ||
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); | ||
var _nextTick = _interopRequireDefault(require("./nextTick")); | ||
var _promise = require("babel-runtime/core-js/promise"); | ||
var _Symbol$asyncIterator = _symbol.default.asyncIterator; | ||
var _promise2 = _interopRequireDefault(_promise); | ||
var _nextTick = require("./nextTick"); | ||
var _nextTick2 = _interopRequireDefault(_nextTick); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
/** | ||
@@ -31,3 +26,3 @@ * StreamIterator helps with getting data from a Readable stream using an | ||
*/ | ||
let StreamIterator = class StreamIterator { | ||
class StreamIterator { | ||
/** | ||
@@ -39,78 +34,114 @@ * @param {stream.Readable} stream | ||
this.__setState = state => void (this.__state = state); | ||
Object.defineProperty(this, "__setState", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: state => void (this.__state = state) | ||
}); | ||
Object.defineProperty(this, "__isState", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: state => this.__state === state | ||
}); | ||
Object.defineProperty(this, "__isPendingState", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: () => this.__isState(this.__states.pending) | ||
}); | ||
Object.defineProperty(this, "__isEndState", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: () => { | ||
// Temporarily hack while waiting for new public APIs of streams: | ||
// See for more info: https://github.com/nodejs/node/issues/445 | ||
// eslint-disable-next-line | ||
const state = this.__stream._readableState; | ||
return state.ended && state.endEmitted; | ||
} | ||
}); | ||
Object.defineProperty(this, "__isErrorState", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: () => this.__isState(this.__states.error) | ||
}); | ||
Object.defineProperty(this, "__onError", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: err => { | ||
this.__error = err; | ||
this.__isState = state => this.__state === state; | ||
this.__setState(this.__states.error); | ||
} | ||
}); | ||
Object.defineProperty(this, "__ensureRead", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: () => new _promise.default(resolve => { | ||
const fulfill = () => resolve(this.__setState(this.__states.read)); | ||
this.__isPendingState = () => this.__isState(this.__states.pending); | ||
this.__stream.once("readable", fulfill); | ||
}) | ||
}); | ||
Object.defineProperty(this, "next", { | ||
configurable: true, | ||
enumerable: true, | ||
writable: true, | ||
value: function () { | ||
var _ref = (0, _asyncToGenerator2.default)(function* () { | ||
while (true) { | ||
yield (0, _nextTick.default)(); | ||
this.__isEndState = () => { | ||
// Temporarily hack while waiting for new public APIs of streams: | ||
// See for more info: https://github.com/nodejs/node/issues/445 | ||
// eslint-disable-next-line | ||
const state = this.__stream._readableState; | ||
if (_this.__isErrorState()) { | ||
throw _this.__error; | ||
} // Ensure of a Readable ending | ||
return state.ended && state.endEmitted; | ||
}; | ||
this.__isErrorState = () => this.__isState(this.__states.error); | ||
if (_this.__isEndState()) { | ||
return { | ||
value: void 0, | ||
done: true | ||
}; | ||
} // Set the "readable" event listener (using once method) | ||
// and wait for the event emitting | ||
this.__onError = err => { | ||
this.__error = err; | ||
this.__setState(this.__states.error); | ||
}; | ||
if (_this.__isPendingState()) { | ||
yield _this.__ensureRead(); | ||
continue; | ||
} | ||
this.__ensureRead = () => new _promise2.default(resolve => { | ||
const fulfill = () => resolve(this.__setState(this.__states.read)); | ||
const value = _this.__stream.read(); // Back to the "pending" state if given value is nullish | ||
this.__stream.once("readable", fulfill); | ||
}); | ||
this.next = (0, _asyncToGenerator3.default)(function* () { | ||
while (true) { | ||
yield (0, _nextTick2.default)(); | ||
if (value == null) { | ||
_this.__setState(_this.__states.pending); | ||
if (_this.__isErrorState()) { | ||
throw _this.__error; | ||
} | ||
continue; | ||
} | ||
// Ensure of a Readable ending | ||
if (_this.__isEndState()) { | ||
return { | ||
value: void 0, | ||
done: true | ||
}; | ||
} | ||
return { | ||
value, | ||
done: false | ||
}; | ||
} | ||
}); | ||
// Set the "readable" event listener (using once method) | ||
// and wait for the event emitting | ||
if (_this.__isPendingState()) { | ||
yield _this.__ensureRead(); | ||
continue; | ||
} | ||
const value = _this.__stream.read(); | ||
// Back to the "pending" state if given value is nullish | ||
if (value == null) { | ||
_this.__setState(_this.__states.pending); | ||
continue; | ||
} | ||
return { value, done: false }; | ||
} | ||
return function value() { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}() | ||
}); | ||
this.__stream = stream; | ||
this.__states = { | ||
pending: (0, _symbol2.default)("pending"), | ||
read: (0, _symbol2.default)("read"), | ||
error: (0, _symbol2.default)("error") | ||
pending: (0, _symbol.default)("pending"), | ||
read: (0, _symbol.default)("read"), | ||
error: (0, _symbol.default)("error") | ||
}; | ||
this.__state = this.__states.pending; | ||
this.__error = null; | ||
@@ -121,6 +152,9 @@ | ||
[_symbol2.default.asyncIterator]() { | ||
[_Symbol$asyncIterator]() { | ||
return this; | ||
} | ||
}; | ||
exports.default = StreamIterator; | ||
} | ||
var _default = StreamIterator; | ||
exports.default = _default; |
{ | ||
"name": "formdata-node", | ||
"version": "0.3.1", | ||
"version": "0.3.2", | ||
"description": "FormData implementation for Node.js. Built over Readable stream and async generators.", | ||
@@ -28,3 +28,2 @@ "repository": "octet-stream/form-data", | ||
"ava": { | ||
"babel": "inherit", | ||
"files": [ | ||
@@ -36,24 +35,25 @@ "test/**/*.js", | ||
"devDependencies": { | ||
"@babel/cli": "^7.0.0-beta.37", | ||
"@babel/core": "^7.0.0-beta.37", | ||
"@babel/plugin-proposal-async-generator-functions": "^7.0.0-beta.37", | ||
"@babel/plugin-proposal-class-properties": "^7.0.0-beta.37", | ||
"@babel/plugin-proposal-decorators": "^7.0.0-beta.37", | ||
"@babel/plugin-transform-async-to-generator": "^7.0.0-beta.37", | ||
"@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.37", | ||
"@babel/plugin-transform-runtime": "^7.0.0-beta.37", | ||
"@babel/runtime": "^7.0.0-beta.37", | ||
"@octetstream/eslint-config": "2.1.0", | ||
"ava": "0.23.0", | ||
"babel-cli": "6.26.0", | ||
"babel-core": "6.26.0", | ||
"babel-plugin-transform-async-generator-functions": "6.24.1", | ||
"babel-plugin-transform-async-to-generator": "6.24.1", | ||
"babel-plugin-transform-class-properties": "6.24.1", | ||
"babel-plugin-transform-decorators-legacy": "1.3.4", | ||
"babel-plugin-transform-es2015-modules-commonjs": "6.26.0", | ||
"babel-plugin-transform-runtime": "6.23.0", | ||
"ava": "0.24.0", | ||
"codecov": "3.0.0", | ||
"eslint": "4.10.0", | ||
"eslint-plugin-ava": "4.2.2", | ||
"eslint": "4.15.0", | ||
"eslint-plugin-ava": "4.4.0", | ||
"husky": "0.14.3", | ||
"lodash.isplainobject": "4.0.6", | ||
"nyc": "11.2.1", | ||
"nyc": "11.4.1", | ||
"promise-fs": "1.3.0", | ||
"proxyquire": "1.8.0", | ||
"rimraf": "2.6.2", | ||
"sinon": "4.0.2", | ||
"sinon": "4.1.5", | ||
"supertest": "3.0.0", | ||
"then-busboy": "2.1.3" | ||
"then-busboy": "2.1.4" | ||
}, | ||
@@ -64,4 +64,4 @@ "dependencies": { | ||
"mime-types": "2.1.17", | ||
"nanoid": "1.0.0" | ||
"nanoid": "1.0.1" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
29249
619
23
+ Addednanoid@1.0.1(transitive)
- Removednanoid@1.0.0(transitive)
Updatednanoid@1.0.1