json-api-nestjs
Version:
JsonApi Plugin for NestJs
44 lines • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AsyncIterate = void 0;
const constants_1 = require("../constants");
class GeneralAsyncIterator {
iterateObject;
callback;
counter = 0;
maxLimit;
constructor(iterateObject, callback) {
this.iterateObject = iterateObject;
this.callback = callback;
if (!Array.isArray(iterateObject)) {
throw new Error('Expected iterateObject to be an array');
}
this.maxLimit = iterateObject.length;
}
async next() {
const items = !Array.isArray(this.iterateObject[this.counter])
? [this.iterateObject[this.counter]]
: this.iterateObject[this.counter];
this.counter++;
if (this.counter <= this.maxLimit) {
return this.callback(...items).then((r) => ({
done: false,
value: r,
}));
}
else {
return Promise.resolve({ done: true, value: {} });
}
}
}
exports.AsyncIterate = {
provide: constants_1.ASYNC_ITERATOR_FACTORY,
useFactory: () => ({
createIterator(iterateObject, callback) {
return {
[Symbol.asyncIterator]: () => new GeneralAsyncIterator(iterateObject, callback),
};
},
}),
};
//# sourceMappingURL=async-iterator.js.map