Comparing version 6.6.0 to 6.6.1
@@ -5,5 +5,6 @@ 'use strict' | ||
const { kState } = require('./symbols') | ||
const { kEnumerableProperty } = require('../core/util') | ||
const { File: UndiciFile, FileLike, isFileLike } = require('./file') | ||
const { webidl } = require('./webidl') | ||
const { Blob, File: NativeFile } = require('node:buffer') | ||
const { File: NativeFile } = require('node:buffer') | ||
@@ -162,5 +163,6 @@ /** @type {globalThis['File']} */ | ||
return makeIterator( | ||
() => this[kState].map(pair => [pair.name, pair.value]), | ||
() => this[kState], | ||
'FormData', | ||
'key+value' | ||
'key+value', | ||
'name', 'value' | ||
) | ||
@@ -173,5 +175,6 @@ } | ||
return makeIterator( | ||
() => this[kState].map(pair => [pair.name, pair.value]), | ||
() => this[kState], | ||
'FormData', | ||
'key' | ||
'key', | ||
'name', 'value' | ||
) | ||
@@ -184,5 +187,6 @@ } | ||
return makeIterator( | ||
() => this[kState].map(pair => [pair.name, pair.value]), | ||
() => this[kState], | ||
'FormData', | ||
'value' | ||
'value', | ||
'name', 'value' | ||
) | ||
@@ -207,3 +211,3 @@ } | ||
for (const [key, value] of this) { | ||
callbackFn.apply(thisArg, [value, key, this]) | ||
callbackFn.call(thisArg, value, key, this) | ||
} | ||
@@ -216,2 +220,13 @@ } | ||
Object.defineProperties(FormData.prototype, { | ||
append: kEnumerableProperty, | ||
delete: kEnumerableProperty, | ||
get: kEnumerableProperty, | ||
getAll: kEnumerableProperty, | ||
has: kEnumerableProperty, | ||
set: kEnumerableProperty, | ||
entries: kEnumerableProperty, | ||
keys: kEnumerableProperty, | ||
values: kEnumerableProperty, | ||
forEach: kEnumerableProperty, | ||
[Symbol.iterator]: { enumerable: false }, | ||
[Symbol.toStringTag]: { | ||
@@ -234,3 +249,3 @@ value: 'FormData', | ||
// with U+FFFD." | ||
// see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end | ||
// see: https://nodejs.org/dist/latest-v20.x/docs/api/buffer.html#buftostringencoding-start-end | ||
name = Buffer.from(name).toString('utf8') | ||
@@ -237,0 +252,0 @@ |
@@ -495,12 +495,7 @@ // https://github.com/Ethan-Arrowood/undici-fetch | ||
if (this[kGuard] === 'immutable') { | ||
const value = this[kHeadersSortedMap] | ||
return makeIterator(() => value, 'Headers', | ||
'key') | ||
} | ||
return makeIterator( | ||
() => [...this[kHeadersSortedMap].values()], | ||
() => this[kHeadersSortedMap], | ||
'Headers', | ||
'key' | ||
'key', | ||
0, 1 | ||
) | ||
@@ -512,12 +507,7 @@ } | ||
if (this[kGuard] === 'immutable') { | ||
const value = this[kHeadersSortedMap] | ||
return makeIterator(() => value, 'Headers', | ||
'value') | ||
} | ||
return makeIterator( | ||
() => [...this[kHeadersSortedMap].values()], | ||
() => this[kHeadersSortedMap], | ||
'Headers', | ||
'value' | ||
'value', | ||
0, 1 | ||
) | ||
@@ -529,12 +519,7 @@ } | ||
if (this[kGuard] === 'immutable') { | ||
const value = this[kHeadersSortedMap] | ||
return makeIterator(() => value, 'Headers', | ||
'key+value') | ||
} | ||
return makeIterator( | ||
() => [...this[kHeadersSortedMap].values()], | ||
() => this[kHeadersSortedMap], | ||
'Headers', | ||
'key+value' | ||
'key+value', | ||
0, 1 | ||
) | ||
@@ -559,3 +544,3 @@ } | ||
for (const [key, value] of this) { | ||
callbackFn.apply(thisArg, [value, key, this]) | ||
callbackFn.call(thisArg, value, key, this) | ||
} | ||
@@ -562,0 +547,0 @@ } |
@@ -742,7 +742,9 @@ 'use strict' | ||
* @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object | ||
* @param {() => unknown[]} iterator | ||
* @param {() => unknown} iterator | ||
* @param {string} name name of the instance | ||
* @param {'key'|'value'|'key+value'} kind | ||
* @param {string | number} [keyIndex] | ||
* @param {string | number} [valueIndex] | ||
*/ | ||
function makeIterator (iterator, name, kind) { | ||
function makeIterator (iterator, name, kind, keyIndex = 0, valueIndex = 1) { | ||
const object = { | ||
@@ -753,5 +755,7 @@ index: 0, | ||
} | ||
// The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. | ||
const iteratorObject = Object.create(esIteratorPrototype) | ||
const i = { | ||
next () { | ||
Object.defineProperty(iteratorObject, 'next', { | ||
value: function next () { | ||
// 1. Let interface be the interface for which the iterator prototype object exists. | ||
@@ -768,3 +772,3 @@ | ||
// then throw a TypeError. | ||
if (Object.getPrototypeOf(this) !== i) { | ||
if (Object.getPrototypeOf(this) !== iteratorObject) { | ||
throw new TypeError( | ||
@@ -789,66 +793,64 @@ `'next' called on an object that does not implement interface ${name} Iterator.` | ||
} | ||
// 11. Let pair be the entry in values at index index. | ||
const pair = values[index] | ||
const { [keyIndex]: key, [valueIndex]: value } = values[index] | ||
// 12. Set object’s index to index + 1. | ||
object.index = index + 1 | ||
// 13. Return the iterator result for pair and kind. | ||
return iteratorResult(pair, kind) | ||
// https://webidl.spec.whatwg.org/#iterator-result | ||
// 1. Let result be a value determined by the value of kind: | ||
let result | ||
switch (kind) { | ||
case 'key': | ||
// 1. Let idlKey be pair’s key. | ||
// 2. Let key be the result of converting idlKey to an | ||
// ECMAScript value. | ||
// 3. result is key. | ||
result = key | ||
break | ||
case 'value': | ||
// 1. Let idlValue be pair’s value. | ||
// 2. Let value be the result of converting idlValue to | ||
// an ECMAScript value. | ||
// 3. result is value. | ||
result = value | ||
break | ||
case 'key+value': | ||
// 1. Let idlKey be pair’s key. | ||
// 2. Let idlValue be pair’s value. | ||
// 3. Let key be the result of converting idlKey to an | ||
// ECMAScript value. | ||
// 4. Let value be the result of converting idlValue to | ||
// an ECMAScript value. | ||
// 5. Let array be ! ArrayCreate(2). | ||
// 6. Call ! CreateDataProperty(array, "0", key). | ||
// 7. Call ! CreateDataProperty(array, "1", value). | ||
// 8. result is array. | ||
result = [key, value] | ||
break | ||
} | ||
// 2. Return CreateIterResultObject(result, false). | ||
return { | ||
value: result, | ||
done: false | ||
} | ||
}, | ||
// The class string of an iterator prototype object for a given interface is the | ||
// result of concatenating the identifier of the interface and the string " Iterator". | ||
[Symbol.toStringTag]: `${name} Iterator` | ||
} | ||
writable: true, | ||
enumerable: true, | ||
configurable: true | ||
}) | ||
// The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. | ||
Object.setPrototypeOf(i, esIteratorPrototype) | ||
// esIteratorPrototype needs to be the prototype of i | ||
// The class string of an iterator prototype object for a given interface is the | ||
// result of concatenating the identifier of the interface and the string " Iterator". | ||
Object.defineProperty(iteratorObject, Symbol.toStringTag, { | ||
value: `${name} Iterator`, | ||
writable: false, | ||
enumerable: false, | ||
configurable: true | ||
}) | ||
// esIteratorPrototype needs to be the prototype of iteratorObject | ||
// which is the prototype of an empty object. Yes, it's confusing. | ||
return Object.setPrototypeOf({}, i) | ||
return Object.create(iteratorObject) | ||
} | ||
// https://webidl.spec.whatwg.org/#iterator-result | ||
function iteratorResult (pair, kind) { | ||
let result | ||
// 1. Let result be a value determined by the value of kind: | ||
switch (kind) { | ||
case 'key': { | ||
// 1. Let idlKey be pair’s key. | ||
// 2. Let key be the result of converting idlKey to an | ||
// ECMAScript value. | ||
// 3. result is key. | ||
result = pair[0] | ||
break | ||
} | ||
case 'value': { | ||
// 1. Let idlValue be pair’s value. | ||
// 2. Let value be the result of converting idlValue to | ||
// an ECMAScript value. | ||
// 3. result is value. | ||
result = pair[1] | ||
break | ||
} | ||
case 'key+value': { | ||
// 1. Let idlKey be pair’s key. | ||
// 2. Let idlValue be pair’s value. | ||
// 3. Let key be the result of converting idlKey to an | ||
// ECMAScript value. | ||
// 4. Let value be the result of converting idlValue to | ||
// an ECMAScript value. | ||
// 5. Let array be ! ArrayCreate(2). | ||
// 6. Call ! CreateDataProperty(array, "0", key). | ||
// 7. Call ! CreateDataProperty(array, "1", value). | ||
// 8. result is array. | ||
result = pair | ||
break | ||
} | ||
} | ||
// 2. Return CreateIterResultObject(result, false). | ||
return { value: result, done: false } | ||
} | ||
/** | ||
@@ -855,0 +857,0 @@ * @see https://fetch.spec.whatwg.org/#body-fully-read |
{ | ||
"name": "undici", | ||
"version": "6.6.0", | ||
"version": "6.6.1", | ||
"description": "An HTTP/1.1 client, written from scratch for Node.js", | ||
@@ -124,3 +124,3 @@ "homepage": "https://undici.nodejs.org", | ||
"jsfuzz": "^1.0.15", | ||
"mitata": "^0.1.6", | ||
"mitata": "^0.1.8", | ||
"mocha": "^10.0.0", | ||
@@ -127,0 +127,0 @@ "p-timeout": "^3.2.0", |
Sorry, the diff of this file is too big to display
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
1240746
22383