diff --git a/progress/progress-test.ts b/progress/progress-test.ts new file mode 100644 index 000000000..699c20b05 --- /dev/null +++ b/progress/progress-test.ts @@ -0,0 +1,32 @@ +/// + +var ProgressBar = require('progress'); + + +/** + * Usage example from https://github.com/tj/node-progress + */ +var bar = new ProgressBar(':bar', { total: 10 }); +var timer = setInterval(function () { + bar.tick(); + if (bar.complete) { + console.log('\ncomplete\n'); + clearInterval(timer); + } +}, 100); + + +/** + * Custom token example from https://github.com/tj/node-progress + */ +var bar = new ProgressBar(':current: :token1 :token2', { total: 3 }); + +bar.tick({ + 'token1': "Hello", + 'token2': "World!\n" +}); + +bar.tick(2, { + 'token1': "Goodbye", + 'token2': "World!" +}); diff --git a/progress/progress.d.ts b/progress/progress.d.ts new file mode 100644 index 000000000..2c7e683ec --- /dev/null +++ b/progress/progress.d.ts @@ -0,0 +1,121 @@ +// Type definitions for node-progress v1.1.8 +// Project: https://github.com/tj/node-progress +// Definitions by: Sebastian Lenz +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + + +declare module "progress" +{ + /** + * These are keys in the options object you can pass to the progress bar along with total as seen in the example above. + */ + interface ProgressBarOptions + { + /** + * Total number of ticks to complete. + */ + total:number; + + /** + * The displayed width of the progress bar defaulting to total. + */ + width?:number; + + /** + * The output stream defaulting to stderr. + */ + stream?:NodeJS.WritableStream; + + /** + * Completion character defaulting to "=". + */ + complete?:string; + + /** + * Incomplete character defaulting to "-". + */ + incomplete?:string; + + /** + * Option to clear the bar on completion defaulting to false. + */ + clear?:boolean; + + /** + * Optional function to call when the progress bar completes. + */ + callback?:Function; + } + + + /** + * Flexible ascii progress bar. + */ + class ProgressBar + { + /** + * Initialize a `ProgressBar` with the given `fmt` string and `options` or + * `total`. + * + * Options: + * - `total` total number of ticks to complete + * - `width` the displayed width of the progress bar defaulting to total + * - `stream` the output stream defaulting to stderr + * - `complete` completion character defaulting to "=" + * - `incomplete` incomplete character defaulting to "-" + * - `renderThrottle` minimum time between updates in milliseconds defaulting to 16 + * - `callback` optional function to call when the progress bar completes + * - `clear` will clear the progress bar upon termination + * + * Tokens: + * - `:bar` the progress bar itself + * - `:current` current tick number + * - `:total` total ticks + * - `:elapsed` time elapsed in seconds + * - `:percent` completion percentage + * - `:eta` eta in seconds + */ + constructor(format:string, total:number); + constructor(format:string, options:ProgressBarOptions); + + + /** + * "tick" the progress bar with optional `len` and optional `tokens`. + */ + tick(tokens?:any):void; + tick(count?:number, tokens?:any):void; + + + /** + * Method to render the progress bar with optional `tokens` to place in the + * progress bar's `fmt` field. + */ + render(tokens?:any):void; + + + /** + * "update" the progress bar to represent an exact percentage. + * The ratio (between 0 and 1) specified will be multiplied by `total` and + * floored, representing the closest available "tick." For example, if a + * progress bar has a length of 3 and `update(0.5)` is called, the progress + * will be set to 1. + * + * A ratio of 0.5 will attempt to set the progress to halfway. + * + * @param ratio The ratio (between 0 and 1 inclusive) to set the + * overall completion to. + */ + update(ratio:number, tokens?:any):void; + + + /** + * Terminates a progress bar. + */ + terminate():void; + } + + + export = ProgressBar; +}