UNPKG

kinesis-client-library

Version:

Process Kinesis streams and automatically scale up or down as shards split or merge.

34 lines (33 loc) 1.06 kB
"use strict"; var async_1 = require('async'); exports.listShards = function (client, stream, callback) { var shards = []; var foundAllShards = false; var startShardId; var next = function (done) { var params = { StreamName: stream, ExclusiveStartShardId: startShardId, }; client.describeStream(params, function (err, data) { if (err) { return done(err); } if (!data.StreamDescription.HasMoreShards) { foundAllShards = true; } var lastShard = data.StreamDescription.Shards[data.StreamDescription.Shards.length - 1]; startShardId = lastShard.ShardId; shards = shards.concat(data.StreamDescription.Shards); done(); }); }; var test = function () { return !!foundAllShards; }; var finish = function (err) { if (err) { return callback(err); } callback(null, shards); }; async_1.doUntil(next, test, finish); };