@anglr/rest
Version:
Angular module representing rest services
60 lines • 2.01 kB
JavaScript
/**
* Iterator for params data
*/
export class ParamsDataIterator {
//######################### public properties #########################
/**
* Iterator for params data
*/
[Symbol.iterator]() {
let x = 0;
const args = this.args;
const paramData = this.paramData ?? [];
const transforms = this.transforms;
const restClient = this.restClient;
return {
next() {
//skip optional parameters
while (x < paramData.length && args[paramData[x].parameterIndex] === undefined) {
x++;
}
if (x >= paramData.length) {
return {
done: true,
value: undefined
};
}
const param = paramData[x];
const value = args[param.parameterIndex];
let transformFn = transforms ? transforms[param.parameterIndex] : null;
if (transformFn) {
transformFn = transformFn.bind(restClient);
}
if (x < paramData.length) {
x++;
return {
value: {
index: param.parameterIndex,
key: param.key,
value,
transformFn,
},
done: false
};
}
return {
value: undefined,
done: true
};
}
};
}
//######################### constructor #########################
constructor(paramData, transforms, args, restClient) {
this.paramData = paramData;
this.transforms = transforms;
this.args = args;
this.restClient = restClient;
}
}
//# sourceMappingURL=paramsData.iterator.js.map