UNPKG

aws-iam-policy-tool

Version:
64 lines (63 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = require("stream"); const iam_1 = require("./iam"); /** * ListStream * * incremental fetching target as readable stream */ class ListStream extends stream_1.Readable { /** * Contructor * * @param {String} target - Policies | Roles * @param {Object} params - params of listPolicies */ constructor(params = {}) { super({ objectMode: true, highWaterMark: 100 }); this.params = params; this.marker = undefined; } _read(m) { const params = Object.assign({}, this.params); if (this.marker) params.Marker = this.marker; this.pause(); this._fetch(params) .then(() => { this.resume(); }) .catch((err) => { this.emit('error', err); }); } } class ListRoleStream extends ListStream { async _fetch(params) { const data = await iam_1.iam.listRoles(params).promise(); data.Roles.forEach((item) => this.push(item)); if (data.IsTruncated) { this.marker = data.Marker; } else { this.marker = undefined; this.push(null); // EOS } } } exports.ListRoleStream = ListRoleStream; class ListPolicyStream extends ListStream { async _fetch(params) { const data = await iam_1.iam.listPolicies(params).promise(); data.Policies.forEach((item) => this.push(item)); if (data.IsTruncated) { this.marker = data.Marker; } else { this.marker = undefined; this.push(null); // EOS } } } exports.ListPolicyStream = ListPolicyStream;