{"_id":"steamshovel","_rev":"58-bca8513626cb052852e415d7ce59b959","name":"steamshovel","time":{"modified":"2022-06-27T00:17:18.553Z","created":"2014-03-21T06:12:13.003Z","0.0.1":"2014-03-21T06:12:14.993Z","0.0.2":"2014-03-21T06:17:56.545Z","0.0.3":"2014-03-21T06:19:12.239Z","0.0.5":"2014-03-24T04:03:48.137Z","0.0.6":"2014-03-24T07:32:28.305Z","0.0.7":"2014-03-26T03:28:25.991Z","0.0.8":"2014-03-26T05:25:05.385Z","0.0.9":"2014-04-03T03:57:42.684Z","0.0.10":"2014-04-04T00:29:46.122Z","0.1.0-a1":"2014-05-21T09:15:37.751Z","0.1.0-a3":"2014-05-22T06:31:11.298Z"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}],"description":"Code Coverage Done Right!","readme":"SteamShovel\n===========\n\nJS code coverage done right. [Why?](#why-should-you-use-steamshovel)\n\n[![See an example report](https://files.app.net/2h8pnciKv.png)](http://rawgithub.com/cgiffard/SteamShovel/master/report.html)\n\n### Get Started\n\n```sh\n\n# install\nnpm install -g steamshovel\n\n# instrument\nshovel mySourceDirectory myInstrumentedDirectory\n\n# introspect\nmocha -R steamshovel\n\n```\n\nFor a more detailed guide to the SteamShovel internals, see\nthe [API section.](#api)\n\n### Why Should You Use SteamShovel\n\n\"But I like Blanket/Istanbul/JScover!\" I hear you say. \"Why should I move?\"\n\nThat's a great question. It comes down to this:\n\n**Your existing instrumentor is lying to you.**\n\nThat's right. When you run your tests, and the coverage data is collected, the\ninstrumentor only pays attention to whether a code branch was run... or wasn't.\nUnfortunately this is a gross oversimplification of how code is invoked by a\ntest suite, and it will leave you with a false sense of security.\n\nThe hypothesis behind SteamShovel is this:\n\n**Your unit tests should run your code directly. Indirect invocation is probably\nunintentional, and that code shouldn't be considered tested.**\n\nIn order to support this hypothesis, SteamShovel records the stack depth of the\ninstrumentor at every invocation, and calculates the 'testedness' of a given\nbranch by applying a weighted inverse logarithm to this depth.\n\nThis gives you a **much more accurate** code coverage value. The variance in\n'coverage' as defined by SteamShovel and a conventional instrumentor like\nIstanbul can be as much as 50% — that's how much Istanbul is over-reporting.\n\n### What else?\n\nSteamShovel can do a whole lot more, too:\n\n* Profile timing, order, and stack depth\n* Record environment data like memory or load on a per-expression level (set the\n  environment variable `REPORTER_OUTPUT` to `csv` and you'll get an expression\n  level dump of timing and memory data!\n* Save the result of every evaluation of every expression in your codebase, and\n  let you step through the results of your test run, interactively. **(Coming\n  soon!)**\n* SteamShovel can now auto-instrument your code as you require it! Simply set\n  the `AUTO_INSTRUMENT` environment variable to `true` before running the\n  SteamShovel reporter. Remember that this won't instrument code that isn't\n  required, so the manual instrumentor may be more accurate in some cases.\n\nYou can override the SteamShovel instrumentor with your own, and record anything\nyou might want to record! The sky is the limit.\n\n![SteamShovel's exported memory data from a test run](https://files.app.net/2p54lXIXq.png)\n\n**Seen here: SteamShovel's recorded memory data from a test run, visualised in,\nuh... Numbers.app**\n\nSee also: [Stack depth of calls over time](https://files.app.net/2p5qdpjOu.png),\n[Call latency over run-time of test suite](https://files.app.net/2p5qbErUo.png)\n— you're only limited by your imagination here.\n\n### Caveat\n\nBecause SteamShovel records so much more from your code, it does have a\nconsiderable performance impact. However, the accuracy of your test coverage\ndata should be more important than how quickly it runs.\n\nAlso, (if you couldn't tell already!) SteamShovel is early in its development.\nBe careful: **there will be an excruciating number of bugs.**\n\n**I am most of the way through an important refactor which will make steamshovel\nready for use by anyone!**\n\n### Todo\n\n* Stats generation needs to be a lot more abstract, and a lot faster. Look\n  forward to a huge amount of progress in this area!\n* Stats should also allow arbitrary queries to be developed against the data\n  which could be defined by a model and included in the template.\n* Gotta make things even easier to use!\n* More info in the default HTML output.\n* Memory usage and timing output as CSV & JSON!\n\n## API\n\n### Processing Files\n\nYou can recursively instrument one or more directories or files by using the\nSteamShovel instrument processor. This is the same system the CLI tool uses to\ninstrument your code.\n\n```js\nvar steamshovel = require(\"steamshovel\");\n\nsteamshovel.process(\"./lib\", \"./lib-instrumented\")\n\t.on(\"complete\", function(inFile) {\n\t\tconsole.log(\"The instrumentation of %s is complete!\", inFile);\n\t});\n```\n\n#### steamshovel.process ( <string | array> `inFile`, `outFile` <string | array> , EventEmitter emitter )\n\nThis function takes a string describing an input file or directory, or an array\nof strings of files/directories. If the first parameter is an array, the second\nmust also be an array, and their lengths must be the same.\n\nThe function returns an event emitter, to which it emits the following events:\n\n* `complete` (`file`) — the processing for one of the directly specified files\n  or directories is complete.\n* `dircomplete` (`dir`) — the processing for a given directory is complete (this\n  is emitted for directories that SteamShovel discovers, too — not just for\n  directly specified trees.)\n* `error` (`error`, `path/file`) — an error was emitted from a filesystem\n  operation.\n* `ignore` (`file`) — this file was explicitly ignored (the directive\n  `steamShovel:ignore` was found in the file.)\n* `instrumenterror` (`err`, `file`) — an error occurred while attempting to\n  instrument a given file (most likely a syntax error.)\n* `mkdir` (`path`) — emitted when SteamShovel creates a new directory\n* `nojs` (`file`) — SteamShovel discovered a file, but it is not a JavaScript\n  file and will be ignored. (It will be written into the new tree, but not\n  instrumented.)\n* `processdir` (`dir`, `out`) — Emitted when SteamShovel begins processing a new\n  directory\n* `readdir` (`dir`) — Emitted after SteamShovel reads the contents of a\n  directory.\n* `readfile` (`file`) — Emitted after SteamShovel completes reading a file.\n* `writefile` (`file`) — Emitted after SteamShovel completes writing a file.\n\n### Instrumenting Code\n\nYou can instrument code on a file by file basis by using the\n`steamshovel.instrument` method.\n\n#### `steamshovel.instrument` ( <string> `data`, [ <string> `filename`, <boolean> `incorporateMap` ] )\n\nThis function takes a string containing the JavaScript source code and returns\nthe transformed code with instrumentation added.\n\nPresently, the code is instrumented by replacing all applicable expressions with\n`SequenceExpressions` (you'll probably know these as lists of expressions\ndelimited by way of the *comma operator*.) These make a function call with a\nunique ID to the individual expression (incorporating a hash of the filename and\nan expression index.)\n\nThe filename is required if you want to instrument more than one file. Otherwise\nyou could end up with ID conflicts. (This won't ever be a problem if you let\nSteamShovel instrument for you.)\n\nThe third boolean parameter enables you to turn off the '*map*', basically a\nnon-human-readable object definition for the expression instrumentation in the\ncode. It is advisable that you leave this alone, as the code won't run without\nit, but switching it off can be useful for testing the output of the instrument\nfunction.","versions":{"0.0.2":{"name":"steamshovel","version":"0.0.2","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"./lib/cli.js lib lib-cov && ./node_modules/.bin/mocha -R $(pwd)/lib/reporter.js && rm -rf lib-cov"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.2","dist":{"shasum":"cea2e60a29f9ecf4762c617dfcbcede550034c54","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.2.tgz","integrity":"sha512-z3bTduWGfXB3bb/y6+6+qsrZPbote6yGNcWB/pXT/zOWnX/AWu3eBvpbHQGlpm9afUwbbUV6aFx1iBgLBx+O7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcRvjVS+qgBhKlj3LhK357Iov2XUkxUg+rf/NMvuBakwIgFXE2CvxDKF+5vUanHvgk4Letev+uGLa+YyfercJ3DtE="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.3":{"name":"steamshovel","version":"0.0.3","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"./lib/cli.js lib lib-cov && ./node_modules/.bin/mocha -R $(pwd)/lib/reporter.js && rm -rf lib-cov"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.3","dist":{"shasum":"94cdd19e9de44202e69652ff3f9a14fb0c629a38","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.3.tgz","integrity":"sha512-gYunpHKBIofvCmDDFvIg1SQmUYkyaj1CRgw3AuIqcDGJAqitlHH0UCvSdE886xNvMhjSZncCie9Kh1NaDN6uuQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdrwDRRX+wPN79DsvCmitu+ALbb8yUhHnckaE1UkN/eAiEAu8cpZtq+f2d3dlR/8M7qLGSXzESNCJHgQpBG4UzcXnk="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.5":{"name":"steamshovel","version":"0.0.5","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"./lib/cli.js lib lib-cov && ./node_modules/.bin/mocha -R $(pwd)/lib/reporter.js && rm -rf lib-cov"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.5","dist":{"shasum":"8f662d32ff69767524b210e67c02ca4f0742e2c3","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.5.tgz","integrity":"sha512-dsWGH0+OeWANoeO7PnmxL3z64ZL097AYNk1M2EQSptGqU28Lm7pidd6FZXDpIP7jMz+HyVv1JloenlRFSWJplQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICcbxVYFiE9AfjhaTpmjfo+pTr7DRHQmPJD03uPRyBVuAiAjFvbdF/t7uiy4yZrVwCNhBz/hjqhYoAIbOROftxSgjg=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.6":{"name":"steamshovel","version":"0.0.6","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"./lib/cli.js lib lib-cov && ./node_modules/.bin/mocha -R $(pwd)/lib/reporter.js && rm -rf lib-cov"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.6","dist":{"shasum":"488b5e20016105157ba8bec4890067db929b9500","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.6.tgz","integrity":"sha512-gWtDJrUhtDsfyDLZE/qXMRBtNctRfYbBXFgkt8A7MyV7ynZ4J4GTDNa9lmJvPvSQsKkBP/cMKWVjG0FkYyPK8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFmR5x/SObKfjLPQ4timl/Nbaek7SlTeUz4Sk6ZgSxFWAiEArtCoQWoxjg6lWwAPULS/2U14VyPbiRO10uaD8rSkjWM="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.7":{"name":"steamshovel","version":"0.0.7","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{"chai":"~1.9.1"},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"make coverage"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.7","dist":{"shasum":"08b226130b1c85846b01f925ccc0c3229db88efa","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.7.tgz","integrity":"sha512-yO6wJqXe+YmeEem6lxqo1B5FrVZQ5NW554SokVvzLE/SeYRU+2pxKfL12909DGcrgTub73tC84C3AmJ+h/fESA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFnmy+OUWQJmTDH302P4DwzQILhw6reJPDjZHaGVrMuWAiBwsbWb4iqZZlLoQT/HZ+Kqqg+EunhmB6U96wRdlOj9Hg=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.8":{"name":"steamshovel","version":"0.0.8","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{"chai":"~1.9.1"},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"make coverage"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.8","dist":{"shasum":"b6460d4e1ac5e21d1f167347cd7df1361ee77d76","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.8.tgz","integrity":"sha512-fm3VTTNgUFk4oVUHgseOTgp6V9XiPU3eFU1XlXA6aEGrYgvWSx/mPRloRwvu4tjnFsJFqArJ+IUHDiIQFoDz4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFgBNYiZkjIj8zp3WEMjbb0zuI6/FXPj3eRiiBAfCD26AiA8cjr2WIWqtcVEktVgKx9RBsYmxDkVZV+O6ITd0htO7g=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.9":{"name":"steamshovel","version":"0.0.9","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{"chai":"~1.9.1"},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"make coverage"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.9","dist":{"shasum":"0974a2b4c18a6998eb327afa3dc8987028106e00","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.9.tgz","integrity":"sha512-Ag2mWNRFcGvSizyZq1Lz8EeTp94IhKnnv53oApqZqeGxq7xHEPUkZ84HKl3gHHmeQsqVwt2hqF0xnpxs0WWCKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHY/BkBI1uGGj7RZ+UgswaPWgfHMVQnXXPkxMgSV0tuWAiABfT6ezMVlvjhWr+ZEWg521Dn0I3WxMLRMAyLIh38T+g=="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.0.10":{"name":"steamshovel","version":"0.0.10","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{"chai":"~1.9.1"},"scripts":{"test":"./node_modules/.bin/mocha -R spec test","coverage":"make coverage"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"_id":"steamshovel@0.0.10","dist":{"shasum":"54e22f8c2235b1d7d294d5bca8d6641acc1b6ad8","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.0.10.tgz","integrity":"sha512-itsXaWnJM79SdCJ4Z4GASeBa0Uf5wQZMxqRvHBL0Ix8j5VLWsKoJuvzF7l6qjX3kbqLQ+plNc5E1HScxSnBj/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0DwGfvfSaSgTt1v/TzS9EF47CvQmyh5IziE77WOkivAIgXN5S1m3W8baBKihu+/+AWN9bWpiBOTpFByn1gTvH2iI="}]},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.1.0-a1":{"name":"steamshovel","version":"0.1.0-a1","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{"chai":"~1.9.1","jshint":"^2.5.1"},"scripts":{"test":"mocha -R spec test","coverage":"make coverage"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"homepage":"https://github.com/cgiffard/SteamShovel","_id":"steamshovel@0.1.0-a1","dist":{"shasum":"e345db5a689eebfd1794aeb4c2f2b525e46f4942","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.1.0-a1.tgz","integrity":"sha512-5G1uHP8fzIkWu+0HGnzb8sTxuDggnohyzq7ONKLrekoJAfxsQRlkQkvGicpNAylY5m+/tWy3wQRp0Lnkzo/FKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlAES5gUVxySUbGf7tEVY+OD4mH3xXRSku2vxwSpqzwAiEArm1Nh+D+AqLLVvLM4m/X9DEPhAmhlmU8A5MsbSSFI04="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]},"0.1.0-a3":{"name":"steamshovel","version":"0.1.0-a3","description":"Code Coverage Done Right!","main":"lib/index.js","dependencies":{"escodegen":"~1.3.0","esprima":"~1.0.4","estraverse":"~1.5.0","mocha":"~1.18.0","mkdirp":"~0.3.5","columnify":"~0.1.2","jade":"~1.3.0"},"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"devDependencies":{"chai":"~1.9.1","jshint":"^2.5.1"},"scripts":{"test":"mocha -R spec test","coverage":"make coverage"},"bin":{"shovel":"lib/cli.js"},"keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"homepage":"https://github.com/cgiffard/SteamShovel","_id":"steamshovel@0.1.0-a3","dist":{"shasum":"0730bd31098403f125dfe067e1c85d87815965a5","tarball":"https://registry.npmjs.org/steamshovel/-/steamshovel-0.1.0-a3.tgz","integrity":"sha512-KkST7DXy/tew3ydIAhwGA+bEwIXWwlxuyH0MbmUrtz2jg8brpjVj+XTzW7zzRFmei0FFiKPnhW3KjGjcG9x9pg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeROZqz2kODw66rUzvSOpAUZyb1X8zzUimaGYrDHaY8gIhAJHU1whinmyCfHbi3DnFT6zgsvjBpHfs3Km1BijI9sYO"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"},"maintainers":[{"name":"cgiffard","email":"christopher.giffard@cgiffard.com"}]}},"dist-tags":{"latest":"0.1.0-a3"},"readmeFilename":"README.md","keywords":["coverage","mocha","test","framework","steam","shovel","instrument","source","code"],"repository":{"type":"git","url":"https://github.com/cgiffard/SteamShovel.git"},"author":{"name":"Christopher Giffard","email":"christopher.giffard@cgiffard.com"},"bugs":{"url":"https://github.com/cgiffard/SteamShovel/issues"},"license":"BSD-3-Clause","homepage":"https://github.com/cgiffard/SteamShovel"}