UNPKG

anthology

Version:

Module information and stats for any @npmjs user

80 lines 35 kB
[ { "name": "changelog", "description": "Command line tool (and Node module) that generates a changelog in color output, markdown, or json for modules in npmjs.org's registry as well as any public github.com repo.", "date": "2013-09-22T03:02:02.713Z", "readme": "Changelog [![Build Status](https://secure.travis-ci.org/dylang/changelog.png)](http://travis-ci.org/dylang/changelog)\n=========\n\n[![NPM](https://nodei.co/npm/changelog.png?downloads=true)](https://nodei.co/npm/changelog/)\n\nChangelog is a command line utility (and module) that generates a changelog in markdown, json, or color output for Node modules in npm and any public github.com repo.\n\nInstall\n=======\n\nUsing [npm](http://npmjs.org) just do:\n\n```\n$ npm -g install changelog\n```\n\nUsing `npm -g` installs changelog globally so you can use `changelog` anywhere. You can also just use `npm install changelog` if you are using it as a module for another project.\n\n\nCommand-line Usage\n==================\n\nNode Modules in NPM\n-------------------\n\nModules do not need to be installed to generate changelog but they must define their `repository url` in their package.json.\n\n![Example using Express](https://github.com/dylang/changelog/raw/master/examples/express.png)\n\n```sh\n$ changelog {npm module name} [release] [options]\n```\n\n`npm module`: The module name, such as `express`, `npm`, `grunt`, etc.\n\nAny Public Github.com Repository\n--------------------------------\n\nChangelog also works on any public Github repo.\n\n```sh\n$ changelog {Github.com repo} [options]\n```\n\n`Github.com repo url`: Urls can be any format, such as `https://github.com/dylang/changelog` or `git@github.com:dylang/changelog.git` or even just `dylang/changelog`.\n\nHelp\n----\n\n`changelog --help`\n\n```\nUsage:\n changelog <npm module name> [versions] [options]\n changelog <github repo url> [versions] [options]\n\nModule name:\n $ changelog npm\n\nGithub repo:\n $ changelog github.com/isaacs/npm\n $ changelog isaacs/npm\n\nVersions:\n latest Default: Show only the latest versions. ex: $ changelog npm latest\n all Show all versions. ex: $ changelog npm all\n number Show that many recent versions. ex: $ changelog npm 3\n n.n.n Show changes for a specific version. ex: $ changelog npm 1.3.11\n\nOptions:\n -c, --color Output as Color (terminal default)\n -m, --markdown Output as Github-flavored Markdown (file default)\n -j, --json Output as JSON\n -d, --debug Enable debugging\n -h, --help Display help and usage details\n```\n\nMore Examples\n=============\n\n * [More Examples](https://github.com/dylang/changelog/tree/master/examples)\n\nChangelog API\n=============\n\nChangelog can be easily integrated into other tools.\n\n````js\nvar changelog = require('changelog');\n\nchangelog.generate(NpmPackageName, countOrVersions) // module name, github repo\n .then(changelog.markdown);\n\n changelog.generate('grunt')\n .then(showChanges);\n\nfunction showChanges(data) {\n\n //With npm each \"version\" corresponds to all changes for that build pushed on npm\n //With github each \"version\" is one GMT day of changes\n data.versions.forEach(function(version) {\n console.log(version.version); //currently npm projects only\n console.log(version.date); //JS Date\n\n //version.changes is an array of commit messages for that version\n version.changes.forEach(function(change) {\n console.log(' * ' + change);\n });\n });\n\n //Information about the project\n console.log(data.project);\n}\n````\n\n\nHow it works\n============\n\n * Changelog uses [npmjs.org API](http://search.npmjs.org/) to get the list of versions and the publish dates.\n * It cross-references the versions in `npm` with the commit history from the [Github's API](http://developer.github.com/).\n\nTests\n=================\n\n`Mocha` tests are included. There aren't very many and don't mock Github or npm's registry so they could be improved.\n\n```js\n$ npm test\n```\n\nAbout\n=====\n\n[Dylan Greene](http://github.com/dylang) built this because he was always curious what was changed when doing `npm update`.\nThis module's name is inspired by listening to [TheChangelog Podcast](http://thechangelog.com/) on the way to [work](http://opower.com).\n\nLicense\n=====\n\n(The MIT License)\n\nCopyright (c) 2011-2013 Dylan Greene <dylang@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." }, { "name": "xml", "description": "Fast and simple xml generator. Supports attributes, CDATA, etc. Includes tests and examples.", "date": "2013-09-15T21:48:38.304Z", "readme": "# XML for Node [![Build Status](https://secure.travis-ci.org/dylang/node-xml.png)](http://travis-ci.org/dylang/node-xml)\n\n [![NPM](https://nodei.co/npm/xml.png?downloads=true)](https://nodei.co/npm/xml/)\n\n> Fast and simple Javascript-based XML generator/builder for Node projects.\n\n## Install\n\n $ npm install xml\n\n## API\n\n### `xml(xmlObject, options)`\n\nReturns a `XML` string.\n\n```js\nvar xml = require('xml');\nvar xmlString = xml(xmlObject, options);\n```\n\n#### `xmlObject`\n\n`xmlObject` is a normal JavaScript Object/JSON object that defines the data for the XML string.\n\nKeys will become tag names.\nValues can be an `array of xmlObjects` or a value such as a `string` or `number`.\n\n```js\nxml({a: 1})) === '<a>1</a>'\nxml({nested: [{ keys: [{ fun: 'hi' }]}]}) === '<nested><keys><fun>hi</fun></keys></nested>'\n```\n\nThere are two special keys:\n\n`_attr`\n\nSet attributes using a hash of key/value pairs.\n\n```js\nxml({a: [{ _attr: { attributes: 'are fun', too: '!' }}, 1]}) === '<a attributes=\"are fun\" too=\"!\">1</a>'\n````\n`_cdata`\n\nValue of `_cdata` is wrapped in xml `![CDATA[]]` so the data does not need to be escaped.\n\n```js\nxml({a: { _cdata: \"i'm not escaped: <xml>!\"}}) === '<a><![CDATA[i\\'m not escaped: <xml>!]]></a>'\n```\n\nMixed together:\n```js\nxml({a: { _attr: { attr:'hi'}, _cdata: \"I'm not escaped\" }}) === '<a attr=\"hi\"><![CDATA[I\\'m not escaped]]></a>'\n```\n\n#### `options`\n\n`indent` _optional_ **string** What to use as a tab. Defaults to no tabs (compressed).\n For example you can use `'\\t'` for tab character, or `' '` for two-space tabs.\n\n`stream` Return the result as a `stream`.\n\n**Stream Example**\n\n```js\nvar elem = xml.element({ _attr: { decade: '80s', locale: 'US'} });\nvar stream = xml({ toys: elem }, { stream: true });\nstream.on('data', function (chunk) {console.log(\"data:\", chunk)});\nelem.push({ toy: 'Transformers' });\nelem.push({ toy: 'GI Joe' });\nelem.push({ toy: [{name:'He-man'}] });\nelem.close();\n\n/*\nresult:\ndata: <toys decade=\"80s\" locale=\"US\">\ndata: <toy>Transformers</toy>\ndata: <toy>GI Joe</toy>\ndata: <toy>\n <name>He-man</name>\n </toy>\ndata: </toys>\n*/\n```\n\n\n## Examples\n\n**Simple Example**\n\n```js\nvar example1 = [ { url: 'http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=opower' } ];\nconsole.log(XML(example1));\n//<url>http://www.google.com/search?aq=f&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=opower</url>\n```\n\n**Example with attributes**\n\n```js\nvar example2 = [ { url: { _attr: { hostname: 'www.google.com', path: '/search?aq=f&sourceid=chrome&ie=UTF-8&q=opower' } } } ];\nconsole.log(XML(example2));\n//<url hostname=\"www.google.com\" path=\"/search?aq=f&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=opower\"/>\n```\n\n**Example with array of same-named elements and nice formatting**\n\n```js\nvar example3 = [ { toys: [ { toy: 'Transformers' } , { toy: 'GI Joe' }, { toy: 'He-man' } ] } ];\nconsole.log(XML(example3));\n//<toys><toy>Transformers</toy><toy>GI Joe</toy><toy>He-man</toy></toys>\nconsole.log(XML(example3, true));\n/*\n<toys>\n <toy>Transformers</toy>\n <toy>GI Joe</toy>\n <toy>He-man</toy>\n</toys>\n*/\n```\n\n**More complex example**\n\n```js\nvar example4 = [ { toys: [ { _attr: { decade: '80s', locale: 'US'} }, { toy: 'Transformers' } , { toy: 'GI Joe' }, { toy: 'He-man' } ] } ];\nconsole.log(XML(example4, true));\n/*\n<toys decade=\"80s\" locale=\"US\">\n <toy>Transformers</toy>\n <toy>GI Joe</toy>\n <toy>He-man</toy>\n</toys>\n*/\n```\n\n**Even more complex example**\n\n```js\nvar example5 = [ { toys: [ { _attr: { decade: '80s', locale: 'US'} }, { toy: 'Transformers' } , { toy: [ { _attr: { knowing: 'half the battle' } }, 'GI Joe'] }, { toy: [ { name: 'He-man' }, { description: { _cdata: '<strong>Master of the Universe!</strong>'} } ] } ] } ];\nconsole.log(XML(example5, true));\n/*\n<toys decade=\"80s\" locale=\"US\">\n <toy>Transformers</toy>\n <toy knowing=\"half the battle\">\n GI Joe\n </toy>\n <toy>\n <name>He-man</name>\n <description><![CDATA[<strong>Master of the Universe!</strong>]]></description>\n </toy>\n</toys>\n*/\n```\n\n\n## Tests\n\nTests included use Mocha. Use `npm test` to run the tests.\n\n $ npm test\n\n## Examples\n\nThere are examples in the examples directory.\n\n# Contributing\n\nContributions to the project are welcome. Feel free to fork and improve. I accept pull requests and issues,\nespecially when tests are included.\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2011-2013 Dylan Greene <dylang@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." }, { "name": "rss", "description": "RSS feed generator. A really simple API to add RSS feeds to any project.", "date": "2013-09-14T20:30:16.525Z", "readme": "# RSS for Node [![Build Status](https://secure.travis-ci.org/dylang/node-rss.png)](http://travis-ci.org/dylang/node-rss)\n\n [![NPM](https://nodei.co/npm/rss.png?downloads=true)](https://nodei.co/npm/rss/)\n\n> Fast and simple RSS generator/builder for Node projects. Supports enclosures and GeoRSS.\n\n## Install\n\n $ npm install rss\n\n## Usage\n\n### Create a new feed\n\n```js\nvar RSS = require('rss');\n\nvar feed = new RSS(feedOptions);\n```\n\n#### `feedOptions`\n\n * `title` **string** Title of your site or feed\n * `description` _optional_ **string** A short description of the feed.\n * `generator` _optional_ **string** Feed generator.\n * `feed_url` **url string** Url to the rss feed.\n * `site_url` **url string** Url to the site that the feed is for.\n * `image_url` _optional_ **url string* Small image for feed readers to use.\n * `docs` _optional_ **url string** Url to documentation on this feed.\n * `author` **string** Who owns this feed.\n * `managingEditor` _optional_ **string** Who manages content in this feed.\n * `webMaster` _optional_ **string** Who manages feed availability and technical support.\n * `copyright` _optional_ **string** Copyright information for this feed.\n * `language` _optional_ **string** The language of the content of this feed.\n * `categories` _optional_ **array of strings** One or more categories this feed belongs to.\n * `pubDate` _optional_ **Date object or date string** The publication date for content in the feed\n * `ttl` _optional_ **integer** Number of minutes feed can be cached before refreshing from source.\n\n### Add items to a feed\n\nAn item can be used for a blog entry, project update, log entry, etc. Your RSS feed\nan have any number of items. Most feeds use 20 or fewer items.\n\n```js\nfeed.item(itemOptions);\n```\n\n#### itemOptions\n\n * `title` **string** Title of this particular item.\n * `description` **string** Content for the item. Can contain html but link and image urls must be absolute path including hostname.\n * `url` **url string** Url to the item. This could be a blog entry.\n * `guid` **unique string** A unique string feed readers use to know if an item is new or has already been seen.\n If you use a guid never change it. If you don't provide a guid then your item urls must\n be unique.\n * `categories` _optional_ **array of strings** If provided, each array item will be added as a category element\n * `author` _optional_ **string** If included it is the name of the item's creator.\n If not provided the item author will be the same as the feed author. This is typical\n except on multi-author blogs.\n * `date` **Date object or date string** The date and time of when the item was created. Feed\n readers use this to determine the sort order. Some readers will also use it to determine\n if the content should be presented as unread.\n * `lat` _optional_ **number** The latitude coordinate of the item.\n * `long` _optional_ **number** The longitude coordinate of the item.\n\n#### Feed XML\n\n```js\nvar xml = feed.xml(indent);\n```\n\nThis returns the XML as a string.\n\n`indent` _optional_ **string** What to use as a tab. Defaults to no tabs (compressed).\n For example you can use `'\\t'` for tab character, or `' '` for two-space tabs.\n\n## Example Usage\n\n```js\nvar RSS = require('rss');\n\n/* lets create an rss feed */\nvar feed = new RSS({\n title: 'title',\n description: 'description',\n feed_url: 'http://example.com/rss.xml',\n site_url: 'http://example.com',\n image_url: 'http://example.com/icon.png',\n docs: 'http://example.com/rss/docs.html',\n author: 'Dylan Greene',\n managingEditor: 'Dylan Greene',\n webMaster: 'Dylan Greene',\n copyright: '2013 Dylan Greene',\n language: 'en',\n categories: ['Category 1','Category 2','Category 3'],\n pubDate: 'May 20, 2012 04:00:00 GMT',\n ttl: '60'\n});\n\n/* loop over data and add to feed */\nfeed.item({\n title: 'item title',\n description: 'use this for the content. It can include html.',\n url: 'http://example.com/article4?this&that', // link to the item\n guid: '1123', // optional - defaults to url\n categories: ['Category 1','Category 2','Category 3','Category 4'], // optional - array of item categories\n author: 'Guest Author', // optional - defaults to feed author property\n date: 'May 27, 2012' // any format that js Date can parse.\n lat: 33.417974, //optional latitude field for GeoRSS\n long: -111.933231, //optional longitude field for GeoRSS\n enclosure : {url:'...', file:'path-to-file'} // optional enclosure\n});\n\n// cache the xml to send to clients\nvar xml = feed.xml();\n```\n\n## Tests\n\nTests included use Mocha. Use `npm test` to run the tests.\n\n $ npm test\n\n## Notes\n * You do not need to escape anything. This module will escape characters when necessary.\n * This module is very fast but you might as well cache the output of xml() and serve\n it until something changes.\n\n# History\n\nI started this module over two years ago (April 2011) because there weren't any Node modules\nfor creating RSS. Besides these [25 modules](https://npmjs.org/browse/depended/rss)\nI would love to know what other projects are using it.\n\n# Contributing\n\nContributions to the project are welcome. Feel free to fork and improve.\nI do my best accept pull requests in a timely manor, especially when tests and updated docs\nare included.\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2011-2013 Dylan Greene <dylang@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." }, { "name": "grunt-notify", "description": "Automatic desktop notifications for Grunt errors and warnings using Growl for OS X or Windows, Mountain Lion Notification Center, and Notify-Send.", "date": "2013-08-27T03:47:42.304Z", "readme": "# grunt-notify\n\n> Automatic OSX Native Notifications when Grunt tasks fail.\n\nThis requires `Grunt 0.4`. It also requires `OSX 10.8.2` (Mountain Lion) but it won't cause errors in older OSX versions or other platforms. \n\n## Getting Started\n\n```bash\nnpm install grunt-notify --save-dev\n```\n\nOnce that's done, add this line to your project's Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-notify');\n```\n\n## Automatic behavior\nBy including `grunt.loadNpmTasks('grunt-notify');` in your `Gruntfile.js` you will automatically get notifications when Grunt has warnings or errors!\n\n[![Notify with Nodeunit](https://github.com/dylang/grunt-notify/raw/master/screenshots/nodeunit.png)]\n\n## Configuring the automatic behavior\nThese are the defaults. Any can be changed.\n\n```js\ngrunt.initConfig({\n notify_hooks: {\n options: {\n warnHookEnabled: true,\n errorHookEnabled: true,\n\n warnHookDefaultTitle: 'Grunt Warning',\n warnHookDefaultMessage: 'Warning!', // used if the warning from Grunt is not available\n\n errorHookDefaultTitle: 'Grunt Error',\n errorHookDefaultMessage: 'Error!' // used if the error from Grunt is not available\n }\n }\n});\n\n// Load the task\ngrunt.loadNpmTasks('grunt-notify');\n\n// Always run it anytime you use `grunt` it uses your `notify_hooks` options.\ngrunt.task.run('notify_hooks');\n```\n\n[![JSHint Example](https://github.com/dylang/grunt-notify/raw/master/screenshots/jshint.png)]\n\n## Arbitrary figuring Notification Messages\n\n### notify Muti-task\nLets say you want a notification `watch` detects a change or when uploading to `s3` is complete. That's very easy to do:\n\n```js\ngrunt.initConfig({\n notify: {\n task_name: {\n options: {\n // Task-specific options go here.\n }\n },\n watch: {\n options: {\n title: 'Task Complete', // optional\n message: 'SASS and Uglify finished running', //required\n subtitle: '' // optional, kinda a lot for a message\n }\n },\n helloWorld: {\n options: {\n message: 'Hello world!'\n }\n }\n },\n});\n\ngrunt.loadNpmTasks('grunt-notify');\ngrunt.registerTask('default', 'notify:helloWorld');\n```\n[![Watch example](https://github.com/dylang/grunt-notify/raw/master/screenshots/watch.png)]\n\n### Options\n* `title` (_optional_): Notification title\n* `message` (_required_): Notification message\n* `subtitle` (_optional_): Subtitle, I think it's a bit much.\n\n## Tests\nRun `grunt` to lint and run the tests.\n\n## Terminal Notifier\nTo use the native notification system OSX requires packages to be signed and compiled using their platform and tools. This is not very friendly for Node users so we are using the tiny signed native application [Terminal Notifer](https://github.com/alloy/terminal-notifier) from [Eloy Durán](https://github.com/alloy). We're stuck with the default icon for now, if anybody knows how it would be nice if we could use the Grunt logo or something custom instead.\n\n## Growl, Windows, etc\nWish there was fallback support for Growl and other systems? Post a pull request with updated docs and tests and I'll be happy to update it.\n\n## Doodle or Die\nThis project was created for and is used by [Doodle or Die](http://doodleOrDie.com). \n\n[![Doodle or Die example](https://github.com/dylang/grunt-notify/raw/master/screenshots/deploy.png)](http://doodleOrDie.com)\n\n## Release History\nDec 28 - First version\n" }, { "name": "grunt-prompt", "description": "Add interactive console prompts to your Gruntfile such as lists, checkboxes, text input with filtering, and password fields.", "date": "2013-08-18T21:17:07.626Z", "readme": "# grunt-prompt\n\n> Ask questions during your Grunt workflow. Use user input for later tasks\n\n\n#### Choose from a list:\n![List](https://f.cloud.github.com/assets/51505/823607/6549de22-f017-11e2-8a70-04bf663d5876.png)\n\n#### Select more than one:\n![Choices](https://f.cloud.github.com/assets/51505/823611/92c06a10-f017-11e2-82cf-24b1b8e5601d.png)\n\n#### Text input with validation and filtering:\n![Input](https://f.cloud.github.com/assets/51505/823612/aa893c08-f017-11e2-97bb-f5eef6c1e845.png)\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1`\n\n```shell\nnpm install grunt-prompt --save-dev\n```\n\nOne the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-prompt');\n```\n\n## grunt-prompt\n\n### Overview\nIn your project's Gruntfile, add a section named `prompt` to the data object passed into `grunt.initConfig()`.\n\n`grunt-prompt` is a multi-task. This means you can create multiple prompts.\n\n```js\ngrunt.initConfig({\n prompt: {\n target: {\n options: {\n questions: [\n config: 'config.name', // arbitray name or config for any other grunt task\n type: '<question type>', // list, checkbox, confirm, input, password\n message: 'Question to ask the user',\n default: 'value', // default value if nothing is entered\n choices: 'Array|Function(answers)',\n validate: Function(value), // return true if valid, error message if invalid\n filter: Function(value), // modify the answer\n when: Function(answers) // only ask this question when this function returns true\n ]\n }\n },\n },\n})\n```\n\n### Options\n\n#### config\n\nType: `String` _required_\n\nThis is used for three things:\n\n * It will set or overwrite the config of other Grunt tasks: `config: 'jshint.allFiles.reporter'`\n * The key in the resulting `answers` object: `if (answers['jshint.allFiles.reporter'] === 'custom') {...`\n * It can be an abitrary value read using `grunt.config`: `grunt.config('jshint.allFiles.reporter')`\n\n#### type\n\nType: `String` _required_\n\nType of question to ask:\n\n * `list`: use arrow keys to pick one choice. Returns a string.\n * `checkbox`: use arrow keys and space bar to pick multiple items. Returns an array.\n * `confirm`: Yes/no. Returns a boolean.\n * `input`: Free text input. Returns a string.\n * `password`: Masked input. Returns a string.\n\nThe documentation for Inquiry has [more details about type](https://github.com/SBoudrias/Inquirer.js#prompts-type) as well as additional typess.\n\n#### message\n\nType: `String` _required_\n\nQuestion to ask the user.\n\nHint: keep it short, users hate to read.\n\n#### default\n\nType: `String`/`Array`/`Boolean` depending on `question type` _optional_\n\nDefault value used when the user just bangs Enter.\n\n#### choices\n\nFor `question type 'list'`: Type: `array of strings`\n\n```\nchoices: ['jshint', 'jslint', 'eslint', 'I like to live dangerously.']\n```\n\nFor `question type 'checkbox'`: Type: `array of hashes`\n\nInclude `checked: true` to select it by default.\n\n```\nchoices: [\n {name: 'jshint', checked: true},\n {name: 'jslint'},\n {name: 'eslint'}\n ]\n```\n\n#### validate\n\nType: `function(value)` _optional_\n\nReturn `true` if it is valid (true `true`, not a truthy value).\nReturn `string` message if it is not valid.\n\n#### filter\n\nType: `function(value)` _optional_\n\nUse a modified version of the input for the answer. Useful for stripping extra characters, converting strings to integers, etc.\n\n#### when\n\nType: `function(answers)` _optional_\n\nChoose when this question is asked. Perfect for asking questions based on the results of previous questions.\n\n\n### Usage Examples\n\n\n\nThis is an example of how `grunt-prompt` for something like [grunt-bump](https://github.com/vojtajina/grunt-bump) which makes it easy to\nupdate your project's version in the `package.json`, `bower.json`, and `git tag`.\n\n```js\nprompt: {\n prompt: {\n bump: {\n options: {\n questions: [\n {\n config: 'bump.increment',\n type: 'list',\n // normally these versions wouldn't be hardcoded\n message: 'Bump version from ' + '1.2.3'.cyan + ' to:',\n choices: [\n '1.2.4-? ❘❙❚ Build: unstable, betas, and release candidates.',\n '1.2.4 ❘❙❚ Patch: backwards-compatible bug fixes.',\n '1.3.0 ❘❙❚ Minor: add functionality in a backwards-compatible manner.',\n '2.0.0 ❘❙❚ Major: incompatible API changes.',\n '?.?.? ❘❙❚ Custom: Specify version...'\n ],\n filter: function (value) {\n var matches = value.match(/([^(\\s)]*):/);\n return matches && matches[1].toLowerCase();\n }\n },\n {\n config: 'bump.version',\n type: 'input',\n message: 'What specific version would you like',\n when: function (answers) {\n return answers['bump.increment'] === 'custom';\n },\n validate: function (value) {\n var valid = require('semver').valid(value) && true;\n return valid || 'Must be a valid semver, such as 1.2.3. See http://semver.org/';\n }\n },\n {\n config: 'bump.files',\n type: 'checkbox',\n message: 'What should get the new version:',\n choices: [\n {\n name: 'package.json',\n checked: grunt.file.isFile('package.json')\n },\n {\n name: 'bower.json',\n checked: grunt.file.isFile('bower.json')\n },\n {\n name: 'git tag',\n checked: grunt.file.isDir('.git')\n }\n ]\n }\n ]\n }\n }\n }\n}```\n```\n\n## Release History\n\n* **0.1.0** - 18 July 2013 - First version, after an exhausting but fun day with the family at Hershey Park." }, { "name": "shortid", "description": "Amazingly short non-sequential url-friendly unique id generator.", "date": "2013-07-21T03:07:49.535Z", "readme": "# ShortId [![Build Status](https://secure.travis-ci.org/dylang/Shortid.png)](http://travis-ci.org/dylang/Shortid)\n\nShortId is a tiny id generator good for creating guarenteed unique ids that are easier to use in urls and for sharing than UUID's.\n\n* 8-12 characters\n* Non-sequential so they are not predictable.\n* Random alphabet based on a seed you provide so others can't decrypt them.\n* Includes version in case you want to change how you encode your id.\n* Includes cluster worker id so you can use this on multi-processor server instances.\n* Includes tests that run on Mocha.\n\n## ShortId.generate() returns id\n\nOther functions (docs coming soon)\n\n* ShortId.version(int) sets version, returns ShortId\n* ShortId.worker(int) sets cluster worker, returns ShortId\n\nSee the tests for more examples." }, { "name": "grunt-cat", "description": "Echo a file to the terminal. Works with text, figlets, ascii art, and full-color ansi.", "date": "2013-06-16T19:04:05.231Z", "readme": "# grunt-cat\n\n> Cat a file to the terminal. Works great with text, ascii art, and even colorful ansi.\n\nThis task may require `Grunt 0.4`.\n\n## Getting Started\n\n```bash\nnpm install grunt-notify --save-dev\n```\n\nOnce that's done, add this line to your project's Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-cat');\n```\n\n## Cat a file\n\n### The notify MutiTask\nShow a message whenever you want!\n\n```js\ngrunt.initConfig({\n cat: {\n logo: {\n file: 'files/logo.txt'\n },\n prod: {\n file: 'files/prod-logo.txt'\n }\n }\n});\n\ngrunt.loadNpmTasks('grunt-cat');\n\n// simplified example\ngrunt.registerTask('server', ['cat:logo', 'uglify', 'sass', 'server', 'notify:server']);\n```\n\n[![Watch example](https://github.com/dylang/grunt-cat/raw/master/screenshots/doodleordie.png)](https://github.com/dylang/grunt-cat)\n\n### Options\n* `file` (_required_): Path to the file. This is relative to the root of your project.\n\n## Tests\nRun `grunt` to lint and run the tests.\n\n## Doodle or Die\nThis project was created for and is used by [Doodle or Die](http://doodleOrDie.com).\n\nThis is what it looks like when we run our local dev server using the production MongoDB:\n\n[![Doodle or Die example](https://github.com/dylang/grunt-cat/raw/master/screenshots/doodleordie-prod.png)](http://doodleOrDie.com)\n\n## Release History\nDec 28 - First version\n" }, { "name": "doodleordie", "description": "Placeholder for http://doodleordie.com/", "date": "2012-11-11T04:55:34.513Z", "readme": "Doodle or Die\n=============\n\nPlaceholder for eventual API.\n\nhttp://doodleordie.com" }, { "name": "logging", "description": "Super sexy color console logging with cluster support.", "date": "2012-11-11T04:37:54.744Z", "readme": "\n# Logging [![Build Status](https://secure.travis-ci.org/dylang/logging.png)](http://travis-ci.org/dylang/logging)\n\n Super sexy color console logging with cluster support.\n\n\n## Install\n\n npm install logging\n\n\n## Usage\n\n var log = require('logging').from(__filename);\n\n log('hello world');\n\n log('counter', 123);\n\n log('global variables', global);\n\n log(1, \"2\", [ 3, 4 ], { 5: 6 }, function() { return 7; });\n\n\n## Features\n\n * Color\n * Timestamp\n * Filename\n * Cluster Worker id\n * Inspects arrays, objects, functions - all in color.\n * Fast\n * Easy\n * Used in production on Node Knockout winner [Doodle or Die](http://DoodleOrDie.com).\n\n## Todo\n * Timezone, 24/12-hour options.\n * Wire up the tests.\n * More colors/effects.\n * warn/error.\n\n## Contributors\n\n * Dylan Greene [dylang](http://github.com/dylang)\n\n## External Dependencies\n\n * Node\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2010 Dylan Greene &lt;dylang@gmail.com&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." }, { "name": "jobvite", "description": "Access job listings and reports from Jobvite.", "date": "2012-05-17T21:06:42.789Z", "readme": "# Jobvite Node API\n\n Node-based API for job listings and reports in the Jobvite service.\n\n## DISCLAIMER\n\n The author of this package is not an employee or partner of Jobvite.\n This is a 3rd party package that you should use at your own risk.\n\n## See it in action\n\n [http://www.opowerjobs.com](http://www.opowerjobs.com)\n\n## Documentation\n\n * TBD... Yeah the most important part, I know.\n\n## Features\n\n * Job listings\n * Report data\n\n" }, { "name": "lean", "description": "A super simple and fast in-memory data store. For when couch and other nosql solutions are more than you need.", "date": "2011-10-28T19:13:38.507Z", "readme": "" }, { "name": "opower-jobs", "description": "An example of a full live site using Node, Express, Connect, EJS, AMS, Jobvite, Logging, and other Node modules. Demo: http://opowerjobs.com", "date": "2011-10-28T18:52:36.797Z", "readme": "" }, { "name": "tramp", "description": "Translate Message Properties using Google Translate", "date": "2011-03-30T17:41:29.297Z", "readme": "" } ]