MCPcopy Index your code
hub / github.com/nodejs/node / createIterator

Function createIterator

deps/undici/undici.js:5613–5683  ·  view source on GitHub ↗
(name, kInternalIterator, keyIndex = 0, valueIndex = 1)

Source from the content-addressed store, hash-verified

5611 __name(normalizeMethod, "normalizeMethod");
5612 var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));
5613 function createIterator(name, kInternalIterator, keyIndex = 0, valueIndex = 1) {
5614 class FastIterableIterator {
5615 static {
5616 __name(this, "FastIterableIterator");
5617 }
5618 /** @type {any} */
5619 #target;
5620 /** @type {'key' | 'value' | 'key+value'} */
5621 #kind;
5622 /** @type {number} */
5623 #index;
5624 /**
5625 * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object
5626 * @param {unknown} target
5627 * @param {'key' | 'value' | 'key+value'} kind
5628 */
5629 constructor(target, kind) {
5630 this.#target = target;
5631 this.#kind = kind;
5632 this.#index = 0;
5633 }
5634 next() {
5635 if (typeof this !== "object" || this === null || !(#target in this)) {
5636 throw new TypeError(
5637 `'next' called on an object that does not implement interface ${name} Iterator.`
5638 );
5639 }
5640 const index = this.#index;
5641 const values = kInternalIterator(this.#target);
5642 const len = values.length;
5643 if (index >= len) {
5644 return {
5645 value: void 0,
5646 done: true
5647 };
5648 }
5649 const { [keyIndex]: key, [valueIndex]: value } = values[index];
5650 this.#index = index + 1;
5651 let result;
5652 switch (this.#kind) {
5653 case "key":
5654 result = key;
5655 break;
5656 case "value":
5657 result = value;
5658 break;
5659 case "key+value":
5660 result = [key, value];
5661 break;
5662 }
5663 return {
5664 value: result,
5665 done: false
5666 };
5667 }
5668 }
5669 delete FastIterableIterator.prototype.constructor;
5670 Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype);

Callers 1

iteratorMixinFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…